Example #1
0
    def __init__(self, project, app):
        "Banana banana"
        self.project = project
        self.app = app

        self.__all_pages = {}

        self.root = None
        self.__dep_map = project.dependency_map
        self.__fill_dep_map()

        cmark.hotdoc_to_ast(u'', self, None)
        self.__extensions = {}
Example #2
0
    def page_from_raw_text(self, source_file, contents):
        """
        Banana banana
        """
        raw_contents = contents

        meta = {}
        if contents.startswith('---\n'):
            split = contents.split('\n...\n', 1)
            if len(split) == 2:
                contents = split[1]
                try:
                    blocks = yaml.load_all(split[0])
                    for block in blocks:
                        if block:
                            meta.update(block)
                except ConstructorError as exception:
                    warn('invalid-page-metadata',
                         '%s: Invalid metadata: \n%s' % (source_file,
                                                         str(exception)))

        output_path = os.path.dirname(os.path.relpath(
            source_file, iter(self.__include_paths).next()))

        ast = cmark.hotdoc_to_ast(contents, self)
        return Page(source_file, ast, output_path, meta=meta,
                    raw_contents=raw_contents)
Example #3
0
    def page_from_raw_text(self, source_file, contents, extension_name):
        """
        Banana banana
        """
        raw_contents = contents

        meta = {}
        if contents.startswith('---\n'):
            split = contents.split('\n...\n', 1)
            if len(split) == 2:
                contents = split[1]
                try:
                    blocks = yaml.load_all(split[0], Loader=yaml.FullLoader)
                    for block in blocks:
                        if block:
                            meta.update(block)
                except ConstructorError as exception:
                    warn('invalid-page-metadata',
                         '%s: Invalid metadata: \n%s' % (source_file,
                                                         str(exception)))

        output_path = os.path.dirname(os.path.relpath(
            source_file, next(iter(self.project.include_paths))))

        ast = cmark.hotdoc_to_ast(contents, self, source_file)
        return Page(source_file, False, self.project.sanitized_name, extension_name,
                    source_file=source_file, ast=ast, meta=meta, raw_contents=raw_contents,
                    output_path=output_path)
Example #4
0
    def __init__(self, private_folder, include_paths):
        "Banana banana"
        self.__include_paths = include_paths
        self.__priv_dir = private_folder

        try:
            self.__all_pages = self.__load_private('pages.p')
            self.__incremental = True
        except IOError:
            self.__all_pages = {}

        self.__placeholders = {}
        self.root = None
        self.__dep_map = self.__create_dep_map()
        DocDatabase.comment_updated_signal.connect(self.__comment_updated_cb)

        cmark.hotdoc_to_ast(u'', self)
Example #5
0
    def __init__(self, private_folder, include_paths):
        "Banana banana"
        self.__include_paths = include_paths
        self.__priv_dir = private_folder

        try:
            self.__all_pages = self.__load_private('pages.p')
            self.__incremental = True
        except IOError:
            self.__all_pages = {}

        self.__placeholders = {}
        self.root = None
        self.__dep_map = self.__create_dep_map()
        DocDatabase.comment_updated_signal.connect(self.__comment_updated_cb)

        cmark.hotdoc_to_ast(u'', self)
Example #6
0
    def __init__(self, project, app):
        "Banana banana"
        self.project = project
        self.app = app

        if self.app.incremental:
            self.__all_pages = self.__load_private('pages-%s.p' %
                                                   self.project.sanitized_name)
        else:
            self.__all_pages = {}

        self.__placeholders = {}
        self.root = None
        self.__dep_map = self.__create_dep_map()

        cmark.hotdoc_to_ast(u'', self)
        self.__extensions = {}
        self.resolve_placeholder_signal = Signal(optimized=True)
        self.list_override_pages_signal = Signal(optimized=True)
        self.update_signal = Signal()
        self.resolving_symbol_signal = Signal()
