Esempio n. 1
0
def _link_map(linkmap, file_name, para, max_level=None):
    '''add all the links target in para to linkmap'''
    for p in md_iter.sequence_iter(para, include_root=False, max_level=max_level):
        if p.head.name:
            linkmap[p.head.name] = file_name
        for lnk in p.link_target:
            linkmap[lnk] = file_name
Esempio n. 2
0
def _write_para(file_name, para, linkmap, max_level=None):
    '''write the paragraph `para` to `file_name`

    - `linkmap` contains the maps from linkname to file_name this is used to
    replace the orginal link with new external link.
    - `max_level` indicates to which level of paragraph it will write. the level
    `max_level` is inclusive.
    '''
    with open(file_name, 'w') as f:
        for p in md_iter.sequence_iter(para, include_root=False, max_level=max_level):
            for line in p.content:
                f.write(_relink(line, file_name, linkmap))
Esempio n. 3
0
def print_paragraph(para):
    '''
    print the paragraph sequentially
    '''
    total = 0
    for p in md_iter.sequence_iter(para):
        total += 1
        print('{}title:{}, name: {}, lines {}, targets {} children {}'
              .format(' '*4*p.head.level,
                      p.head.title[:min(
                          len(p.head.title), 40)],
                      p.head.name,
                      len(p.content),
                      len(p.link_target),
                      len(p.children)))
    return total
Esempio n. 4
0
def print_rules(para):
    '''print all rules
    rules are headline with sub-paragraph `reason`
    '''
    total = 0
    for p in md_iter.sequence_iter(para):
        if para.children and para.children[0].head.title.lower() == 'reason':
            total += 1
            print('{}title:{}, name: {}, lines {}, children {}'
                  .format(' '*4*para.head.level,
                          para.head.title[:min(
                              len(para.head.title), 40)],
                          para.head.name,
                          len(para.content),
                          len(para.children)))
    return total
Esempio n. 5
0
    def test_parse(self):
        (0, 45, 3, 9, 27, 29, 10)
        expects = (
            (Headline(level=0, name='root', title='main'), 0),
            (Headline(level=1, name='main', title='C++ Core Guidelines'), 45),
            (Headline(level=3,
                      name='SS-readers',
                      title='In.target: Target readership'), 3),
            (Headline(level=2, name='SS-aims', title='In.aims: Aims'), 9),
            (Headline(level=3, name='R0', title="In.0: Don't panic!"), 27),
            (Headline(level=2,
                      name='SS-struct',
                      title='In.struct: The structure of this document'), 29),
            (Headline(level=1, name='S-introduction',
                      title='In: Introduction'), 10),
        )

        curdir = os.path.dirname(__file__)
        para = md_parser.parse(os.path.join(curdir, 'test_md_parser.md'))
        self.assertEqual(
            expects,
            tuple(
                (s.head, len(s.content)) for s in md_iter.sequence_iter(para)))
        self.assertEqual(len(para.children[0].content), 45)