##// END OF EJS Templates
Refine regexp checks for end of blocks logic.
Fernando Perez -
Show More
@@ -156,7 +156,8 b' def last_blank(src):'
156 return src == '\n' or bool(last_blank_re.match(src))
156 return src == '\n' or bool(last_blank_re.match(src))
157
157
158
158
159 last_two_blanks_re = re.compile(r'^.*\n\s*\n\s*$', re.MULTILINE)
159 last_two_blanks_re = re.compile(r'^\n\s*\n\s*$', re.MULTILINE)
160 last_two_blanks_re2 = re.compile(r'^.+\n\s*\n\s+$', re.MULTILINE)
160
161
161 def last_two_blanks(src):
162 def last_two_blanks(src):
162 """Determine if the input source ends in two blanks.
163 """Determine if the input source ends in two blanks.
@@ -168,7 +169,8 b' def last_two_blanks(src):'
168 src : string
169 src : string
169 A single or multiline string.
170 A single or multiline string.
170 """
171 """
171 return bool(last_two_blanks_re.match(src))
172 return (bool(last_two_blanks_re.match(src)) or
173 bool(last_two_blanks_re2.match(src)) )
172
174
173
175
174 def remove_comments(src):
176 def remove_comments(src):
@@ -616,17 +616,20 b' def test_last_two_blanks():'
616 nt.assert_false(isp.last_two_blanks('abc'))
616 nt.assert_false(isp.last_two_blanks('abc'))
617 nt.assert_false(isp.last_two_blanks('abc\n'))
617 nt.assert_false(isp.last_two_blanks('abc\n'))
618 nt.assert_false(isp.last_two_blanks('abc\n\na'))
618 nt.assert_false(isp.last_two_blanks('abc\n\na'))
619 nt.assert_false(isp.last_two_blanks('abc\n \n'))
620 nt.assert_false(isp.last_two_blanks('abc\n\n'))
619
621
620 nt.assert_true(isp.last_two_blanks('\n\n'))
622 nt.assert_true(isp.last_two_blanks('\n\n'))
621 nt.assert_true(isp.last_two_blanks('\n\n '))
623 nt.assert_true(isp.last_two_blanks('\n\n '))
622 nt.assert_true(isp.last_two_blanks('\n \n'))
624 nt.assert_true(isp.last_two_blanks('\n \n'))
623 nt.assert_true(isp.last_two_blanks('abc\n \n'))
624 nt.assert_true(isp.last_two_blanks('abc\n\n '))
625 nt.assert_true(isp.last_two_blanks('abc\n\n '))
625 nt.assert_true(isp.last_two_blanks('abc\n\n'))
626 nt.assert_true(isp.last_two_blanks('abc\n\n\n'))
627 nt.assert_true(isp.last_two_blanks('abc\n\n \n'))
628 nt.assert_true(isp.last_two_blanks('abc\n\n \n '))
629 nt.assert_true(isp.last_two_blanks('abc\n\n \n \n'))
626
630
627
631
628 def test_cell_magics():
632 def test_cell_magics_line_mode():
629 from IPython.core import magic
630
633
631 cell = """\
634 cell = """\
632 %%cellm line
635 %%cellm line
@@ -649,6 +652,32 b' body'
649 nt.assert_false(sp.push_accepts_more()) #3
652 nt.assert_false(sp.push_accepts_more()) #3
650
653
651
654
655 def test_cell_magics_cell_mode():
656
657 cell = """\
658 %%cellm line
659 body
660 """
661 sp = isp.IPythonInputSplitter(input_mode='cell')
662 sp.push(cell)
663 nt.assert_equal(sp.cell_magic_parts, ['body\n'])
664 out = sp.source
665 ref = u"get_ipython()._cell_magic(u'cellm', u'line')\n"
666 nt.assert_equal(out, ref)
667
668 sp.reset()
669
670 src = '%%cellm line2\n'
671 sp.push(src)
672 nt.assert_true(sp.push_accepts_more()) #1
673 src += '\n'
674 sp.push(src)
675 nt.assert_true(sp.push_accepts_more()) #2
676 src += '\n'
677 sp.push(src)
678 nt.assert_false(sp.push_accepts_more()) #3
679
680
652 class IPythonInputTestCase(InputSplitterTestCase):
681 class IPythonInputTestCase(InputSplitterTestCase):
653 """By just creating a new class whose .isp is a different instance, we
682 """By just creating a new class whose .isp is a different instance, we
654 re-run the same test battery on the new input splitter.
683 re-run the same test battery on the new input splitter.
General Comments 0
You need to be logged in to leave comments. Login now