def creole2html(
    markup_string,
    debug=False,
    parser_kwargs=None,
    emitter_kwargs=None,
    block_rules=None,
    blog_line_breaks=True,
    macros=None,
    verbose=None,
    stderr=None,
    strict=False,
):
    """
    convert creole markup into html code

    >>> creole2html('This is **creole //markup//**!')
    '<p>This is <strong>creole <i>markup</i></strong>!</p>'

    Info: parser_kwargs and emitter_kwargs are deprecated
    """
    assert isinstance(markup_string,
                      str), "given markup_string must be unicode!"

    parser_kwargs2 = {
        "block_rules": block_rules,
        "blog_line_breaks": blog_line_breaks,
        "debug": debug,
    }
    if parser_kwargs is not None:
        warnings.warn(
            "parser_kwargs argument in creole2html would be removed in the future!",
            PendingDeprecationWarning)
        parser_kwargs2.update(parser_kwargs)

    # Create document tree from creole markup
    document = CreoleParser(markup_string, **parser_kwargs2).parse()
    if debug:
        document.debug()

    emitter_kwargs2 = {
        "macros": macros,
        "verbose": verbose,
        "stderr": stderr,
        "strict": strict,
    }
    if emitter_kwargs is not None:
        warnings.warn(
            "emitter_kwargs argument in creole2html would be removed in the future!",
            PendingDeprecationWarning)
        emitter_kwargs2.update(emitter_kwargs)

    # Build html code from document tree
    return HtmlEmitter(document, **emitter_kwargs2).emit()
Example #2
0
    def links(self):
        document = CreoleParser(
            self.raw_content.replace('<', '<<').replace('>', '>>')).parse()
        emitter = LinkEmitter(document)
        emitter.emit()

        return emitter.links
Example #3
0
def creole2html(
    markup_string,
    debug=False,
    parser_kwargs=None,
    emitter_kwargs=None,
    block_rules=None,
    blog_line_breaks=True,
    macros=None,
    verbose=None,
    stderr=None,
):
    """
    convert creole markup into html code

    >>> creole2html('This is **creole //markup//**!')
    '<p>This is <strong>creole <i>markup</i></strong>!</p>'
    
    Info: parser_kwargs and emitter_kwargs are deprecated
    """
    assert isinstance(markup_string, TEXT_TYPE), "given markup_string must be unicode!"

    parser_kwargs2 = {"block_rules": block_rules, "blog_line_breaks": blog_line_breaks}
    if parser_kwargs is not None:
        warnings.warn(
            "parser_kwargs argument in creole2html would be removed in the future!", PendingDeprecationWarning
        )
        parser_kwargs2.update(parser_kwargs)

    # Create document tree from creole markup
    document = CreoleParser(markup_string, **parser_kwargs2).parse()
    if debug:
        document.debug()

    emitter_kwargs2 = {"macros": macros, "verbose": verbose, "stderr": stderr}
    if emitter_kwargs is not None:
        warnings.warn(
            "emitter_kwargs argument in creole2html would be removed in the future!", PendingDeprecationWarning
        )
        emitter_kwargs2.update(emitter_kwargs)

    # Build html code from document tree
    return HtmlEmitter(document, **emitter_kwargs2).emit()
Example #4
0
    def metadata(self):
        document = CreoleParser(
            self.raw_content.replace('<', '<<').replace('>', '>>')).parse()
        emitter = MetadataCollector(document)
        emitter.emit()

        metadata = []
        resources = []
        for item in emitter.metadata:
            if item['object'].startswith('http'):
                resources.append(item)
            else:
                metadata.append(item)

        return [metadata, resources]
Example #5
0
            self.stderr.write(exception)

        if self.verbose > 0:
            return "[Error: %s]\n" % text
        else:
            # No error output
            return ""


if __name__ == "__main__":
    txt = """Local test
<<toc>>
= headline 1 level 1
== headline 2 level 2
== headline 3 level 2
==== headline 4 level 4
= headline 5 level 1
=== headline 6 level 3
"""

    print("-" * 80)
#    from creole_alt.creole import CreoleParser
    p = CreoleParser(txt)
    document = p.parse()
    p.debug()

    html = HtmlEmitter(document, verbose=999).emit()
    print(html)
    print("-" * 79)
    print(html.replace(" ", ".").replace("\n", "\\n\n"))
Example #6
0
 def render_to_html(self):
     document = CreoleParser(
         self.raw_content.replace('<', '<<').replace('>', '>>')).parse()
     return WikiEmitter(document).emit()
Example #7
0
    def validate(self):
        SCHEMA_PREDICATES = ['hasMandatory', 'hasOptional']

        namespace_page = Page.objects.get(namespace='Namespace',
                                          title=self.namespace)

        errors = []
        warnings = []

        schema_triples = Triple.objects.filter(page__namespace='Namespace',
                                               page__title=self.namespace,
                                               predicate__in=SCHEMA_PREDICATES)

        document = CreoleParser(
            self.raw_content.replace('<', '<<').replace('>', '>>')).parse()
        emitter = SchemaCollector(document)
        emitter.emit()

        metadata = emitter.metadata
        sections = emitter.sections

        properties = [item['predicate'] for item in metadata]

        # validate sections and properties
        for triple in schema_triples:
            if triple.predicate == 'hasOptional':
                namespace, title = triple.object.split(':')
                if namespace == 'Section':
                    if title not in sections:
                        warnings.append({
                            'type': 'missing_optional_section',
                            'section': triple.object
                        })
                elif namespace == 'Property':
                    if title not in properties:
                        warnings.append({
                            'type': 'missing_optional_property',
                            'property': triple.object
                        })
            elif triple.predicate == 'hasMandatory':
                namespace, title = triple.object.split(':')
                if namespace == 'Section':
                    if title not in sections:
                        errors.append({
                            'type': 'missing_mandatory_section',
                            'section': triple.object
                        })
                elif namespace == 'Property':
                    if title not in properties:
                        errors.append({
                            'type': 'missing_mandatory_property',
                            'property': triple.object
                        })

        allowed_sections = [
            triple.object.split(':')[1] for triple in schema_triples
            if 'Section:' in triple.object
        ]

        for section in sections:
            if section not in allowed_sections:
                errors.append({'type': 'invalid_section', 'section': section})
                # raise

        return {'errors': errors, 'warnings': warnings}