コード例 #1
0
 def test_footnotes(self):
     for kind in list(Footnote.Kind):
         word = test_utils.word()
         footnote = Footnote(kind, [Text(word)], AutomaticFootnoteLabel())
         paragraph = Paragraph([footnote])
         rendered = self.render_elements(paragraph)
         self.assertIn(kind.name, rendered)
         self.assertIn(word, rendered)
コード例 #2
0
 def test_heading(self):
     word = test_utils.word()
     heading = test_utils.word()
     elements = [Paragraph([Text(word)])]
     document = Document(elements, heading=heading)
     rendered = self.render(document)
     self.assertIn(word, rendered)
     self.assertIn(heading, rendered)
コード例 #3
0
ファイル: parse.py プロジェクト: ethantkoenig/tx-usfm2html
 def p_chapter_label_after(self, t):
     """higher_element : CHAPTER CHAPTER_LABEL lower_elements"""
     chapter = ChapterNumber(ChapterNumber.Kind.standard,
                             [Text(t[2].value)])
     if len(t[3]) == 0:
         t[0] = [chapter]
     else:
         t[0] = [chapter, Paragraph(t[3])]
コード例 #4
0
ファイル: parse.py プロジェクト: ethantkoenig/tx-usfm2html
 def p_chapter_label_before(self, t):
     """higher_element : CHAPTER_LABEL CHAPTER lower_elements"""
     self.relative_chapter_label = t[1].value
     text = self.relative_chapter_label + " " + t[2].value
     chapter = ChapterNumber(ChapterNumber.Kind.standard, [Text(text)])
     if len(t[3]) == 0:
         t[0] = [chapter]
     else:
         t[0] = [chapter, Paragraph(t[3])]
コード例 #5
0
ファイル: parse.py プロジェクト: ethantkoenig/tx-usfm2html
 def p_chapter(self, t):
     """higher_element : CHAPTER lower_elements"""
     if self.relative_chapter_label is not None:
         text = self.relative_chapter_label + " " + t[1].value
     else:
         text = t[1].value
     chapter = ChapterNumber(ChapterNumber.Kind.standard, [Text(text)])
     if len(t[2]) == 0:
         t[0] = [chapter]
     else:
         t[0] = [chapter, Paragraph(t[2])]
コード例 #6
0
 def test_paragraph(self):
     bools = (False, True)
     for embedded, poetic, introductory in itertools.product(
             bools, bools, bools):
         word = test_utils.word()
         text = Text(word)
         paragraph = Paragraph([text],
                               embedded=embedded,
                               poetic=poetic,
                               introductory=introductory)
         rendered = self.render_elements(paragraph)
         self.assertIn(word, rendered)
         if embedded:
             self.assertIn("embedded", rendered)  # should appear as a class
         else:
             self.assertNotIn("embedded", rendered)
         if poetic:
             self.assertIn("poetic", rendered)
         else:
             self.assertNotIn("poetic", rendered)
         if introductory:
             self.assertIn("introductory", rendered)
         else:
             self.assertNotIn("introductory", rendered)
コード例 #7
0
Most of this info is store in dictionaries whose keys are flag names (used as token
names in lexing), and whose values are (flag, constructor) pairs, where flag is the
string literal that is used inside USFM files, and constructor is a function for
constructing the corresponding Element.

In general, a constructor of None means that a particular flag has special functionality,
and needs to be handled separately during parsing
"""

from elements.element_impls import Paragraph, FormattedText, ChapterNumber, OtherText, Text, Heading, Whitespace, \
    Footnote
from elements.paragraph_utils import Centered, LeftAligned, RightAligned

# TOKEN_NAME: (flag, callable[children -> Paragraph])
paragraphs = {
    "CENTERED_PARAGRAPH": ("pc", Paragraph.Builder(layout=Centered())),
    "PARAGRAPH": ("p", Paragraph.Builder()),
    "FLUSH_PARAGRAPH":
    ("m",
     Paragraph.Builder(layout=LeftAligned(LeftAligned.FirstLineIndent.none))),
    "EMBEDDED_OPENING":
    ("pmo",
     Paragraph.Builder(layout=LeftAligned(LeftAligned.FirstLineIndent.none),
                       embedded=True)),
    "EMBEDDED_PARAGRAPH": ("pm", Paragraph.Builder(embedded=True)),
    "EMBEDDED_CLOSING":
    ("pmc",
     Paragraph.Builder(layout=LeftAligned(LeftAligned.FirstLineIndent.none),
                       embedded=True)),
    "EMBEDDED_REFRAIN": ("pmr",
                         Paragraph.Builder(embedded=True,
コード例 #8
0
ファイル: parse.py プロジェクト: ethantkoenig/tx-usfm2html
 def higher_rule_inner(self, t):
     lower_rule(self, t)
     t[0] = [t[0]]
     if len(t[lower_elements_index]) > 0:
         t[0].append(Paragraph(t[lower_elements_index]))