1{"version":3,"sources":["../../node_modules/codemirror/mode/tiddlywiki/tiddlywiki.js"],"names":["mod","exports","module","require","define","amd","CodeMirror","defineMode","textwords","keywords","allTags","closeAll","list","newJournal","newTiddler","permaview","saveChanges","search","slider","tabs","tag","tagging","tags","tiddler","timeline","today","version","option","with","filter","isSpaceName","reHR","reWikiCommentStart","reWikiCommentStop","reBlockQuote","reJsCodeStart","reJsCodeStop","reXmlCodeStart","reXmlCodeStop","reCodeBlockStart","reCodeBlockStop","reUntilCodeStop","chain","stream","state","f","tokenize","tokenBase","sol","ch","peek","block","test","match","twTokenCode","next","skipToEnd","eatWhile","eat","twTokenComment","twTokenEm","twTokenUnderline","twTokenStrike","twTokenStrong","twTokenMacro","propertyIsEnumerable","current","maybeEnd","sb","startState","token","eatSpace","style","defineMIME"],"mappings":"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","file":"tiddlywiki.min.js","sourcesContent":["// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n/***\n |''Name''|tiddlywiki.js|\n |''Description''|Enables TiddlyWikiy syntax highlighting using CodeMirror|\n |''Author''|PMario|\n |''Version''|0.1.7|\n |''Status''|''stable''|\n |''Source''|[[GitHub|https://github.com/pmario/CodeMirror2/blob/tw-syntax/mode/tiddlywiki]]|\n |''Documentation''|https://codemirror.tiddlyspace.com/|\n |''License''|[[MIT License|http://www.opensource.org/licenses/mit-license.php]]|\n |''CoreVersion''|2.5.0|\n |''Requires''|codemirror.js|\n |''Keywords''|syntax highlighting color code mirror codemirror|\n ! Info\n CoreVersion parameter is needed for TiddlyWiki only!\n***/\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"tiddlywiki\", function () {\n // Tokenizer\n var textwords = {};\n\n var keywords = {\n \"allTags\": true, \"closeAll\": true, \"list\": true,\n \"newJournal\": true, \"newTiddler\": true,\n \"permaview\": true, \"saveChanges\": true,\n \"search\": true, \"slider\": true, \"tabs\": true,\n \"tag\": true, \"tagging\": true, \"tags\": true,\n \"tiddler\": true, \"timeline\": true,\n \"today\": true, \"version\": true, \"option\": true,\n \"with\": true, \"filter\": true\n };\n\n var isSpaceName = /[\\w_\\-]/i,\n reHR = /^\\-\\-\\-\\-+$/, // <hr>\n reWikiCommentStart = /^\\/\\*\\*\\*$/, // /***\n reWikiCommentStop = /^\\*\\*\\*\\/$/, // ***/\n reBlockQuote = /^<<<$/,\n\n reJsCodeStart = /^\\/\\/\\{\\{\\{$/, // //{{{ js block start\n reJsCodeStop = /^\\/\\/\\}\\}\\}$/, // //}}} js stop\n reXmlCodeStart = /^<!--\\{\\{\\{-->$/, // xml block start\n reXmlCodeStop = /^<!--\\}\\}\\}-->$/, // xml stop\n\n reCodeBlockStart = /^\\{\\{\\{$/, // {{{ TW text div block start\n reCodeBlockStop = /^\\}\\}\\}$/, // }}} TW text stop\n\n reUntilCodeStop = /.*?\\}\\}\\}/;\n\n function chain(stream, state, f) {\n state.tokenize = f;\n return f(stream, state);\n }\n\n function tokenBase(stream, state) {\n var sol = stream.sol(), ch = stream.peek();\n\n state.block = false; // indicates the start of a code block.\n\n // check start of blocks\n if (sol && /[<\\/\\*{}\\-]/.test(ch)) {\n if (stream.match(reCodeBlockStart)) {\n state.block = true;\n return chain(stream, state, twTokenCode);\n }\n if (stream.match(reBlockQuote))\n return 'quote';\n if (stream.match(reWikiCommentStart) || stream.match(reWikiCommentStop))\n return 'comment';\n if (stream.match(reJsCodeStart) || stream.match(reJsCodeStop) || stream.match(reXmlCodeStart) || stream.match(reXmlCodeStop))\n return 'comment';\n if (stream.match(reHR))\n return 'hr';\n }\n\n stream.next();\n if (sol && /[\\/\\*!#;:>|]/.test(ch)) {\n if (ch == \"!\") { // tw header\n stream.skipToEnd();\n return \"header\";\n }\n if (ch == \"*\") { // tw list\n stream.eatWhile('*');\n return \"comment\";\n }\n if (ch == \"#\") { // tw numbered list\n stream.eatWhile('#');\n return \"comment\";\n }\n if (ch == \";\") { // definition list, term\n stream.eatWhile(';');\n return \"comment\";\n }\n if (ch == \":\") { // definition list, description\n stream.eatWhile(':');\n return \"comment\";\n }\n if (ch == \">\") { // single line quote\n stream.eatWhile(\">\");\n return \"quote\";\n }\n if (ch == '|')\n return 'header';\n }\n\n if (ch == '{' && stream.match(/\\{\\{/))\n return chain(stream, state, twTokenCode);\n\n // rudimentary html:// file:// link matching. TW knows much more ...\n if (/[hf]/i.test(ch) &&\n /[ti]/i.test(stream.peek()) &&\n stream.match(/\\b(ttps?|tp|ile):\\/\\/[\\-A-Z0-9+&@#\\/%?=~_|$!:,.;]*[A-Z0-9+&@#\\/%=~_|$]/i))\n return \"link\";\n\n // just a little string indicator, don't want to have the whole string covered\n if (ch == '\"')\n return 'string';\n\n if (ch == '~') // _no_ CamelCase indicator should be bold\n return 'brace';\n\n if (/[\\[\\]]/.test(ch) && stream.match(ch)) // check for [[..]]\n return 'brace';\n\n if (ch == \"@\") { // check for space link. TODO fix @@...@@ highlighting\n stream.eatWhile(isSpaceName);\n return \"link\";\n }\n\n if (/\\d/.test(ch)) { // numbers\n stream.eatWhile(/\\d/);\n return \"number\";\n }\n\n if (ch == \"/\") { // tw invisible comment\n if (stream.eat(\"%\")) {\n return chain(stream, state, twTokenComment);\n } else if (stream.eat(\"/\")) { //\n return chain(stream, state, twTokenEm);\n }\n }\n\n if (ch == \"_\" && stream.eat(\"_\")) // tw underline\n return chain(stream, state, twTokenUnderline);\n\n // strikethrough and mdash handling\n if (ch == \"-\" && stream.eat(\"-\")) {\n // if strikethrough looks ugly, change CSS.\n if (stream.peek() != ' ')\n return chain(stream, state, twTokenStrike);\n // mdash\n if (stream.peek() == ' ')\n return 'brace';\n }\n\n if (ch == \"'\" && stream.eat(\"'\")) // tw bold\n return chain(stream, state, twTokenStrong);\n\n if (ch == \"<\" && stream.eat(\"<\")) // tw macro\n return chain(stream, state, twTokenMacro);\n\n // core macro handling\n stream.eatWhile(/[\\w\\$_]/);\n return textwords.propertyIsEnumerable(stream.current()) ? \"keyword\" : null\n }\n\n // tw invisible comment\n function twTokenComment(stream, state) {\n var maybeEnd = false, ch;\n while (ch = stream.next()) {\n if (ch == \"/\" && maybeEnd) {\n state.tokenize = tokenBase;\n break;\n }\n maybeEnd = (ch == \"%\");\n }\n return \"comment\";\n }\n\n // tw strong / bold\n function twTokenStrong(stream, state) {\n var maybeEnd = false,\n ch;\n while (ch = stream.next()) {\n if (ch == \"'\" && maybeEnd) {\n state.tokenize = tokenBase;\n break;\n }\n maybeEnd = (ch == \"'\");\n }\n return \"strong\";\n }\n\n // tw code\n function twTokenCode(stream, state) {\n var sb = state.block;\n\n if (sb && stream.current()) {\n return \"comment\";\n }\n\n if (!sb && stream.match(reUntilCodeStop)) {\n state.tokenize = tokenBase;\n return \"comment\";\n }\n\n if (sb && stream.sol() && stream.match(reCodeBlockStop)) {\n state.tokenize = tokenBase;\n return \"comment\";\n }\n\n stream.next();\n return \"comment\";\n }\n\n // tw em / italic\n function twTokenEm(stream, state) {\n var maybeEnd = false,\n ch;\n while (ch = stream.next()) {\n if (ch == \"/\" && maybeEnd) {\n state.tokenize = tokenBase;\n break;\n }\n maybeEnd = (ch == \"/\");\n }\n return \"em\";\n }\n\n // tw underlined text\n function twTokenUnderline(stream, state) {\n var maybeEnd = false,\n ch;\n while (ch = stream.next()) {\n if (ch == \"_\" && maybeEnd) {\n state.tokenize = tokenBase;\n break;\n }\n maybeEnd = (ch == \"_\");\n }\n return \"underlined\";\n }\n\n // tw strike through text looks ugly\n // change CSS if needed\n function twTokenStrike(stream, state) {\n var maybeEnd = false, ch;\n\n while (ch = stream.next()) {\n if (ch == \"-\" && maybeEnd) {\n state.tokenize = tokenBase;\n break;\n }\n maybeEnd = (ch == \"-\");\n }\n return \"strikethrough\";\n }\n\n // macro\n function twTokenMacro(stream, state) {\n if (stream.current() == '<<') {\n return 'macro';\n }\n\n var ch = stream.next();\n if (!ch) {\n state.tokenize = tokenBase;\n return null;\n }\n if (ch == \">\") {\n if (stream.peek() == '>') {\n stream.next();\n state.tokenize = tokenBase;\n return \"macro\";\n }\n }\n\n stream.eatWhile(/[\\w\\$_]/);\n return keywords.propertyIsEnumerable(stream.current()) ? \"keyword\" : null\n }\n\n // Interface\n return {\n startState: function () {\n return {tokenize: tokenBase};\n },\n\n token: function (stream, state) {\n if (stream.eatSpace()) return null;\n var style = state.tokenize(stream, state);\n return style;\n }\n };\n});\n\nCodeMirror.defineMIME(\"text/x-tiddlywiki\", \"tiddlywiki\");\n});\n"]}