Add output_classes property to external renderer, and new .invert-when-dark class in theme

ABC Notation & Server-Side Latex look good naow! :D
This commit is contained in:
Starbeamrainbowlabs 2019-10-25 12:12:57 +01:00
parent 6d683533f5
commit f044d25f7e
Signed by: sbrl
GPG Key ID: 1BE5172E637709C2
4 changed files with 40 additions and 34 deletions

View File

@ -337,7 +337,7 @@
"version": "0.10",
"author": "Emanuil Rusev & Starbeamrainbowlabs",
"description": "An upgraded (now default!) parser based on Emanuil Rusev's Parsedown Extra PHP library (https:\/\/github.com\/erusev\/parsedown-extra), which is licensed MIT. Please be careful, as this module adds some weight to your installation.",
"lastupdate": 1571958901,
"lastupdate": 1572001815,
"optional": false,
"extra_data": {
"Parsedown.php": "https:\/\/raw.githubusercontent.com\/erusev\/parsedown\/fe7a50eceb4a3c867cc9fa9c0aa906b1067d1955\/Parsedown.php",

View File

@ -1012,10 +1012,12 @@ class PeppermintParsedown extends ParsedownExtreme
"name" => "img",
"attributes" => [
"alt" => "Diagram rendered by {$renderer->name}",
"src" => "?action=parsedown-render-ext&language=$language&immutable_key=".hash("crc32b", json_encode($renderer))."&source=".rawurlencode($text)
"src" => "?action=parsedown-render-ext&language=".rawurlencode($language)."&immutable_key=".hash("crc32b", json_encode($renderer))."&source=".rawurlencode($text)
]
]
];
if(!empty($renderer->output_classes))
$result["element"]["element"]["attributes"]["class"] = implode(" ", $renderer->output_classes);
return $result;
}

View File

@ -23,38 +23,40 @@
"parser_cache_min_size": { "type": "number", "description": "The minimum size a source string must be (in bytes) before it's considered eligible for caching.", "default": 1024 },
"parser_ext_renderers_enabled": { "type": "checkbox", "description": "Whether to enable external diagram renderer support, which is part of the parsedown parser. See the <code>parser_ext_renderers</code> setting below for more information.", "default": true },
"parser_ext_renderers": { "type": "parserext", "description": "Used by the parsedown parser as an object mapping fenced code block languages to their respective external renderers. Should be in the form <code>language_code</code> → <code>external renderer definition</code>. See the default for examples on how to define an external renderer. Warning: On Windows, the enforcement of strict time limits is not possible. Beware of DoS attacks!", "default": {
"nomnoml": {
"name": "nomnoml",
"description": "The nomnoml UML diagram renderer. Requires the 'nomnoml' npm package to be globally installed.",
"url": "http://nomnoml.com/",
"cli": "nomnoml {input_file} {output_file} 0",
"cli_mode": "file",
"output_format": "image/svg+xml"
},
"plantuml": {
"name": "PlantUML",
"description": "The PlantUML diagram renderer. Supports many different diagram types. Requires plantuml to be installed.",
"url": "http://plantuml.com/",
"cli": "plantuml -tsvg -pipe",
"cli_mode": "pipe",
"output_format": "image/svg+xml"
},
"abc": {
"name": "ABC Notation",
"description": "A simple music notation typesetter. Much easier to understand than Lilypond. Requires abcm2ps to be installed.",
"url": "https://abcnotation.com/",
"cli": "abcm2ps -g -O - -",
"cli_mode": "pipe",
"output_format": "image/svg+xml"
},
"latexserver": {
"name": "Server-Side MathJax",
"description": "Client-side Mathjax via the 'enable_math_rendering' setting not your thing? Try it server-side instead! Requires the 'mathjax-node-cli' npm package to be globally installed.",
"url": "https://github.com/mathjax/mathjax-node-cli/blob/master/package.json#L41",
"cli": "tex2svg -- {input_text}",
"cli_mode": "substitution_pipe",
"output_format": "image/svg+xml"
}
"nomnoml": {
"name": "nomnoml",
"description": "The nomnoml UML diagram renderer. Requires the 'nomnoml' npm package to be globally installed.",
"url": "http:\/\/nomnoml.com\/",
"cli": "nomnoml {input_file} {output_file} 0",
"cli_mode": "file",
"output_format": "image\/svg+xml"
},
"plantuml": {
"name": "PlantUML",
"description": "The PlantUML diagram renderer. Supports many different diagram types. Requires plantuml to be installed.",
"url": "http:\/\/plantuml.com\/",
"cli": "plantuml -tsvg -pipe",
"cli_mode": "pipe",
"output_format": "image\/svg+xml"
},
"abc": {
"name": "ABC Notation",
"description": "A simple music notation typesetter. Much easier to understand than Lilypond. Requires abcm2ps to be installed.",
"url": "https:\/\/abcnotation.com\/",
"cli": "abcm2ps -g -O - -",
"cli_mode": "pipe",
"output_format": "image\/svg+xml",
"output_classes": [ "invert-when-dark" ]
},
"latexserver": {
"name": "Server-Side MathJax",
"description": "Client-side Mathjax via the 'enable_math_rendering' setting not your thing? Try it server-side instead! Requires the 'mathjax-node-cli' npm package to be globally installed.",
"url": "https:\/\/github.com\/mathjax\/mathjax-node-cli\/blob\/master\/package.json#L41",
"cli": "tex2svg -- {input_text}",
"cli_mode": "substitution_pipe",
"output_format": "image\/svg+xml",
"output_classes": [ "invert-when-dark" ]
}
} },
"parser_ext_time_limit": { "type": "number", "description": "The number of seconds external renderers are allowed to run for. Has no effect if external renderers are turned off. Also currently has no effect on Windows.", "default": 5 },
"parser_ext_allow_anon": { "type": "checkbox", "description": "<p>Whether to allow anonymous users to render new diagrams with the external renderer. When disabled, anonymous users will still be allowed to recall pre-rendered items from the cache, but will be unable to generate brand-new diagrams.</p><p>Note that if you allow anonymous edits this setting won't fully protect you: anonymous users could edit a page and insert a malicious diagram, and then laer a logged in user could unwittingly invoke the external renderer on the anonymous user's behalf.", "default": false },

View File

@ -95,6 +95,8 @@
a:hover { color: hsl(214, 67%, 75%); }
a:active, a:focus { color: hsl(214, 87%, 85%); }
a:visited { color: hsl(264, 77%, 65%); }
.invert-when-dark { filter: invert(100%); }
}
/* TODO: Refactor to use the CSS grid */