Exemplo n.º 1
0
class TestMarkdownParserItalic(unittest.TestCase):

    def setUp(self):
        self.parser = MarkdownParser(use_file=False)

    def test_italic_strips_star_characters(self):
        parse_string = '*Italic*'

        markdown_list = self.parser.parse(parse_string)

        self.assertEqual(markdown_list[0].to_html(), '<em>Italic</em>')

    def test_italic_with_single_bold_text_inside_reduces(self):
        parse_string = '*Italic with **Bold** text*'

        markdown_list = self.parser.parse(parse_string)

        self.assertEqual(markdown_list[0].to_html(), '<em>Italic with <strong>Bold</strong> text</em>')

    def test_italic_with_multiple_bold_text_inside_reduces(self):
        parse_string = '*Italic with **Bold** and another **Bold** text*'

        markdown_list = self.parser.parse(parse_string)

        self.assertEqual(markdown_list[0].to_html(), '<em>Italic with <strong>Bold</strong> and another <strong>Bold</strong> text</em>')

    def test_italic_with_bold_at_start_and_end(self):
        parse_string = '***Bold** inside of italic and at **End***'

        markdown_list = self.parser.parse(parse_string)

        self.assertEqual(markdown_list[0].to_html(), '<em><strong>Bold</strong> inside of italic and at <strong>End</strong></em>')
Exemplo n.º 2
0
class TestMarkdownParserHeading(unittest.TestCase):
    def setUp(self):
        self.parser = MarkdownParser(use_file=False)

    def test_single_heading_returns_h1(self):
        parse_string = '''
# hello
'''
        markdown_list = self.parser.parse(parse_string)

        self.assertEqual(markdown_list[0].to_html(), '<h1>hello</h1>')

    def test_double_heading_returns_h2(self):
        parse_string = '''
## hello
'''
        markdown_list = self.parser.parse(parse_string)

        self.assertEqual(markdown_list[0].to_html(), '<h2>hello</h2>')
Exemplo n.º 3
0
class TestMarkdownParserUnorderedList(unittest.TestCase):
    def setUp(self):
        self.parser = MarkdownParser(use_file=False)

    def test_unorderedlist_with_two_bullet_points(self):
        parse_string = '''
- first
- second
'''
        markdown_list = self.parser.parse(parse_string)

        self.assertEqual(markdown_list[0].to_html(),
                         '<ul><li>first</li><li>second</li></ul>')
class TestMarkdownParserBold(unittest.TestCase):

    def setUp(self):
        self.parser = MarkdownParser(use_file=False)

    def test_bold_strips_star_characters(self):
        parse_string = '**Bold**'

        markdown_list = self.parser.parse(parse_string)

        self.assertEqual(markdown_list[0].to_html(), '<strong>Bold</strong>')

    def test_bold_strips_multiple_star_characters(self):
        parse_string = '****Bold****'

        markdown_list = self.parser.parse(parse_string)

        self.assertEqual(markdown_list[0].to_html(), '<strong>Bold</strong>')

    def test_single_strikethrough_within_bold(self):
        parse_string = '****Bold text with ~~strikethrough~~****'

        markdown_list = self.parser.parse(parse_string)

        self.assertEqual(markdown_list[0].to_html(), '<strong>Bold text with <del>strikethrough</del></strong>')

    def test_multiple_strikethrough_within_bold(self):
        parse_string = '****Bold text with ~~multiple~~ ~~strikethroughs~~****'

        markdown_list = self.parser.parse(parse_string)
        
        self.assertEqual(markdown_list[0].to_html(), '<strong>Bold text with <del>multiple</del> <del>strikethroughs</del></strong>')

    def test_italic_single_within_bold_at_end(self):
        parse_string = '****Bold text with *Italic*****'

        markdown_list = self.parser.parse(parse_string)
        
        self.assertEqual(markdown_list[0].to_html(), '<strong>Bold text with <em>Italic</em></strong>')

    def test_italic_multiple_within_bold_at_begin_and_end(self):
        parse_string = '*****Italic* Bold text with *Italic*****'

        markdown_list = self.parser.parse(parse_string)
        
        self.assertEqual(markdown_list[0].to_html(), '<strong><em>Italic</em> Bold text with <em>Italic</em></strong>')
Exemplo n.º 5
0
 def setUp(self):
     self.parser = MarkdownParser(use_file=False)
