Exemplo n.º 1
0
    def __init__(self, name, generated, project_name, extension_name,
                 source_file=None,
                 ast=None,
                 output_path='',
                 raw_contents=None,
                 comment=None,
                 meta=None,
                 pre_sorted=False,
                 symbol_names=None):
        assert name

        if not generated:
            assert source_file is not None

        self.name = name
        basename = os.path.basename(name)
        name = os.path.splitext(basename)[0]
        ref = os.path.join(output_path,
                           re.sub(r'\W+', '-', os.path.splitext(basename)[0]))
        pagename = '%s.html' % ref

        self.generated = generated
        self.project_name = project_name
        self.extension_name = extension_name
        self.source_file = source_file
        self.ast = ast
        self.raw_contents = raw_contents
        self.comment = comment
        self.pre_sorted = pre_sorted
        self.symbol_names = OrderedSet(symbol_names or [])

        self.output_attrs = None
        self.subpages = OrderedSet()
        self.symbols = []
        self.private_symbols = []
        self.typed_symbols = OrderedDict()
        self.by_parent_symbols = OrderedDict()
        self.formatted_contents = None
        self.detailed_description = None
        self.build_path = None
        self.cached_paths = OrderedSet()

        if comment:
            meta = comment.meta
        elif meta:
            meta = meta
        else:
            meta = {}

        self.meta = {}
        for key, value in meta.items():
            try:
                self.meta.update(Schema(Page.meta_schema).validate({
                    key.replace('_', '-').lower(): value}))
            except SchemaError as err:
                warn('invalid-page-metadata',
                     '%s: Invalid metadata: \n%s, discarding metadata' %
                     (self.name, str(err)))

        if not self.meta.get('extra'):
            self.meta['extra'] = defaultdict()

        self.title = self.meta.get(
            'title', cmark.title_from_ast(self.ast) if ast else '')
        self.thumbnail = self.meta.get('thumbnail')
        self.short_description = self.meta.get('short-description', None)
        self.render_subpages = self.meta.get('render-subpages', True)

        self.link = Link(pagename, self.title or name, ref)
Exemplo n.º 2
0
 def __discover_title(self, meta):
     if meta is not None and 'title' in meta:
         self.title = meta['title']
     elif self.ast:
         self.title = cmark.title_from_ast(self.ast)
Exemplo n.º 3
0
 def __discover_title(self, meta):
     if meta is not None and 'title' in meta:
         self.title = meta['title']
     elif self.ast:
         self.title = cmark.title_from_ast(self.ast)
Exemplo n.º 4
0
 def test_page_no_title(self):
     inp = (u'Just a paragraph\n')
     ast = cmark.hotdoc_to_ast(inp, None)
     self.assertIsNone(cmark.title_from_ast(ast))
Exemplo n.º 5
0
 def test_page_title(self):
     inp = (u'### A title *please* a title\n')
     ast = cmark.hotdoc_to_ast(inp, None)
     self.assertEqual(cmark.title_from_ast(ast),
                      u'A title *please* a title')
Exemplo n.º 6
0
 def test_page_no_title(self):
     inp = (u'Just a paragraph\n')
     ast = cmark.hotdoc_to_ast(inp, None)
     self.assertIsNone(cmark.title_from_ast(ast))
Exemplo n.º 7
0
 def test_page_title(self):
     inp = (u'### A title *please* a title\n')
     ast = cmark.hotdoc_to_ast(inp, None)
     self.assertEqual(cmark.title_from_ast(ast),
                      u'A title *please* a title')