Esempio n. 1
0
def test_checklists():
    source = """
* [ ] foo
* [x] bar
* [ ] baz
    """.strip()

    expected = """
<ul class="check-list">
<li><input type="checkbox" disabled> foo</li>
<li><input type="checkbox" disabled checked> bar</li>
<li><input type="checkbox" disabled> baz</li>
</ul>
    """.strip()

    html = markdown(source,
                    extensions=[ChecklistExtension(list_class="check-list")])
    assert html == expected

    expected = """
<ul class="checklist">
<li><label><input type="checkbox" disabled> foo</label></li>
<li><label><input type="checkbox" disabled checked> bar</label></li>
<li><label><input type="checkbox" disabled> baz</label></li>
</ul>
    """.strip()

    html = markdown(source,
                    extensions=[ChecklistExtension(render_item=render_item)])
    assert html == expected
Esempio n. 2
0
 def __init__(self):
   """
   Attributes
   ----------
   regex_codeblock : re.compile object
   regex_codeinline : re.compile object
   regex_overtheme : re.compile object
   mkd : markdown.Markdown object
     markdown converter
   """
   self.regex_codeblock  =  __regex_codeblock__
   self.regex_codeinline =  __regex_codeinline__
   self.regex_overtheme  =  __regex_overtheme__
   if __mdx_checklist__:
     self.mkd = markdown.Markdown(output_format='html5',
                                  extensions=['smarty',
                                              'extra',
                                              ChecklistExtension(),
                                              MathJaxExtension()])
   else:
     self.mkd = markdown.Markdown(output_format='html5',
                                  extensions=['smarty',
                                              'extra',
                                              MathJaxExtension()])
   return
Esempio n. 3
0
    def __init__(self, settings: MarkdownSettings):
        self.settings = settings
        self.extensions = []

        if self.settings.enable_checklist:
            self.extensions.append(ChecklistExtension())

        if self.settings.enable_codehilite:
            self.extensions.append(
                CodeHiliteExtension(**self.settings.codehilite_options)
            )

        if self.settings.enable_fenced_code:
            self.extensions.append(FencedCodeExtension())

        if self.settings.enable_footnotes:
            self.extensions.append(FootnoteExtension(**self.settings.footnotes_options))

        if self.settings.enable_smartypants:
            self.extensions.append(SmartyExtension(**self.settings.smartypants_options))

        if self.settings.enable_toc:
            self.extensions.append(TocExtension(**self.settings.toc_options))

        if self.settings.enable_truly_sane_lists:
            self.extensions.append(
                TrulySaneListExtension(**self.settings.truly_sane_lists_options)
            )

        super().__init__(
            output_format=self.settings.output_format,
            tab_length=self.settings.tab_length,
            extensions=self.extensions,
        )
Esempio n. 4
0
def test_class():
    source = """
* [x] foo
* [ ] bar
* [X] baz

----

* [ ] lorem
* [x] ipsum
* [ ] ...
    """.strip()

    html = markdown(source, extensions=[ChecklistExtension()])
    assert html == """
<ul class="checklist">
<li><input type="checkbox" disabled="disabled" checked="checked" /> foo</li>
<li><input type="checkbox" disabled="disabled" /> bar</li>
<li><input type="checkbox" disabled="disabled" checked="checked" /> baz</li>
</ul>
<hr />
<ul class="checklist">
<li><input type="checkbox" disabled="disabled" /> lorem</li>
<li><input type="checkbox" disabled="disabled" checked="checked" /> ipsum</li>
<li><input type="checkbox" disabled="disabled" /> ...</li>
</ul>
    """.strip()
Esempio n. 5
0
 def __init__(self, sitedir, project):
     self.sitedir = sitedir
     self.filelist = project.filelist
     self.navlist = project.navlist
     self.taglist = project.taglist
     self.site = project.site
     tableclass = md_extensions.TableClassExtension()
     projectref = md_extensions.ProjectReferenceExtension()
     checklist = ChecklistExtension()
     extensions = [
         'extra', 'codehilite', 'headerid', 'toc', 'smarty', tableclass,
         projectref, checklist
     ]
     extension_configs = {
         'codehilite': [('guess_lang', 'False'), ('linenums', 'False')],
         'headerid': [('level', 2)]
     }
     self.md = markdown.Markdown(extensions=extensions,
                                 extension_configs=extension_configs)
     self.md.site = self.site
     env = self.env = jinja2.Environment(
         loader=jinja2.FileSystemLoader(layoutdir),
         lstrip_blocks=True,
         trim_blocks=True)
     env.filters.update(project.filters)
     self.templates = {}
     for layout in project.layouts:
         self.templates[layout] = self.env.get_template(layout + '.html')
     # layout for tags is optional, triggers index file generation per tag
     try:
         self.templates[tag_layout] = self.env.get_template(tag_layout +
                                                            '.html')
     except jinja2.exceptions.TemplateNotFound:
         if self.taglist:
             warn(tag_layout_warning, UrubuWarning)
Esempio n. 6
0
def markdown2html(source, no_p=False):
    """Convert markdown source to html.

  Parameters
  ----------
  source : str
    string (as single stream) containing the source
  no_p : bool, optional
    if True the converted contents is not inserted into the <p></p> tags

  Returns
  -------
  str
    converted source
  """
    if __mdx_checklist__:
        mkd = markdown.Markdown(output_format='html5',
                                extensions=[
                                    'smarty', 'extra',
                                    CustomSpanClassExtension(),
                                    ChecklistExtension(),
                                    MathJaxExtension()
                                ])
    else:
        mkd = markdown.Markdown(
            output_format='html5',
            extensions=['smarty', 'extra',
                        MathJaxExtension()])
    markup = mkd.reset().convert(source)
    if no_p:
        p_start = '<p>'
        p_end = '</p>'
        if markup.startswith(p_start) and markup.endswith(p_end):
            markup = markup[len(p_start):-len(p_end)]
    return markup
