def test_overlapping_underscore_and_italic(self): # It's unclear what result to expect in this case. # This is one way of interpreting it self.assertEquals( parse_emphasis('_*he_llo*'), (italic + underline)('he') + italic('llo') )
def test_complicated(self): # As reported by Stu self.assertEquals( parse_emphasis( 'You can _underline_ words, make them **bold** or *italic* ' 'or even ***bold italic.***'), (plain('You can ') + underline('underline') + plain(' words, make them ') + bold('bold') + plain(' or ') + italic('italic') + plain(' or even ') + (bold + italic)('bold italic.')))
def get_rich_attribute(self, name, default=[]): """Get an attribute from the title page parsed into a RichString. Returns a list of RichString objects. E.g. `screenplay.get_rich_attribute('Title')` """ if name in self.title_page: return [parse_emphasis(line) for line in self.title_page[name]] else: return default
def get_rich_attribute(self, name, default=[]): """Get an attribute from the title page parsed into a RichString. Returns a list of RichString objects. E.g. `screenplay.get_rich_attribute('Title')` """ if name in self.title_page: return [parse_emphasis(line) for line in self.title_page[name]] else: return default
def test_complicated(self): # As reported by Stu self.assertEquals( parse_emphasis( 'You can _underline_ words, make them **bold** or *italic* ' 'or even ***bold italic.***' ), ( plain('You can ') + underline('underline') + plain(' words, make them ') + bold('bold') + plain(' or ') + italic('italic') + plain(' or even ') + (bold + italic)('bold italic.') ) )
def test_parse_multiple_bold(self): self.assertEquals( parse_emphasis('x**Hello** **there**'), plain('x') + bold('Hello') + plain(' ') + bold('there') )
def test_bold_inside_underline(self): self.assertEquals( parse_emphasis('_**hello**_'), (bold + underline)('hello') )
def _create_dialog(self, character): return Dialog( parse_emphasis(character.strip()), _sequence_to_rich(line.strip() for line in self.lines[1:]) )
def test_additional_star(self): self.assertEquals( parse_emphasis('*foo* bar* baz'), italic('foo') + plain(' bar* baz') )
def test_underline(self): self.assertEquals( parse_emphasis('_hello_'), underline('hello') )
def test_italic_inside_bold(self): self.assertEquals( parse_emphasis('**Swedish *style* rules**'), bold('Swedish ') + (bold + italic)('style') + bold(' rules') )
def test_italic_and_bold(self): self.assertEquals( parse_emphasis('***really strong***'), (bold + italic)('really strong') )
def test_parse_without_emphasis(self): self.assertEquals( plain('Hello'), parse_emphasis('Hello'), 'Expected parse_emphasis to return a plain string')
def _sequence_to_rich(lines): """Converts a sequence of strings into a list of RichString.""" return [parse_emphasis(line) for line in lines]
def test_simplified_complicated(self): self.assertEquals( parse_emphasis('*italic* or even ***bold italic.***'), italic('italic') + plain(' or even ') + (bold + italic)('bold italic.') )
def test_two_bold_should_not_create_one_long_bold_string(self): self.assertEquals( parse_emphasis('**first** **second**'), bold('first') + plain(' ') + bold('second') )
def test_parse_pre_and_postfix_and_bold(self): self.assertEquals( parse_emphasis('pre**Hello**post'), plain('pre') + bold('Hello') + plain('post') )
def _string_to_rich(line): """Converts a single string into a RichString. """ return parse_emphasis(line)
def _string_to_rich(line): """Converts a single string into a RichString. """ return parse_emphasis(line)
def _sequence_to_rich(lines): """Converts a sequence of strings into a list of RichString.""" return [parse_emphasis(line) for line in lines]
def _create_dialog(self, character): return Dialog( parse_emphasis(character.strip()), _sequence_to_rich(line.strip() for line in self.lines[1:]))
def test_two_italic_should_not_create_one_long_italic_string(self): self.assertEquals( parse_emphasis('*first* *second*'), italic('first') + plain(' ') + italic('second') )
def test_parse_adjacent_bold(self): self.assertEquals( parse_emphasis('**123**456**'), bold('123') + plain('456**') )
def test_escaping_star_creates_a_literal_star(self): self.assertEquals( parse_emphasis(r'\*hello*'), plain('*hello*') )
def test_italic(self): self.assertEquals( parse_emphasis('*Italian style*'), italic('Italian style') )
def test_parse_bold(self): self.assertEquals( parse_emphasis('**Hello**'), bold('Hello') )
def test_bold_inside_italic(self): self.assertEquals( parse_emphasis('*Swedish **style** rules*'), italic('Swedish ') + (bold + italic)('style') + italic(' rules') )