second commit

This commit is contained in:
2024-12-27 22:31:23 +09:00
parent 2353324570
commit 10a0f110ca
8819 changed files with 1307198 additions and 28 deletions

View File

@ -0,0 +1,28 @@
__all__ = ("commonmark", "default", "zero", "js_default", "gfm_like")
from . import commonmark, default, zero
from ..utils import PresetType
js_default = default
class gfm_like: # noqa: N801
"""GitHub Flavoured Markdown (GFM) like.
This adds the linkify, table and strikethrough components to CommmonMark.
Note, it lacks task-list items and raw HTML filtering,
to meet the the full GFM specification
(see https://github.github.com/gfm/#autolinks-extension-).
"""
@staticmethod
def make() -> PresetType:
config = commonmark.make()
config["components"]["core"]["rules"].append("linkify")
config["components"]["block"]["rules"].append("table")
config["components"]["inline"]["rules"].extend(["strikethrough", "linkify"])
config["components"]["inline"]["rules2"].append("strikethrough")
config["options"]["linkify"] = True
config["options"]["html"] = True
return config

View File

@ -0,0 +1,74 @@
"""Commonmark default options.
This differs to presets.default,
primarily in that it allows HTML and does not enable components:
- block: table
- inline: strikethrough
"""
from ..utils import PresetType
def make() -> PresetType:
return {
"options": {
"maxNesting": 20, # Internal protection, recursion limit
"html": True, # Enable HTML tags in source,
# this is just a shorthand for .enable(["html_inline", "html_block"])
# used by the linkify rule:
"linkify": False, # autoconvert URL-like texts to links
# used by the replacements and smartquotes rules
# Enable some language-neutral replacements + quotes beautification
"typographer": False,
# used by the smartquotes rule:
# Double + single quotes replacement pairs, when typographer enabled,
# and smartquotes on. Could be either a String or an Array.
#
# For example, you can use '«»„“' for Russian, '„“‚‘' for German,
# and ['«\xA0', '\xA0»', '\xA0', '\xA0'] for French (including nbsp).
"quotes": "\u201c\u201d\u2018\u2019", # /* “”‘’ */
# Renderer specific; these options are used directly in the HTML renderer
"xhtmlOut": True, # Use '/' to close single tags (<br />)
"breaks": False, # Convert '\n' in paragraphs into <br>
"langPrefix": "language-", # CSS language prefix for fenced blocks
# Highlighter function. Should return escaped HTML,
# or '' if the source string is not changed and should be escaped externally.
# If result starts with <pre... internal wrapper is skipped.
#
# function (/*str, lang, attrs*/) { return ''; }
#
"highlight": None,
},
"components": {
"core": {"rules": ["normalize", "block", "inline", "text_join"]},
"block": {
"rules": [
"blockquote",
"code",
"fence",
"heading",
"hr",
"html_block",
"lheading",
"list",
"reference",
"paragraph",
]
},
"inline": {
"rules": [
"autolink",
"backticks",
"emphasis",
"entity",
"escape",
"html_inline",
"image",
"link",
"newline",
"text",
],
"rules2": ["balance_pairs", "emphasis", "fragments_join"],
},
},
}

View File

@ -0,0 +1,35 @@
"""markdown-it default options."""
from ..utils import PresetType
def make() -> PresetType:
return {
"options": {
"maxNesting": 100, # Internal protection, recursion limit
"html": False, # Enable HTML tags in source
# this is just a shorthand for .disable(["html_inline", "html_block"])
# used by the linkify rule:
"linkify": False, # autoconvert URL-like texts to links
# used by the replacements and smartquotes rules:
# Enable some language-neutral replacements + quotes beautification
"typographer": False,
# used by the smartquotes rule:
# Double + single quotes replacement pairs, when typographer enabled,
# and smartquotes on. Could be either a String or an Array.
# For example, you can use '«»„“' for Russian, '„“‚‘' for German,
# and ['«\xA0', '\xA0»', '\xA0', '\xA0'] for French (including nbsp).
"quotes": "\u201c\u201d\u2018\u2019", # /* “”‘’ */
# Renderer specific; these options are used directly in the HTML renderer
"xhtmlOut": False, # Use '/' to close single tags (<br />)
"breaks": False, # Convert '\n' in paragraphs into <br>
"langPrefix": "language-", # CSS language prefix for fenced blocks
# Highlighter function. Should return escaped HTML,
# or '' if the source string is not changed and should be escaped externally.
# If result starts with <pre... internal wrapper is skipped.
#
# function (/*str, lang, attrs*/) { return ''; }
#
"highlight": None,
},
"components": {"core": {}, "block": {}, "inline": {}},
}

View File

@ -0,0 +1,43 @@
"""
"Zero" preset, with nothing enabled. Useful for manual configuring of simple
modes. For example, to parse bold/italic only.
"""
from ..utils import PresetType
def make() -> PresetType:
return {
"options": {
"maxNesting": 20, # Internal protection, recursion limit
"html": False, # Enable HTML tags in source
# this is just a shorthand for .disable(["html_inline", "html_block"])
# used by the linkify rule:
"linkify": False, # autoconvert URL-like texts to links
# used by the replacements and smartquotes rules:
# Enable some language-neutral replacements + quotes beautification
"typographer": False,
# used by the smartquotes rule:
# Double + single quotes replacement pairs, when typographer enabled,
# and smartquotes on. Could be either a String or an Array.
# For example, you can use '«»„“' for Russian, '„“‚‘' for German,
# and ['«\xA0', '\xA0»', '\xA0', '\xA0'] for French (including nbsp).
"quotes": "\u201c\u201d\u2018\u2019", # /* “”‘’ */
# Renderer specific; these options are used directly in the HTML renderer
"xhtmlOut": False, # Use '/' to close single tags (<br />)
"breaks": False, # Convert '\n' in paragraphs into <br>
"langPrefix": "language-", # CSS language prefix for fenced blocks
# Highlighter function. Should return escaped HTML,
# or '' if the source string is not changed and should be escaped externally.
# If result starts with <pre... internal wrapper is skipped.
# function (/*str, lang, attrs*/) { return ''; }
"highlight": None,
},
"components": {
"core": {"rules": ["normalize", "block", "inline", "text_join"]},
"block": {"rules": ["paragraph"]},
"inline": {
"rules": ["text"],
"rules2": ["balance_pairs", "fragments_join"],
},
},
}