Example #7
0
    def resolve_symbols(self, doc_database, link_resolver, page=None):
        """Will call resolve_symbols on all the stale subpages of the tree.
        Args:
          page: hotdoc.core.doc_tree.Page, the page to resolve symbols in,
          will recurse on potential subpages.
        """

        page = page or self.root

        if page.is_stale:
            if page.ast is None and not page.generated:
                with io.open(page.source_file, 'r', encoding='utf-8') as _:
                    page.ast = cmark.hotdoc_to_ast(_.read(), self)

            page.resolve_symbols(doc_database, link_resolver)

        for pagename in page.subpages:
            cpage = self.__all_pages[pagename]
            self.resolve_symbols(doc_database, link_resolver, page=cpage)
Example #8
0
    def resolve_symbols(self, database, link_resolver, page=None):
        """Will call resolve_symbols on all the stale subpages of the tree.
        Args:
          page: hotdoc.core.tree.Page, the page to resolve symbols in,
          will recurse on potential subpages.
        """

        page = page or self.root

        if page.ast is None and not page.generated:
            with io.open(page.source_file, 'r', encoding='utf-8') as _:
                page.ast = cmark.hotdoc_to_ast(_.read(), self, page.source_file)

        page.resolve_symbols(self, database, link_resolver)
        self.__update_dep_map(page, page.symbols)

        for pagename in page.subpages:
            cpage = self.__all_pages[pagename]
            self.resolve_symbols(database, link_resolver, page=cpage)
Example #9
0
    def page_from_raw_text(self, source_file, contents):
        """
        Banana banana
        """
        raw_contents = contents

        meta = {}
        if contents.startswith('---\n'):
            split = contents.split('\n...\n', 1)
            if len(split) == 2:
                contents = split[1]
                try:
                    blocks = yaml.load_all(split[0])
                    for block in blocks:
                        meta.update(block)
                except ConstructorError as exception:
                    error('invalid-page-metadata',
                          '%s: Invalid metadata: \n%s' % (source_file,
                                                          str(exception)))

        ast = cmark.hotdoc_to_ast(contents, self)
        return Page(source_file, ast, meta=meta, raw_contents=raw_contents)
Example #10
0
    def page_from_raw_text(self, source_file, contents):
        """
        Banana banana
        """
        raw_contents = contents

        meta = {}
        if contents.startswith('---\n'):
            split = contents.split('\n...\n', 1)
            if len(split) == 2:
                contents = split[1]
                try:
                    blocks = yaml.load_all(split[0])
                    for block in blocks:
                        if block:
                            meta.update(block)
                except ConstructorError as exception:
                    warn(
                        'invalid-page-metadata', '%s: Invalid metadata: \n%s' %
                        (source_file, str(exception)))

        ast = cmark.hotdoc_to_ast(contents, self)
        return Page(source_file, ast, meta=meta, raw_contents=raw_contents)
Example #11
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')
Example #12
0
 def render(self, inp):
     ast = cmark.hotdoc_to_ast(inp, self.include_resolver)
     out = cmark.ast_to_html(ast, self.link_resolver)[0]
     return ast, out
Example #13
0
 def render(self, inp):
     ast = cmark.hotdoc_to_ast(inp, None)
     out = cmark.ast_to_html(ast, None)[0]
     return ast, out
Example #14
0
 def render(self, inp):
     ast = cmark.hotdoc_to_ast(inp, None)
     out = cmark.ast_to_html(ast, None)[0]
     return ast, out
Example #15
0
 def assertOutputs(self, inp, expected):
     ast = cmark.hotdoc_to_ast(inp, self.include_resolver)
     out = cmark.ast_to_html(ast, self.link_resolver)[0]
     self.assertEqual(out, expected)
     return out, ast
Example #16
0
 def render(self, inp):
     ast = cmark.hotdoc_to_ast(inp, self.include_resolver)
     out = cmark.ast_to_html(ast, self.link_resolver)[0]
     return ast, out
Example #17
0
 def assertOutputs(self, inp, expected):
     ast = cmark.hotdoc_to_ast(inp, self.include_resolver)
     out = cmark.ast_to_html(ast, self.link_resolver)[0]
     self.assertEqual(out, expected)
     return out, ast
Example #18
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))
Example #19
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')
Example #20
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))