Exemplo n.º 6
0
class TestMarkdownParserBlockQuote(unittest.TestCase):
    def setUp(self):
        self.parser = MarkdownParser(use_file=False)

    def test_blockquote_does_not_capture_greater_than_with_non_whitespace_before(
            self):

        parse_string = '''
textbefore> greater than sign
> capture me
> second line to capture'''

        markdown_list = self.parser.parse(parse_string)

        self.assertEqual(markdown_list[0].to_html(),
                         'textbefore> greater than sign')
        self.assertEqual(
            markdown_list[1].to_html(),
            '<blockquote>capture me second line to capture </blockquote>')

    def test_blockquote_captures_lines_with_no_greater_than_sign_preceded_by_line_with_greater_than_sign(
            self):
        parse_string = '''
> first 
    one level
        block
            quote with spaces
        '''

        markdown_list = self.parser.parse(parse_string)

        self.assertEqual(
            markdown_list[0].to_html(),
            '<blockquote>first one level block quote with spaces </blockquote>'
        )

    def test_blockquote_captures_lines_with_no_spaces_or_greater_than_preceded_by_line_with_greater_than(
            self):
        parse_string = '''
>blockquote
with
no spaces at beginning
    of
    some lines
    '''
        markdown_list = self.parser.parse(parse_string)

        self.assertEqual(
            markdown_list[0].to_html(),
            '<blockquote>blockquote with no spaces at beginning of some lines </blockquote>'
        )

    def test_blockquote_captures_lines_with_three_spaces_at_beginning(self):
        parse_string = '''
   > three spaces
   > starting from here
   and also not beginning with greater than sign
        '''

        markdown_list = self.parser.parse(parse_string)

        self.assertEqual(
            markdown_list[0].to_html(),
            '<blockquote>three spaces starting from here and also not beginning with greater than sign </blockquote>'
        )

    def test_blockquote_single_and_two_level(self):
        parse_string = '''
>two level blockquote
>>very very basic
        '''

        markdown_list = self.parser.parse(parse_string)

        self.assertEqual(
            markdown_list[0].to_html(),
            '<blockquote>two level blockquote <blockquote>very very basic </blockquote></blockquote>'
        )

    def test_blockquote_splits_blockquotes_separated_by_line_with_no_bracket_single_and_double_mixed(
            self):
        parse_string = '''
> first level
>> second
>> no greater than on
next line
>> this should be a new block quote
>> with this in it
and also this
        '''

        markdown_list = self.parser.parse(parse_string)

        self.assertEqual(
            markdown_list[0].to_html(),
            '<blockquote>first level <blockquote>second no greater than on next line </blockquote><blockquote> this should be a new block quote with this in it and also this </blockquote></blockquote>'
        )

    def test_blockquote_does_not_split_blockquotes_on_one_level_blockquote_between_double_blockquotes(
            self):
        parse_string = '''
> 1
>> 2
>> 3
> 4
>> 5
>> 6
7
        '''

        markdown_list = self.parser.parse(parse_string)

        self.assertEqual(
            markdown_list[0].to_html(),
            '<blockquote>1 <blockquote>2 3 4 5 6 7 </blockquote></blockquote>')
Exemplo n.º 7
0
import os
from markdownparser import MarkdownParser
from models.codeblock import CodeBlock

markdown_parser = MarkdownParser()


def get_header():

    header_string = ''

    main_script_path = os.path.abspath(__file__)
    main_script_directory = os.path.split(main_script_path)[0]
    head_relative_file_path = 'html/head.html'

    header_file_absolute_path = os.path.join(main_script_directory,
                                             head_relative_file_path)

    with open(header_file_absolute_path, 'r') as header_file:
        header_string = header_file.read()

    return header_string


def get_scripts():

    script_string = ""

    main_script_path = os.path.abspath(__file__)
    main_script_directory = os.path.split(main_script_path)[0]
    scripts_relative_file_path = 'html/scripts.html'
Exemplo n.º 8
0
class TestMarkdownParserStrikethrough(unittest.TestCase):
    def setUp(self):
        self.parser = MarkdownParser(use_file=False)

    def test_italic_inside_strikethrough(self):
        parse_string = '~~*strikethrough and italics*~~'

        markdown_list = self.parser.parse(parse_string)

        self.assertEqual(markdown_list[0].to_html(),
                         '<del><em>strikethrough and italics</em></del>')

    def test_mixed_bold_italic_inside_strikethrough(self):
        parse_string = '~~***bold and italics***~~'

        markdown_list = self.parser.parse(parse_string)

        self.assertEqual(
            markdown_list[0].to_html(),
            '<del><em><strong>bold and italics</strong></em></del>')

    def test_strikethrough_multiple_tildas_returns_strikethrough_text(self):
        parse_string = '~~~~multiple strikes~~~~'

        markdown_list = self.parser.parse(parse_string)

        self.assertEqual(markdown_list[0].to_html(),
                         '<del>multiple strikes</del>')

    def test_strikethrough_multiple_tildas_and_tilda_in_middle(self):
        parse_string = '~~~~strike ~ through~~~~'

        markdown_list = self.parser.parse(parse_string)

        self.assertEqual(markdown_list[0].to_html(),
                         '<del>strike ~ through</del>')

    def test_strikethrough_with_single_bold_inside_reduces_to_strike_and_bold(
            self):
        parse_string = '~~**strike and bold**~~'

        markdown_list = self.parser.parse(parse_string)

        self.assertEqual(markdown_list[0].to_html(),
                         '<del><strong>strike and bold</strong></del>')

    def test_strikethrough_with_multiple_bold_inside_reduces_to_strike_and_bold(
            self):
        parse_string = '~~**strike** and **bold**~~'

        markdown_list = self.parser.parse(parse_string)

        self.assertEqual(
            markdown_list[0].to_html(),
            '<del><strong>strike</strong> and <strong>bold</strong></del>')

    def test_strikethrough_with_multiple_italic_reduces_strike_and_italic(
            self):
        parse_string = '~~*strike* and *italic*~~'

        markdown_list = self.parser.parse(parse_string)

        self.assertEqual(markdown_list[0].to_html(),
                         '<del><em>strike</em> and <em>italic</em></del>')

    def test_strikethrough_with_multiple_bold_and_italic_inside_reduces_bold_and_italic(
            self):
        parse_string = '~~*strike* and *italic* and **bold** and **another bold**~~'

        markdown_list = self.parser.parse(parse_string)

        self.assertEqual(
            markdown_list[0].to_html(),
            '<del><em>strike</em> and <em>italic</em> and <strong>bold</strong> and <strong>another bold</strong></del>'
        )