Esempio n. 7
0
    def __init__(self, baseDir):
        assert os.path.exists(baseDir), "{} does not exist".format(baseDir)
        assert os.path.isdir(baseDir), "{} is not a folder".format(baseDir)
        self.baseDir = os.path.abspath(baseDir)
        self.fs_path = partial(get_fs_path, self.baseDir)
        self.res_path = partial(get_resource_path, self.baseDir)

        self.default_template_string = """<html><body>{{ __body__ }}</body></html>"""

        self.md = markdown.Markdown(extensions=[
            "meta",  # Built-in extensions
            "tables",
            "fenced_code",
            "def_list",
            "abbr",
            "sane_lists",
            HighlightExtension(),  # extensions from pip
            ChecklistExtension()
        ])
Esempio n. 8
0
def test_syntax_variations():
    source = """
Hello World
===========

- [x] foo
- [ ] bar
- [X] baz

lorem ipsum
    """.strip()

    html = markdown(source, extensions=[ChecklistExtension()])
    assert html == """
<h1>Hello World</h1>
<ul class="checklist">
<li><input type="checkbox" disabled="disabled" checked="checked" /> foo</li>
<li><input type="checkbox" disabled="disabled" /> bar</li>
<li><input type="checkbox" disabled="disabled" checked="checked" /> baz</li>
</ul>
<p>lorem ipsum</p>
    """.strip()
Esempio n. 9
0
def test_checklists():
    source = """
Hello World
===========

* [ ] foo
* [x] bar
* [ ] baz

lorem ipsum
    """.strip()

    html = markdown(source)
    assert html == """
<h1>Hello World</h1>
<ul>
<li>[ ] foo</li>
<li>[x] bar</li>
<li>[ ] baz</li>
</ul>
<p>lorem ipsum</p>
    """.strip()

    expected = """
<h1>Hello World</h1>
<ul class="checklist">
<li><input type="checkbox" disabled="disabled" /> foo</li>
<li><input type="checkbox" disabled="disabled" checked="checked" /> bar</li>
<li><input type="checkbox" disabled="disabled" /> baz</li>
</ul>
<p>lorem ipsum</p>
    """.strip()

    html = markdown(source, extensions=[ChecklistExtension()])
    assert html == expected

    html = markdown(source, extensions=['markdown_checklist.extension'])
    assert html == expected
Esempio n. 10
0
def _get_md_obj() -> Markdown:
    exts: list = ['extra',
                  'meta',
                  'sane_lists',
                  'smarty',
                  'toc',
                  'wikilinks',
                  # stripTitle generates an error when True,
                  # if there is no title attr
                  YafgExtension(stripTitle=False,
                                figureClass="",
                                figcaptionClass="",
                                figureNumbering=False,
                                figureNumberClass="number",
                                figureNumberText="Figure"),
                  HighlightExtension(),
                  ChecklistExtension(),
                  'pymdownx.caret',
                  'pymdownx.tilde']
    log.debug('list of md extensions: (%s)',
              ', '.join([e if isinstance(e, str) else type(e).__name__
                         for e in exts]))
    return Markdown(extensions=exts, output_format='html5')
Esempio n. 11
0
        }
    },
    "root": {"level": "INFO", "handlers": ["console"]},
}

# MARKDOWNIFY
# -------------------------------------------------------------------
from apps.blog.utils.markdown_prism import PrismCodeExtension
from markdown_checklist.extension import ChecklistExtension
from markdown_katex.extension import KatexExtension

MARKDOWNIFY = {
    "default": {
        "MARKDOWN_EXTENSIONS": [
            PrismCodeExtension(),
            ChecklistExtension(),
            KatexExtension(),
        ],
        "STRIP": False,
        "BLEACH": False,
    },
    "comment": {
        "WHITELIST_TAGS": [],
        "WHITELIST_ATTRS": [],
        "WHITELIST_STYLES": [],
        "WHITELIST_PROTOCOLS": [],
        "LINKIFY_TEXT": {
            "PARSE_URLS": True,
            "PARSE_EMAIL": True,
            "CALLBACKS": [],
            "SKIP_TAGS": [],
Esempio n. 12
0
"""

# Usage:
#   shell> python markdown2html.py path/to/file.md path/to/output/dir

import sys
import commands
import web
import markdown

# https://github.com/FND/markdown-checklist
from markdown_checklist.extension import ChecklistExtension

# Markdown extensions
MD_EXTENSIONS = ['toc', 'meta', 'extra', 'footnotes', 'admonition',
                 'tables', 'attr_list', ChecklistExtension()]

# Get file name
filename = sys.argv[1]
# Get file name without file extension
filename_without_ext = filename.split('/')[-1].replace('.md', '')

# Get output directory
output_dir = sys.argv[2]

# Get other options and convert them to a dict.
args = sys.argv[3:]
cmd_opts = {}
for arg in args:
    if '=' in arg:
        (var, value) = arg.split('=')
Esempio n. 13
0
def markdown(value):
    """Convert plain text to HTML."""
    return Markup(md2(value, extensions=[ChecklistExtension()]))