diff --git a/Makefile b/Makefile
index 62543ff..a4afeef 100644
--- a/Makefile
+++ b/Makefile
@@ -1,16 +1,16 @@
-release: lit/markdown/source lit
+release: lit/markdown/source d-files
@mkdir -p bin
dub build --build=release
@rm bin/tangle
-debug: lit/markdown/source lit
+debug: lit/markdown/source d-files
@mkdir -p bin
dub build
bin/tangle:
dub --root=lit/tangle build
-lit: bin/tangle
+d-files: bin/tangle
@mkdir -p source
bin/tangle -odir source lit/*.lit
diff --git a/lit/weaver.lit b/lit/weaver.lit
index 76a0aff..8a16393 100644
--- a/lit/weaver.lit
+++ b/lit/weaver.lit
@@ -202,6 +202,7 @@ and the css (prettiy css, default css, and colorscheme css). It also adds
the title of the document.
--- Write the head of the HTML
+string prettifyExtension;
foreach (cmd; p.commands) {
if (cmd.name == "@overwrite_css") {
defaultCSS = readall(File(cmd.args));
@@ -210,6 +211,15 @@ foreach (cmd; p.commands) {
} else if (cmd.name == "@colorscheme") {
colorschemeCSS = readall(File(cmd.args));
}
+
+ if (cmd.name == "@code_type") {
+ if (cmd.args.length > 1) {
+ string ext = cmd.args.split()[1][1..$];
+ if (ext in extensions) {
+ prettifyExtension = "\n";
+ }
+ }
+ }
}
foreach (cmd; c.commands) {
if (cmd.name == "@overwrite_css") {
@@ -219,10 +229,21 @@ foreach (cmd; c.commands) {
} else if (cmd.name == "@colorscheme") {
colorschemeCSS = readall(File(cmd.args));
}
+
+ if (cmd.name == "@code_type") {
+ if (cmd.args.length > 1) {
+ string ext = cmd.args.split()[1][1..$];
+ if (ext in extensions) {
+ prettifyExtension = "\n";
+ }
+ }
+ }
}
string css = colorschemeCSS ~ defaultCSS;
string scripts = "\n";
+scripts ~= prettifyExtension;
+
bool use_katex = false;
output ~= "\n"
@@ -604,6 +625,53 @@ o.className&&e.test(o.className)){m=!0;break}if(!m){d.className+=" prettyprinted
{h:m,c:d,j:u,i:o};K(r)}}}i
%[\](){}?:.,;]/],[PR.PR_PLAIN,/./]]),["rs"]);
+DELIMITER";
+extensions["rs"] = rust;
+string swift = q"DELIMITER
+PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \n\r\t\v\f\0]+/,null," \n\r \f\x00"],[PR.PR_STRING,/^"(?:[^"\\]|(?:\\.)|(?:\\\((?:[^"\\)]|\\.)*\)))*"/,null,'"']],[[PR.PR_LITERAL,/^(?:(?:0x[\da-fA-F][\da-fA-F_]*\.[\da-fA-F][\da-fA-F_]*[pP]?)|(?:\d[\d_]*\.\d[\d_]*[eE]?))[+-]?\d[\d_]*/,null],[PR.PR_LITERAL,/^-?(?:(?:0(?:(?:b[01][01_]*)|(?:o[0-7][0-7_]*)|(?:x[\da-fA-F][\da-fA-F_]*)))|(?:\d[\d_]*))/,null],[PR.PR_LITERAL,/^(?:true|false|nil)\b/,null],[PR.PR_KEYWORD,/^\b(?:__COLUMN__|__FILE__|__FUNCTION__|__LINE__|#available|#else|#elseif|#endif|#if|#line|arch|arm|arm64|associativity|as|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic|dynamicType|else|enum|extension|fallthrough|final|for|func|get|guard|import|indirect|infix|init|inout|internal|i386|if|in|iOS|iOSApplicationExtension|is|lazy|left|let|mutating|none|nonmutating|operator|optional|OSX|OSXApplicationExtension|override|postfix|precedence|prefix|private|protocol|Protocol|public|required|rethrows|return|right|safe|self|set|static|struct|subscript|super|switch|throw|try|Type|typealias|unowned|unsafe|var|weak|watchOS|while|willSet|x86_64)\b/,null],[PR.PR_COMMENT,/^\/\/.*?[\n\r]/,null],[PR.PR_COMMENT,/^\/\*[\s\S]*?(?:\*\/|$)/,null],[PR.PR_PUNCTUATION,/^<<=|<=|<<|>>=|>=|>>|===|==|\.\.\.|&&=|\.\.<|!==|!=|&=|~=|~|\(|\)|\[|\]|{|}|@|#|;|\.|,|:|\|\|=|\?\?|\|\||&&|&\*|&\+|&-|&=|\+=|-=|\/=|\*=|\^=|%=|\|=|->|`|==|\+\+|--|\/|\+|!|\*|%|<|>|&|\||\^|\?|=|-|_/,null],[PR.PR_TYPE,/^\b(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null]]),["swift"]);
+DELIMITER";
+extensions["swift"] = swift;
+string haskell = q"DELIMITER
+PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[\t\n\x0B\x0C\r ]+/,null," \n\f\r "],[PR.PR_STRING,/^\"(?:[^\"\\\n\x0C\r]|\\[\s\S])*(?:\"|$)/,null,'"'],[PR.PR_STRING,/^\'(?:[^\'\\\n\x0C\r]|\\[^&])\'?/,null,"'"],[PR.PR_LITERAL,/^(?:0o[0-7]+|0x[\da-f]+|\d+(?:\.\d+)?(?:e[+\-]?\d+)?)/i,null,"0123456789"]],[[PR.PR_COMMENT,/^(?:(?:--+(?:[^\r\n\x0C]*)?)|(?:\{-(?:[^-]|-+[^-\}])*-\}))/],[PR.PR_KEYWORD,/^(?:case|class|data|default|deriving|do|else|if|import|in|infix|infixl|infixr|instance|let|module|newtype|of|then|type|where|_)(?=[^a-zA-Z0-9\']|$)/,null],[PR.PR_PLAIN,/^(?:[A-Z][\w\']*\.)*[a-zA-Z][\w\']*/],[PR.PR_PUNCTUATION,/^[^\t\n\x0B\x0C\r a-zA-Z0-9\'\"]+/]]),["hs"]);
+DELIMITER";
+extensions["hs"] = haskell;
+string lua = q"DELIMITER
+PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[\t\n\r \xA0]+/,null," \n\r "],[PR.PR_STRING,/^(?:\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)|\'(?:[^\'\\]|\\[\s\S])*(?:\'|$))/,null,"\"'"]],[[PR.PR_COMMENT,/^--(?:\[(=*)\[[\s\S]*?(?:\]\1\]|$)|[^\r\n]*)/],[PR.PR_STRING,/^\[(=*)\[[\s\S]*?(?:\]\1\]|$)/],[PR.PR_KEYWORD,/^(?:and|break|do|else|elseif|end|false|for|function|if|in|local|nil|not|or|repeat|return|then|true|until|while)\b/,null],[PR.PR_LITERAL,/^[+-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i],[PR.PR_PLAIN,/^[a-z_]\w*/i],[PR.PR_PUNCTUATION,/^[^\w\t\n\r \xA0][^\w\t\n\r \xA0\"\'\-\+=]*/]]),["lua"]);
+DELIMITER";
+extensions["lua"] = lua;
+string ocaml = q"DELIMITER
+PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[\t\n\r \xA0]+/,null," \n\r "],[PR.PR_COMMENT,/^#(?:if[\t\n\r \xA0]+(?:[a-z_$][\w\']*|``[^\r\n\t`]*(?:``|$))|else|endif|light)/i,null,"#"],[PR.PR_STRING,/^(?:\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)|\'(?:[^\'\\]|\\[\s\S])(?:\'|$))/,null,"\"'"]],[[PR.PR_COMMENT,/^(?:\/\/[^\r\n]*|\(\*[\s\S]*?\*\))/],[PR.PR_KEYWORD,/^(?:abstract|and|as|assert|begin|class|default|delegate|do|done|downcast|downto|elif|else|end|exception|extern|false|finally|for|fun|function|if|in|inherit|inline|interface|internal|lazy|let|match|member|module|mutable|namespace|new|null|of|open|or|override|private|public|rec|return|static|struct|then|to|true|try|type|upcast|use|val|void|when|while|with|yield|asr|land|lor|lsl|lsr|lxor|mod|sig|atomic|break|checked|component|const|constraint|constructor|continue|eager|event|external|fixed|functor|global|include|method|mixin|object|parallel|process|protected|pure|sealed|trait|virtual|volatile)\b/],[PR.PR_LITERAL,/^[+\-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i],[PR.PR_PLAIN,/^(?:[a-z_][\w']*[!?#]?|``[^\r\n\t`]*(?:``|$))/i],[PR.PR_PUNCTUATION,/^[^\t\n\r \xA0\"\'\w]+/]]),["fs","ml"]);
+DELIMITER";
+extensions["fs"] = ocaml;
+extensions["ml"] = ocaml;
---
--- css --- noWeave