Commit 67d4c076 authored by Richard Berger's avatar Richard Berger
Browse files

Do not escape underscore inside preformat blocks

parent 877a5049
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -73,10 +73,13 @@ class RSTMarkup(Markup):
    def unescape_rst_chars(self, text):
        text = text.replace('\\*', '*')
        text = text.replace('\\^', '^')
        text = text.replace('\\_', '_')
        text = self.unescape_underscore(text)
        text = text.replace('\\|', '|')
        return text

    def unescape_underscore(self, text):
        return text.replace('\\_', '_')

    def inline_math(self, text):
        start_pos = text.find("\\(")
        end_pos = text.find("\\)")
@@ -136,6 +139,7 @@ class RSTFormatting(Formatting):
        return content.strip()

    def preformat(self, content):
        content = self.markup.unescape_underscore(content)
        if self.indent_level > 0:
            return self.list_indent("\n.. parsed-literal::\n\n" + self.indent(content.rstrip()), self.indent_level)
        return "\n.. parsed-literal::\n\n" + self.indent(content.rstrip())
+7 −0
Original line number Diff line number Diff line
@@ -169,6 +169,13 @@ class TestFormatting(unittest.TestCase):
                         "       Hello\n"
                         "       World\n\n", s)

    def test_preformat_formatting_with_underscore(self):
        s = self.txt2rst.convert("if MPI.COMM_WORLD.rank == 0:\n"
                                 "    print(\"Potential energy: \", L.eval(\"pe\")) :pre\n")
        self.assertEqual("\n.. parsed-literal::\n\n"
                         "   if MPI.COMM_WORLD.rank == 0:\n"
                         "       print(\"Potential energy: \", L.eval(\"pe\"))\n\n", s)

    def test_header_formatting(self):
        s = self.txt2rst.convert("Level 1 :h1\n"
                                 "Level 2 :h2\n"