def test_split_comma_footnotes(original, expected): """The XML will sometimes merge multiple references to footnotes into a single tag. Verify that they get split""" with XMLBuilder("ROOT") as ctx: ctx.child_from_string("<P>{0}</P>".format(original)) with XMLBuilder("ROOT") as ctx2: ctx2.child_from_string("<P>{0}</P>".format(expected)) preprocessors.Footnotes().split_comma_footnotes(ctx.xml) assert ctx.xml_str == ctx2.xml_str
def test_table_with_caption_with_footnote_as_caption(self): """ Caption[^1](No work of any kind shall be conducted) Caption[^1] |R1C1 | |R2C1 |R2C2 | This is testing the implementation of the TTITLE as a caption element. """ with XMLBuilder("GPOTABLE", COLS=6) as ctx: ctx.child_from_string("<TTITLE>Caption<SU>1</SU></TTITLE>") with ctx.BOXHD(): ctx.CHED(u"R1C1", H=1) ctx.CHED(u"R2C1", H=2) ctx.CHED(u"R2C2", H=2) ctx.child_from_string( "<TNOTE><SU>1</SU> No work of any kind shall be conducted" "</TNOTE>") preprocessor = preprocessors.Footnotes() preprocessor.transform(ctx.xml) markdown = formatting.table_xml_to_plaintext(ctx.xml) self.assertTrue("R1C1" in markdown) self.assertTrue("R2C2" in markdown) node = Node(markdown, source_xml=ctx.xml) result = formatting.Formatting(None).process(node) self.assertEqual(2, len(result)) table, footnote = result self.assertEqual(markdown, table['text']) self.assertEqual([0], table['locations']) data = table['table_data'] self.assertTrue("header" in data) # Verify header matches: def mkhd(t, c, r): return {'text': t, 'colspan': c, 'rowspan': r} self.assertEqual( [[mkhd("R1C1", 2, 1)], [mkhd("R2C1", 1, 1), mkhd("R2C2", 1, 1)]], data["header"]) self.assertTrue("caption" in data) self.assertEqual("Caption[^1](No work of any kind shall be conducted)", data["caption"]) self.assertEqual(u'[^1](No work of any kind shall be conducted)', footnote['text']) self.assertEqual(u'1', footnote['footnote_data']['ref']) self.assertEqual(u'No work of any kind shall be conducted', footnote['footnote_data']['note']) self.assertEqual([0], footnote['locations'])
def test_add_ref_attributes_missing(): """SUs in different sections aren't related""" with XMLBuilder("ROOT") as ctx: with ctx.SECTION(): ctx.SU("1") with ctx.SECTION(): ctx.SU("1") with ctx.FTNT(): ctx.child_from_string('<P><SU>1</SU> note for one</P>') with XMLBuilder("ROOT") as ctx2: with ctx2.SECTION(): ctx2.SU("1") with ctx2.SECTION(): ctx2.SU("1", footnote="note for one") with ctx2.FTNT(): ctx2.child_from_string('<P><SU>1</SU> note for one</P>') preprocessors.Footnotes().add_ref_attributes(ctx.xml) assert ctx.xml_str == ctx2.xml_str
def test_add_ref_attributes(): """The XML elements which reference footnotes should be modified to contain the contents of those footnotes""" with XMLBuilder("ROOT") as ctx: ctx.SU("1") ctx.SU("2") with ctx.FTNT(): ctx.child_from_string('<P><SU>1</SU> note for one</P>') with ctx.TNOTE(): ctx.child_from_string('<P><SU>2</SU> note for two</P>') with XMLBuilder("ROOT") as ctx2: ctx2.SU("1", footnote='note for one') ctx2.SU("2", footnote='note for two') with ctx2.FTNT(): ctx2.child_from_string('<P><SU>1</SU> note for one</P>') with ctx2.TNOTE(): ctx2.child_from_string('<P><SU>2</SU> note for two</P>') preprocessors.Footnotes().add_ref_attributes(ctx.xml) assert ctx.xml_str == ctx2.xml_str
def setUp(self): super(FootnotesTests, self).setUp() self.fn = preprocessors.Footnotes()