Enforce l,ule or l,ole command order for RST
(cherry picked from commit 79e867c213)
This commit is contained in:
committed by
Axel Kohlmeyer
parent
9e8256aeb0
commit
4c783ea3b7
@ -518,6 +518,9 @@ class TxtParser(object):
|
|||||||
def last_word(self, text):
|
def last_word(self, text):
|
||||||
return text.split()[-1]
|
return text.split()[-1]
|
||||||
|
|
||||||
|
def order_commands(self, commands):
|
||||||
|
return list(reversed(commands))
|
||||||
|
|
||||||
def do_formatting(self, paragraph):
|
def do_formatting(self, paragraph):
|
||||||
last_word = self.last_word(paragraph)
|
last_word = self.last_word(paragraph)
|
||||||
format_str = paragraph[paragraph.rfind(last_word):]
|
format_str = paragraph[paragraph.rfind(last_word):]
|
||||||
@ -529,7 +532,7 @@ class TxtParser(object):
|
|||||||
|
|
||||||
commands = [x[0] for x in command_pattern.findall(commands)]
|
commands = [x[0] for x in command_pattern.findall(commands)]
|
||||||
|
|
||||||
for command in reversed(commands):
|
for command in self.order_commands(commands):
|
||||||
paragraph = self.format.convert(command, paragraph, commands)
|
paragraph = self.format.convert(command, paragraph, commands)
|
||||||
|
|
||||||
return paragraph + '\n'
|
return paragraph + '\n'
|
||||||
|
|||||||
@ -347,6 +347,14 @@ class Txt2Rst(TxtParser):
|
|||||||
def is_raw_textblock_end(self, line):
|
def is_raw_textblock_end(self, line):
|
||||||
return line.startswith('END_RST -->')
|
return line.startswith('END_RST -->')
|
||||||
|
|
||||||
|
def order_commands(self, commands):
|
||||||
|
if 'ule' in commands and 'l' in commands and commands.index('ule') > commands.index('l'):
|
||||||
|
return commands
|
||||||
|
elif 'ole' in commands and 'l' in commands and commands.index('ole') > commands.index('l'):
|
||||||
|
return commands
|
||||||
|
return super().order_commands(commands)
|
||||||
|
|
||||||
|
|
||||||
class Txt2RstConverter(TxtConverter):
|
class Txt2RstConverter(TxtConverter):
|
||||||
def get_argument_parser(self):
|
def get_argument_parser(self):
|
||||||
parser = argparse.ArgumentParser(description='converts a text file with simple formatting & markup into '
|
parser = argparse.ArgumentParser(description='converts a text file with simple formatting & markup into '
|
||||||
|
|||||||
@ -236,6 +236,14 @@ class TestListFormatting(unittest.TestCase):
|
|||||||
"* two\n"
|
"* two\n"
|
||||||
"* three\n\n", s)
|
"* three\n\n", s)
|
||||||
|
|
||||||
|
def test_elementwise_unordered_list_reverse(self):
|
||||||
|
s = self.txt2rst.convert("one :ulb,l\n"
|
||||||
|
"two :l\n"
|
||||||
|
"three :l,ule\n")
|
||||||
|
self.assertEqual("* one\n"
|
||||||
|
"* two\n"
|
||||||
|
"* three\n\n", s)
|
||||||
|
|
||||||
def test_multi_line_unordered_list_elements(self):
|
def test_multi_line_unordered_list_elements(self):
|
||||||
s = self.txt2rst.convert("one :ulb,l\n"
|
s = self.txt2rst.convert("one :ulb,l\n"
|
||||||
"two\n"
|
"two\n"
|
||||||
|
|||||||
Reference in New Issue
Block a user