{ "name": "Creole", "scopeName": "text.html.creole", "patterns": [ { "name": "meta.block-level.creole", "patterns": [ { "include": "#block_raw" }, { "include": "#heading" }, { "include": "#inline" } ] }, { "name": "markup.list.unnumbered.creole", "begin": "^ *([*])+(?=\\s)", "end": "^(?=\\S)", "patterns": [ { "include": "#list-paragraph" }, { "include": "#inline" } ], "captures": { "1": { "name": "punctuation.definition.list_item.creole" } } }, { "name": "markup.list.numbered.creole", "begin": "^[ ]*(#)(?=\\s)", "end": "^(?=\\S)", "patterns": [ { "include": "#list-paragraph" }, { "include": "#inline" } ], "captures": { "1": { "name": "punctuation.definition.list_item.creole" } } }, { "name": "meta.disable-markdown", "begin": "^(?=\u003c(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del)\\b)(?!.*?\u003c/\\1\u003e)", "end": "(?\u003c=^\u003c/\\1\u003e$\\n)", "patterns": [ { "include": "text.html.basic" } ] }, { "name": "meta.disable-markdown", "begin": "^(?=\u003c(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del)\\b)", "end": "$\\n?", "patterns": [ { "include": "text.html.basic" } ] }, { "name": "punctuation.definition.horizonlal-rule.creole", "match": "^ *-{4,} *$\\n?" } ], "repository": { "ampersand": { "name": "meta.other.valid-ampersand.markdown", "match": "\u0026(?!([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+);)" }, "block_raw": { "patterns": [ { "name": "markup.raw.block.creole", "begin": "^(\\{\\{\\{)\\s*$\\n?", "end": "^(\\}\\}\\})\\s*$\\n?", "captures": { "1": { "name": "punctuation.definition.raw.creole" } } } ] }, "bold": { "name": "markup.bold.creole", "begin": "(?x)\n\t\t\t\t\t\t(?\u003c!\\*|^)(\\*\\*)(?=\\S)\t\t\t\t\t\t# opening **\n\t\t\t\t\t\t(?=\t\t\t\t\t\t\t\t\t\t\t\t# zero-width positive lookahead\n\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t \u003c[^\u003e]*+\u003e\t\t\t\t\t\t# match any HTML tag\n\t\t\t\t\t\t\t | ~[\\\\*{}\\[\\]#\\|/\u003e]?+\t\t\t\t\t# or escape characters\n\t\t\t\t\t\t\t | \\[\t\t\t\t\t\t\t\t\t\t# or literal [\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t (?\u003csquare\u003e\t\t\t\t# named group\n\t\t\t\t\t\t\t\t\t\t\t[^\\[\\]~]\t\t\t\t\t# don't match these\n\t\t\t\t\t\t\t\t | ~.\t\t\t\t\t\t\t# or escaped characters\n\t\t\t\t\t\t\t\t | \\[ \\g\u003csquare\u003e*+ \\]\t# or nested group\n\t\t\t\t\t\t\t\t )*+\n\t\t\t\t\t\t\t\t\t\\]\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t | (?!(?\u003c=\\S)\\1).\t\t\t\t\t\t# or everything else\n\t\t\t\t\t\t\t)++\n\t\t\t\t\t\t\t(?\u003c=\\S)\\1\t\t\t\t\t\t\t\t# closing **\n\t\t\t\t\t\t)\t\t\t\t\t\t\t\t\t\t\t\t# close positive lookahead\n\t\t\t\t\t", "end": "(?\u003c=\\S)(\\1)", "patterns": [ { "begin": "(?=\u003c[^\u003e]*?\u003e)", "end": "(?\u003c=\u003e)", "patterns": [ { "include": "text.html.basic" } ], "applyEndPatternLast": true }, { "include": "#inline" } ], "captures": { "1": { "name": "punctuation.definition.bold.creole" } } }, "bracket": { "name": "meta.other.valid-bracket.creole", "match": "\u003c(?![a-z/?\\$!])" }, "escape": { "name": "constant.character.escape.creole", "match": "~[*#{}\\|\\[\\]\\\\/\u003e]+" }, "heading": { "name": "markup.heading.creole", "contentName": "entity.name.section.creole", "begin": "\\G(={1,6})(?!=)\\s*(?=\\S)", "end": "\\s*(=*) *$\\n?", "patterns": [ { "include": "#inline" } ], "captures": { "1": { "name": "punctuation.definition.heading.creole" } } }, "image-inline": { "name": "meta.image.inline.creole", "match": "(?x:\n\t\t\t\t(\\{\\{)\t\t\t\t\t\t# opening double curly bracket\n\t\t\t\t(\\s*[^\\s\\|]+[^\\|]+?)\t\t# the url; anything except pipe (at least 1 not whitespace)\n\t\t\t\t((\\|)\t\t\t\t\t\t# pipe separator\n\t\t\t\t(\\s*[^\\|\\s]+[^\\|]+)\t\t\t# title text\n\t\t\t\t\t)?\t\t\t\t\t\t# pipe and title are optional\n\t\t\t\t(\\}\\})\t\t\t\t\t\t# close double curly bracket (end image)\n\t\t\t )", "captures": { "1": { "name": "punctuation.definition.image.creole" }, "2": { "name": "markup.underline.link.creole" }, "4": { "name": "punctuation.definition.image.creole" }, "5": { "name": "string.other.image.title.creole" }, "6": { "name": "punctuation.definition.image.creole" } } }, "inline": { "patterns": [ { "include": "#inline_raw" }, { "include": "#link-inline" }, { "include": "#link-inet" }, { "include": "#link-email" }, { "include": "#line-break" }, { "include": "#image-inline" }, { "include": "#italic" }, { "include": "#bold" }, { "include": "#escape" }, { "include": "#bracket" }, { "include": "#ampersand" } ] }, "inline_raw": { "patterns": [ { "name": "markup.raw.inline.creole", "match": "(\\{\\{\\{).*?(\\}\\}\\})", "captures": { "1": { "name": "punctuation.definition.raw.creole" }, "2": { "name": "punctuation.definition.raw.creole" } } } ] }, "italic": { "name": "markup.italic.creole", "begin": "(?x)\n\t\t\t\t\t\t(\\/\\/)(?=\\S)\t\t\t\t\t\t\t\t\t# opening //\n\t\t\t\t\t\t(?=\t\t\t\t\t\t\t\t\t\t\t\t# zero-width positive lookahead\n\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t \u003c[^\u003e]*+\u003e\t\t\t\t\t\t# match any HTML tag\n\t\t\t\t\t\t\t | ~[\\\\*{}\\[\\]#\\|/\u003e]?+\t\t\t\t\t# or escape characters\n\t\t\t\t\t\t\t | \\[\t\t\t\t\t\t\t\t\t\t# or literal [\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t (?\u003csquare\u003e\t\t\t\t# named group\n\t\t\t\t\t\t\t\t\t\t\t[^\\[\\]~]\t\t\t\t\t# don't match these\n\t\t\t\t\t\t\t\t | ~.\t\t\t\t\t\t\t# or escaped characters\n\t\t\t\t\t\t\t\t | \\[ \\g\u003csquare\u003e*+ \\]\t# or nested group\n\t\t\t\t\t\t\t\t )*+\n\t\t\t\t\t\t\t\t\t\\]\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t | (?!(?\u003c=\\S)\\1).\t\t\t\t\t\t# or everything else\n\t\t\t\t\t\t\t)++\n\t\t\t\t\t\t\t(?\u003c=\\S)\\1\t\t\t\t\t\t\t\t# closing //\n\t\t\t\t\t\t)\t\t\t\t\t\t\t\t\t\t\t\t# close positive lookahead\n\t\t\t\t\t", "end": "(?\u003c=\\S)(\\1)((?!\\1)|(?=\\1\\1))", "patterns": [ { "begin": "(?=\u003c[^\u003e]*?\u003e)", "end": "(?\u003c=\u003e)", "patterns": [ { "include": "text.html.basic" } ], "applyEndPatternLast": true }, { "include": "#inline" } ], "captures": { "1": { "name": "punctuation.definition.italic.creole" } } }, "line-break": { "name": "punctuation.definition.line-break.creole", "match": " *(\\\\\\\\){1} *" }, "link-email": { "name": "meta.link.email.lt-gt.creole", "match": "(\u003c)((?:mailto:)?[-.\\w]+@[-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]+)(\u003e)", "captures": { "1": { "name": "invalid.illegal.punctuation.link.creole" }, "2": { "name": "markup.underline.link.creole" }, "4": { "name": "invalid.illegal.punctuation.link.creole" } } }, "link-inet": { "name": "meta.link.inet.creole", "match": "(\u003c)?((?:https?|ftp)://[^\\s\u003e]+)(\u003e)?", "captures": { "1": { "name": "invalid.illegal.punctuation.link.creole" }, "2": { "name": "markup.underline.link.creole" }, "3": { "name": "invalid.illegal.punctuation.link.creole" } } }, "link-inline": { "name": "meta.link.inline.creole", "match": "(?x:\n\t\t\t\t(\\[\\[)\t\t\t\t\t\t# opening double square bracket\n\t\t\t\t(\\s*[^\\s\\|]+[^\\|]+?)\t\t# the url; anything except pipe (at least 1 not whitespace)\n\t\t\t\t((\\|)\t\t\t\t\t\t# pipe separator\n\t\t\t\t(\\s*[^\\|\\s]+[^\\|]+)\t\t\t# title text\n\t\t\t\t\t)?\t\t\t\t\t\t# pipe and title are optional\n\t\t\t\t(\\]\\])\t\t\t\t\t\t# close double square bracket (end link)\n\t\t\t )", "captures": { "1": { "name": "punctuation.definition.link.creole" }, "2": { "name": "markup.underline.link.creole" }, "4": { "name": "punctuation.definition.link.creole" }, "5": { "name": "string.other.link.title.creole" }, "6": { "name": "punctuation.definition.link.creole" } } }, "list-paragraph": { "patterns": [ { "name": "meta.paragraph.list.creole", "begin": "\\G\\s+(?=\\S)", "end": "^\\s*$", "patterns": [ { "include": "#inline" } ] } ] } } }