{ "name": "TOML", "scopeName": "source.toml", "patterns": [ { "include": "#comments" }, { "include": "#groups" }, { "include": "#key_pair" }, { "include": "#invalid" } ], "repository": { "comments": { "begin": "(^[ \\t]+)?(?=#)", "end": "(?!\\G)", "patterns": [ { "name": "comment.line.number-sign.toml", "begin": "#", "end": "\\n", "beginCaptures": { "0": { "name": "punctuation.definition.comment.toml" } } } ], "beginCaptures": { "1": { "name": "punctuation.whitespace.comment.leading.toml" } } }, "groups": { "patterns": [ { "name": "meta.group.toml", "match": "^\\s*(\\[)([^\\[\\]]*)(\\])", "captures": { "1": { "name": "punctuation.definition.section.begin.toml" }, "2": { "patterns": [ { "name": "entity.name.section.toml", "match": "[^\\s.]+" } ] }, "3": { "name": "punctuation.definition.section.begin.toml" } } }, { "name": "meta.group.double.toml", "match": "^\\s*(\\[\\[)([^\\[\\]]*)(\\]\\])", "captures": { "1": { "name": "punctuation.definition.section.begin.toml" }, "2": { "patterns": [ { "name": "entity.name.section.toml", "match": "[^\\s.]+" } ] }, "3": { "name": "punctuation.definition.section.begin.toml" } } } ] }, "invalid": { "name": "invalid.illegal.not-allowed-here.toml", "match": "\\S+(\\s*(?=\\S))?" }, "key_pair": { "patterns": [ { "begin": "([A-Za-z0-9_-]+)\\s*(=)\\s*", "end": "(?\u003c=\\S)(?\u003c!=)|$", "patterns": [ { "include": "#primatives" } ], "captures": { "1": { "name": "variable.other.key.toml" }, "2": { "name": "punctuation.separator.key-value.toml" } } }, { "begin": "((\")(.*)(\"))\\s*(=)\\s*", "end": "(?\u003c=\\S)(?\u003c!=)|$", "patterns": [ { "include": "#primatives" } ], "captures": { "1": { "name": "variable.other.key.toml" }, "2": { "name": "punctuation.definition.variable.begin.toml" }, "3": { "patterns": [ { "name": "constant.character.escape.toml", "match": "\\\\([btnfr\"\\\\]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})" }, { "name": "invalid.illegal.escape.toml", "match": "\\\\[^btnfr\"\\\\]" }, { "name": "invalid.illegal.not-allowed-here.toml", "match": "\"" } ] }, "4": { "name": "punctuation.definition.variable.end.toml" }, "5": { "name": "punctuation.separator.key-value.toml" } } }, { "begin": "((')([^']*)('))\\s*(=)\\s*", "end": "(?\u003c=\\S)(?\u003c!=)|$", "patterns": [ { "include": "#primatives" } ], "captures": { "1": { "name": "variable.other.key.toml" }, "2": { "name": "punctuation.definition.variable.begin.toml" }, "4": { "name": "punctuation.definition.variable.end.toml" }, "5": { "name": "punctuation.separator.key-value.toml" } } }, { "begin": "(?x)\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t(?:\n\t\t\t\t\t\t\t\t\t[A-Za-z0-9_-]+\t\t\t\t# Bare key\n\t\t\t\t\t\t\t\t | \" (?:[^\"\\\\]|\\\\.)* \"\t\t# Double quoted key\n\t\t\t\t\t\t\t\t | ' [^']* '\t\t# Sindle quoted key\n\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\t\t\\s* \\. \\s*\t\t\t\t\t# Dot\n\t\t\t\t\t\t\t\t | (?= \\s* =)\t\t\t\t\t# or look-ahead for equals\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t){2,}\t\t\t\t\t\t\t\t# Ensure at least one dot\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\\s*(=)\\s*\n\t\t\t\t\t", "end": "(?\u003c=\\S)(?\u003c!=)|$", "patterns": [ { "include": "#primatives" } ], "captures": { "1": { "name": "variable.other.key.toml", "patterns": [ { "name": "punctuation.separator.variable.toml", "match": "\\." }, { "match": "(\")((?:[^\"\\\\]|\\\\.)*)(\")", "captures": { "1": { "name": "punctuation.definition.variable.begin.toml" }, "2": { "patterns": [ { "name": "constant.character.escape.toml", "match": "\\\\([btnfr\"\\\\]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})" }, { "name": "invalid.illegal.escape.toml", "match": "\\\\[^btnfr\"\\\\]" } ] }, "3": { "name": "punctuation.definition.variable.end.toml" } } }, { "match": "(')[^']*(')", "captures": { "1": { "name": "punctuation.definition.variable.begin.toml" }, "2": { "name": "punctuation.definition.variable.end.toml" } } } ] }, "3": { "name": "punctuation.separator.key-value.toml" } } } ] }, "primatives": { "patterns": [ { "name": "string.quoted.triple.double.toml", "begin": "\\G\"\"\"", "end": "\"\"\"", "patterns": [ { "name": "constant.character.escape.toml", "match": "\\\\([btnfr\"\\\\]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})" }, { "name": "invalid.illegal.escape.toml", "match": "\\\\[^btnfr\"\\\\\\n]" } ], "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.toml" } }, "endCaptures": { "0": { "name": "punctuation.definition.string.end.toml" } } }, { "name": "string.quoted.double.toml", "begin": "\\G\"", "end": "\"", "patterns": [ { "name": "constant.character.escape.toml", "match": "\\\\([btnfr\"\\\\]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})" }, { "name": "invalid.illegal.escape.toml", "match": "\\\\[^btnfr\"\\\\]" } ], "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.toml" } }, "endCaptures": { "0": { "name": "punctuation.definition.string.end.toml" } } }, { "name": "string.quoted.triple.single.toml", "begin": "\\G'''", "end": "'''", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.toml" } }, "endCaptures": { "0": { "name": "punctuation.definition.string.end.toml" } } }, { "name": "string.quoted.single.toml", "begin": "\\G'", "end": "'", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.toml" } }, "endCaptures": { "0": { "name": "punctuation.definition.string.end.toml" } } }, { "name": "constant.other.date.toml", "match": "\\G(?x)\n\t\t\t\t\t\t[0-9]{4}\n\t\t\t\t\t\t-\n\t\t\t\t\t\t(0[1-9]|1[012])\n\t\t\t\t\t\t-\n\t\t\t\t\t\t(?!00|3[2-9])[0-3][0-9]\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t[Tt]\n\t\t\t\t\t\t\t(?!2[5-9])[0-2][0-9]\n\t\t\t\t\t\t\t:\n\t\t\t\t\t\t\t[0-5][0-9]\n\t\t\t\t\t\t\t:\n\t\t\t\t\t\t\t(?!6[1-9])[0-6][0-9]\n\t\t\t\t\t\t\t(\\.[0-9]+)?\n\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\tZ\n\t\t\t\t\t\t\t | [+-](?!2[5-9])[0-2][0-9]:[0-5][0-9]\n\t\t\t\t\t\t\t)?\n\t\t\t\t\t\t)?\n\t\t\t\t\t" }, { "name": "constant.language.boolean.toml", "match": "\\G(true|false)" }, { "name": "constant.numeric.hex.toml", "match": "\\G0x[[:xdigit:]]([[:xdigit:]]|_[[:xdigit:]])*" }, { "name": "constant.numeric.octal.toml", "match": "\\G0o[0-7]([0-7]|_[0-7])*" }, { "name": "constant.numeric.binary.toml", "match": "\\G0b[01]([01]|_[01])*" }, { "name": "constant.numeric.toml", "match": "\\G[+-]?(inf|nan)" }, { "name": "constant.numeric.float.toml", "match": "(?x)\n\t\t\t\t\t\t\\G\n\t\t\t\t\t\t(\n\t\t\t\t\t\t [+-]?\n\t\t\t\t\t\t (\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t | ([1-9](([0-9]|_[0-9])+)?)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t(?=[.eE])\n\t\t\t\t\t\t(\n\t\t\t\t\t\t \\.\n\t\t\t\t\t\t ([0-9](([0-9]|_[0-9])+)?)\n\t\t\t\t\t\t)?\n\t\t\t\t\t\t(\n\t\t\t\t\t\t [eE]\n\t\t\t\t\t\t ([+-]?(0|([1-9](([0-9]|_[0-9])+)?)))\n\t\t\t\t\t\t)?\n\t\t\t\t\t" }, { "name": "constant.numeric.integer.toml", "match": "(?x)\n\t\t\t\t\t\t\\G\n\t\t\t\t\t\t(\n\t\t\t\t\t\t [+-]?\n\t\t\t\t\t\t (\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t | ([1-9](([0-9]|_[0-9])+)?)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t" }, { "name": "meta.array.toml", "begin": "\\G\\[", "end": "\\]", "patterns": [ { "begin": "(?=[\"'']|[+-]?[0-9]|[+-]?(inf|nan)|true|false|\\[|\\{)", "end": ",|(?=])", "patterns": [ { "include": "#primatives" }, { "include": "#comments" }, { "include": "#invalid" } ], "endCaptures": { "0": { "name": "punctuation.separator.array.toml" } } }, { "include": "#comments" }, { "include": "#invalid" } ], "beginCaptures": { "0": { "name": "punctuation.definition.array.begin.toml" } }, "endCaptures": { "0": { "name": "punctuation.definition.array.end.toml" } } }, { "name": "meta.inline-table.toml", "begin": "\\G\\{", "end": "\\}", "patterns": [ { "begin": "(?=\\S)", "end": ",|(?=})", "patterns": [ { "include": "#key_pair" } ], "endCaptures": { "0": { "name": "punctuation.separator.inline-table.toml" } } }, { "include": "#comments" } ], "beginCaptures": { "0": { "name": "punctuation.definition.inline-table.begin.toml" } }, "endCaptures": { "0": { "name": "punctuation.definition.inline-table.end.toml" } } } ] } } }