{ "information_for_contributors": [ "This file has been converted from https://github.com/RedCMD/YAML-Syntax-Highlighter/blob/master/syntaxes/yaml-1.1.tmLanguage.json", "If you want to provide a fix or improvement, please create a pull request against the original repository.", "Once accepted there, we are happy to receive an update request." ], "version": "https://github.com/RedCMD/YAML-Syntax-Highlighter/commit/dfd7e5f4f71f9695c5d8697ca57f81240165aa04", "name": "YAML 1.1", "scopeName": "source.yaml.1.1", "comment": "https://yaml.org/spec/1.1/", "patterns": [ { "include": "#stream" } ], "repository": { "stream": { "patterns": [ { "comment": "allows me to just use `\\G` instead of the performance heavy `(^|\\G)`", "begin": "^(?!\\G)", "while": "^", "name": "meta.stream.yaml", "patterns": [ { "include": "#byte-order-mark" }, { "include": "#directives" }, { "include": "#document" }, { "include": "#presentation-detail" } ] }, { "begin": "\\G", "while": "\\G", "name": "meta.stream.yaml", "patterns": [ { "include": "#byte-order-mark" }, { "include": "#directives" }, { "include": "#document" }, { "include": "#presentation-detail" } ] } ] }, "directive-YAML": { "comment": "https://yaml.org/spec/1.2.2/#681-yaml-directives", "begin": "(?=%YAML[ \t]+1\\.1(?=[\\x{85 2028 2029}\r\n\t ]))", "end": "\\G(?=%(?!YAML[ \t]+1\\.1))", "name": "meta.1.1.yaml", "patterns": [ { "comment": "https://yaml.org/spec/1.2.2/#681-yaml-directives", "begin": "\\G(%)(YAML)([ \t]+)(1\\.1)", "while": "\\G(?!---[\\x{85 2028 2029}\r\n\t ])", "beginCaptures": { "1": { "name": "punctuation.definition.directive.begin.yaml" }, "2": { "name": "keyword.other.directive.yaml.yaml" }, "3": { "name": "punctuation.whitespace.separator.yaml" }, "4": { "name": "constant.numeric.yaml-version.yaml" } }, "name": "meta.directives.yaml", "patterns": [ { "include": "#directive-invalid" }, { "include": "#directives" }, { "include": "#presentation-detail" } ] }, { "begin": "\\G(?=---[\\x{85 2028 2029}\r\n\t ])", "while": "\\G(?!%)", "patterns": [ { "include": "#document" }, { "include": "#presentation-detail" } ] }, { "include": "#presentation-detail" } ] }, "directives": { "comment": "https://yaml.org/spec/1.2.2/#68-directives", "patterns": [ { "include": "source.yaml.1.3#directive-YAML" }, { "include": "source.yaml.1.2#directive-YAML" }, { "include": "source.yaml.1.1#directive-YAML" }, { "include": "source.yaml.1.0#directive-YAML" }, { "begin": "(?=%)", "while": "\\G(?!%|---[\\x{85 2028 2029}\r\n\t ])", "name": "meta.directives.yaml", "patterns": [ { "comment": "https://yaml.org/spec/1.2.2/#682-tag-directives", "begin": "\\G(%)(TAG)(?>([\t ]++)((!)(?>[0-9A-Za-z-]*+(!))?+))?+", "end": "$", "applyEndPatternLast": true, "beginCaptures": { "1": { "name": "punctuation.definition.directive.begin.yaml" }, "2": { "name": "keyword.other.directive.tag.yaml" }, "3": { "name": "punctuation.whitespace.separator.yaml" }, "4": { "name": "storage.type.tag-handle.yaml" }, "5": { "name": "punctuation.definition.tag.begin.yaml" }, "6": { "name": "punctuation.definition.tag.end.yaml" }, "comment": "https://yaml.org/spec/1.2.2/#rule-c-tag-handle" }, "patterns": [ { "comment": "technically the beginning should only validate against a valid uri scheme [A-Za-z][A-Za-z0-9.+-]*", "begin": "\\G[\t ]++(?!#)", "end": "(?=[\\x{85 2028 2029}\r\n\t ])", "beginCaptures": { "0": { "name": "punctuation.whitespace.separator.yaml" } }, "contentName": "support.type.tag-prefix.yaml", "patterns": [ { "match": "%[0-9a-fA-F]{2}", "name": "constant.character.escape.unicode.8-bit.yaml" }, { "match": "%[^\\x{85 2028 2029}\r\n\t ]{2,0}", "name": "invalid.illegal.constant.character.escape.unicode.8-bit.yaml" }, { "match": "\\G[,\\[\\]{}]", "name": "invalid.illegal.character.uri.yaml" }, { "include": "source.yaml#non-printable" }, { "match": "[^\\x{85 2028 2029}\r\n\t a-zA-Z0-9-#;/?:@&=+$,_.!~*'()\\[\\]]++", "name": "invalid.illegal.unrecognized.yaml" } ] }, { "include": "#presentation-detail" } ] }, { "comment": "https://yaml.org/spec/1.2.2/#rule-ns-reserved-directive", "begin": "(%)([^ \\p{Cntrl}\\p{Surrogate}\\x{2028 2029 FFFE FFFF}]++)", "end": "$", "beginCaptures": { "1": { "name": "punctuation.definition.directive.begin.yaml" }, "2": { "name": "keyword.other.directive.other.yaml" } }, "patterns": [ { "match": "\\G([\t ]++)([^ \\p{Cntrl}\\p{Surrogate}\\x{2028 2029 FFFE FFFF}]++)", "captures": { "1": { "name": "punctuation.whitespace.separator.yaml" }, "2": { "name": "string.unquoted.directive-name.yaml" } } }, { "match": "([\t ]++)([^ \\p{Cntrl}\\p{Surrogate}\\x{2028 2029 FFFE FFFF}]++)", "captures": { "1": { "name": "punctuation.whitespace.separator.yaml" }, "2": { "name": "string.unquoted.directive-parameter.yaml" } } }, { "include": "#presentation-detail" } ] }, { "match": "\\G\\.{3}(?=[\\x{85 2028 2029}\r\n\t ])", "name": "invalid.illegal.entity.other.document.end.yaml" }, { "include": "#presentation-detail" } ] } ] }, "directive-invalid": { "patterns": [ { "match": "\\G\\.{3}(?=[\\x{85 2028 2029}\r\n\t ])", "name": "invalid.illegal.entity.other.document.end.yaml" }, { "begin": "\\G(%)(YAML)", "end": "$", "beginCaptures": { "1": { "name": "punctuation.definition.directive.begin.yaml" }, "2": { "name": "invalid.illegal.keyword.other.directive.yaml.yaml" } }, "name": "meta.directive.yaml", "patterns": [ { "match": "\\G([\t ]++|:)([0-9]++\\.[0-9]++)?+", "captures": { "1": { "name": "punctuation.whitespace.separator.yaml" }, "2": { "name": "constant.numeric.yaml-version.yaml" } } }, { "include": "#presentation-detail" } ] } ] }, "document": { "comment": "https://yaml.org/spec/1.2.2/#91-documents", "patterns": [ { "begin": "---(?=[\\x{85 2028 2029}\r\n\t ])", "while": "\\G(?!(?>\\.{3}|---)[\\x{85 2028 2029}\r\n\t ])", "beginCaptures": { "0": { "name": "entity.other.document.begin.yaml" } }, "name": "meta.document.yaml", "patterns": [ { "include": "#block-node" } ] }, { "begin": "(?=\\.{3}[\\x{85 2028 2029}\r\n\t ])", "while": "\\G(?=[\t \\x{FEFF}]*+(?>#|$))", "patterns": [ { "begin": "\\G\\.{3}", "end": "$", "beginCaptures": { "0": { "name": "entity.other.document.end.yaml" } }, "patterns": [ { "include": "#presentation-detail" } ] }, { "include": "#byte-order-mark" }, { "include": "#presentation-detail" } ] }, { "begin": "\\G(?!%|[\t \\x{FEFF}]*+(?>#|$))", "while": "\\G(?!(?>\\.{3}|---)[\\x{85 2028 2029}\r\n\t ])", "name": "meta.document.yaml", "patterns": [ { "include": "#block-node" } ] } ] }, "block-node": { "patterns": [ { "include": "#block-sequence" }, { "include": "#block-mapping" }, { "include": "source.yaml.1.2#block-scalar" }, { "include": "#anchor-property" }, { "include": "#tag-property" }, { "include": "#alias" }, { "begin": "(?=\"|')", "while": "\\G", "patterns": [ { "begin": "(?!\\G)", "while": "\\G", "patterns": [ { "include": "#presentation-detail" } ] }, { "include": "#double" }, { "include": "#single" } ] }, { "begin": "(?={)", "end": "$", "patterns": [ { "include": "#flow-mapping" }, { "include": "#presentation-detail" } ] }, { "begin": "(?=\\[)", "end": "$", "patterns": [ { "include": "#flow-sequence" }, { "include": "#presentation-detail" } ] }, { "include": "#block-plain-out" }, { "include": "#presentation-detail" } ] }, "block-mapping": { "//": "The check for plain keys is expensive", "begin": "(?=((?<=[-?:]) )?+)(?[!&*][^\\x{85 2028 2029}\r\n\t ]*+[\t ]++)*+)(?=(?>(?#Double Quote)\"(?>[^\\\\\"]++|\\\\.)*+\"|(?#Single Quote)'(?>[^']++|'')*+'|(?#Flow-Map){(?>[^\\x{85 2028 2029}}]++|}[ \t]*+(?!:[\\x{85 2028 2029}\r\n\t ]))++}|(?#Flow-Seq)\\[(?>[^\\x{85 2028 2029}\\]]++|][ \t]*+(?!:[\\x{85 2028 2029}\r\n\t ]))++]|(?#Plain)(?>[^-?:,\\[\\]{}#&*!|>'\"%@` \\p{Cntrl}\\p{Surrogate}\\x{FFFE FFFF}]|[?:-](?![\\x{85 2028 2029}\r\n\t ]))(?>[^:#]++|:(?![\\x{85 2028 2029}\r\n\t ])|(?(\\1\\2)((?>[!&*][^\\x{85 2028 2029}\r\n\t ]*+[\t ]++)*+)((?>\t[\t ]*+)?+[^\\x{85 2028 2029}\r\n\t ?:\\-#!&*\"'\\[\\]{}0-9A-Za-z$()+./;<=\\\\^_~\\x{A0}-\\x{D7FF}\\x{E000}-\\x{FFFD}\\x{010000}-\\x{10FFFF}])?+|( *+)([\t ]*+[^\\x{85 2028 2029}\r\n#])?+)", "beginCaptures": { "2": { "name": "punctuation.whitespace.indentation.yaml" }, "3": { "name": "punctuation.whitespace.separator.yaml" }, "4": { "comment": "May cause lag on long lines starting with a tag, anchor or alias", "patterns": [ { "include": "#tag-property" }, { "include": "#anchor-property" }, { "include": "#alias" }, { "include": "#presentation-detail" } ] } }, "whileCaptures": { "1": { "name": "punctuation.whitespace.indentation.yaml" }, "2": { "comment": "May cause lag on long lines starting with a tag, anchor or alias", "patterns": [ { "include": "#tag-property" }, { "include": "#anchor-property" }, { "include": "#alias" }, { "include": "#presentation-detail" } ] }, "3": { "name": "invalid.illegal.expected-indentation.yaml" }, "4": { "name": "punctuation.whitespace.indentation.yaml" }, "5": { "name": "invalid.illegal.expected-indentation.yaml" } }, "name": "meta.mapping.yaml", "patterns": [ { "include": "#block-map-key-double" }, { "include": "source.yaml#block-map-key-single" }, { "include": "#block-map-key-plain" }, { "include": "#block-map-key-explicit" }, { "include": "#block-map-value" }, { "include": "#flow-mapping" }, { "include": "#flow-sequence" }, { "include": "#presentation-detail" } ] }, "block-sequence": { "comment": "https://yaml.org/spec/1.2.2/#rule-l+block-sequence", "begin": "(?=((?<=[-?:]) )?+)(?(\\1\\2)(?!-[\\x{85 2028 2029}\r\n\t ])((?>\t[\t ]*+)?+[^\\x{85 2028 2029}\r\n\t #\\]}])?+|(?!\\1\\2)( *+)([\t ]*+[^\\x{85 2028 2029}\r\n#])?+)", "beginCaptures": { "2": { "name": "punctuation.whitespace.indentation.yaml" }, "3": { "name": "punctuation.definition.block.sequence.item.yaml" } }, "whileCaptures": { "1": { "name": "punctuation.whitespace.indentation.yaml" }, "2": { "name": "invalid.illegal.expected-indentation.yaml" }, "3": { "name": "punctuation.whitespace.indentation.yaml" }, "4": { "name": "invalid.illegal.expected-indentation.yaml" } }, "name": "meta.block.sequence.yaml", "patterns": [ { "include": "#block-node" } ] }, "block-map-key-explicit": { "comment": "https://yaml.org/spec/1.2.2/#rule-c-l-block-map-explicit-key", "begin": "(?=((?<=[-?:]) )?+)\\G( *+)(\\?)(?=[\\x{85 2028 2029}\r\n\t ])", "while": "\\G(?>(\\1\\2)(?![?:0-9A-Za-z$()+./;<=\\\\^_~\\x{A0}-\\x{D7FF}\\x{E000}-\\x{FFFD}\\x{010000}-\\x{10FFFF}&&[^\\x{2028 2029}]])((?>\t[\t ]*+)?+[^\\x{85 2028 2029}\r\n\t #\\-\\[\\]{}])?+|(?!\\1\\2)( *+)([\t ]*+[^\\x{85 2028 2029}\r\n#])?+)", "beginCaptures": { "2": { "name": "punctuation.whitespace.indentation.yaml" }, "3": { "name": "punctuation.definition.map.key.yaml" }, "4": { "name": "punctuation.whitespace.separator.yaml" } }, "whileCaptures": { "1": { "name": "punctuation.whitespace.indentation.yaml" }, "2": { "name": "invalid.illegal.expected-indentation.yaml" }, "3": { "name": "punctuation.whitespace.indentation.yaml" }, "4": { "name": "invalid.illegal.expected-indentation.yaml" } }, "name": "meta.map.explicit.yaml", "patterns": [ { "include": "#key-double" }, { "include": "source.yaml#key-single" }, { "include": "#flow-key-plain-out" }, { "include": "#block-map-value" }, { "include": "#block-node" } ] }, "block-map-key-double": { "comment": "https://yaml.org/spec/1.2.2/#double-quoted-style (BLOCK-KEY)", "begin": "\\G\"", "end": "\"", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.yaml" } }, "endCaptures": { "0": { "name": "punctuation.definition.string.end.yaml" } }, "name": "meta.map.key.yaml string.quoted.double.yaml entity.name.tag.yaml", "patterns": [ { "match": ".[\t ]*+$", "name": "invalid.illegal.multiline-key.yaml" }, { "match": "[^\t -\\x{10FFFF}]++", "name": "invalid.illegal.character.yaml" }, { "include": "#double-escape" } ] }, "block-map-key-plain": { "comment": "https://yaml.org/spec/1.2.2/#rule-ns-plain-one-line (BLOCK-KEY)", "begin": "\\G(?=[^-?:,\\[\\]{}#&*!|>'\"%@` \\p{Cntrl}\\p{Surrogate}\\x{FFFE FFFF}]|[?:-](?![\\x{85 2028 2029}\r\n\t ]))", "end": "(?=[\t ]*+:[\\x{85 2028 2029}\r\n\t ]|(?>[\t ]++|\\G)#)", "name": "meta.map.key.yaml string.unquoted.plain.yaml entity.name.tag.yaml", "patterns": [ { "include": "#tag-implicit-plain-out" }, { "match": "\\G([\t ]++)(.)", "captures": { "1": { "name": "punctuation.whitespace.separator.yaml" }, "2": { "name": "invalid.illegal.multiline-key.yaml" } } }, { "match": "[\t ]++$", "name": "punctuation.whitespace.separator.yaml" }, { "include": "source.yaml#non-printable" } ] }, "block-map-value": { "comment": "https://yaml.org/spec/1.2.2/#rule-c-l-block-map-implicit-value", "//": "Assumming 3rd party preprocessing variables `{{...}}` turn into valid map-keys when inside a block-mapping", "begin": ":(?=[\\x{85 2028 2029}\r\n\t ])|(?<=}})(?=[\t ]++#|[\t ]*+$)", "while": "\\G(?![?:!\"'0-9A-Za-z$()+./;<=\\\\^_~\\[{\\x{A0}-\\x{D7FF}\\x{E000}-\\x{FFFD}\\x{010000}-\\x{10FFFF}&&[^\\x{2028 2029}]]|-[^\\x{85 2028 2029}\r\n\t ])", "beginCaptures": { "0": { "name": "punctuation.separator.map.value.yaml" } }, "name": "meta.map.value.yaml", "patterns": [ { "include": "#block-node" } ] }, "block-plain-out": { "comment": "https://yaml.org/spec/1.2.2/#rule-ns-plain-multi-line (FLOW-OUT)", "begin": "(?=[^-?:,\\[\\]{}#&*!|>'\"%@` \\p{Cntrl}\\p{Surrogate}\\x{FFFE FFFF}]|[?:-](?![\\x{85 2028 2029}\r\n\t ]))", "while": "\\G", "patterns": [ { "begin": "\\G", "end": "(?=(?>[\t ]++|\\G)#)", "name": "string.unquoted.plain.out.yaml", "patterns": [ { "include": "#tag-implicit-plain-out" }, { "match": ":(?=[\\x{85 2028 2029}\r\n\t ])", "name": "invalid.illegal.multiline-key.yaml" }, { "match": "\\G[\t ]++", "name": "punctuation.whitespace.separator.yaml" }, { "match": "[\t ]++$", "name": "punctuation.whitespace.separator.yaml" }, { "include": "source.yaml#non-printable" } ] }, { "begin": "(?!\\G)", "while": "\\G", "patterns": [ { "include": "#presentation-detail" } ] } ] }, "flow-node": { "comment": "https://yaml.org/spec/1.2.2/#rule-ns-flow-seq-entry (FLOW-IN)", "patterns": [ { "begin": "(?=\\[|{)", "end": "(?=[:,\\]}])", "patterns": [ { "begin": "(?!\\G)", "end": "(?=[:,\\]}])", "patterns": [ { "include": "#presentation-detail" } ] }, { "include": "#flow-mapping" }, { "include": "#flow-sequence" } ] }, { "include": "#anchor-property" }, { "include": "#tag-property" }, { "include": "#alias" }, { "begin": "(?=\"|')", "end": "(?=[:,\\]}])", "patterns": [ { "begin": "(?!\\G)", "end": "(?=[:,\\]}])", "patterns": [ { "include": "#presentation-detail" } ] }, { "include": "#double" }, { "include": "#single" } ] }, { "include": "#flow-plain-in" }, { "include": "#presentation-detail" } ] }, "flow-mapping": { "comment": "https://yaml.org/spec/1.2.2/#742-flow-mappings", "begin": "{", "end": "}", "beginCaptures": { "0": { "name": "punctuation.definition.mapping.begin.yaml" } }, "endCaptures": { "0": { "name": "punctuation.definition.mapping.end.yaml" } }, "name": "meta.flow.mapping.yaml", "patterns": [ { "comment": "https://yaml.org/spec/1.2.2/#rule-ns-s-flow-map-entries", "begin": "(?<={)\\G(?=[\\x{85 2028 2029}\r\n\t ,#])|,", "end": "(?=[^\\x{85 2028 2029}\r\n\t ,#])", "beginCaptures": { "0": { "name": "punctuation.separator.mapping.yaml" } }, "patterns": [ { "match": ",++", "name": "invalid.illegal.separator.sequence.yaml" }, { "include": "#presentation-detail" } ] }, { "include": "#flow-mapping-map-key" }, { "include": "#flow-map-value-yaml" }, { "include": "#flow-map-value-json" }, { "include": "#flow-node" } ] }, "flow-sequence": { "comment": "https://yaml.org/spec/1.2.2/#741-flow-sequences", "begin": "\\[", "end": "]", "beginCaptures": { "0": { "name": "punctuation.definition.sequence.begin.yaml" } }, "endCaptures": { "0": { "name": "punctuation.definition.sequence.end.yaml" } }, "name": "meta.flow.sequence.yaml", "patterns": [ { "comment": "https://yaml.org/spec/1.2.2/#rule-ns-s-flow-seq-entries", "begin": "(?<=\\[)\\G(?=[\\x{85 2028 2029}\r\n\t ,#])|,", "end": "(?=[^\\x{85 2028 2029}\r\n\t ,#])", "beginCaptures": { "0": { "name": "punctuation.separator.sequence.yaml" } }, "patterns": [ { "match": ",++", "name": "invalid.illegal.separator.sequence.yaml" }, { "include": "#presentation-detail" } ] }, { "include": "#flow-sequence-map-key" }, { "include": "#flow-map-value-yaml" }, { "include": "#flow-map-value-json" }, { "include": "#flow-node" } ] }, "flow-mapping-map-key": { "comment": "https://yaml.org/spec/1.2.2/#rule-ns-flow-map-entry (FLOW-IN)", "patterns": [ { "begin": "\\?(?=[\\x{85 2028 2029}\r\n\t ,\\[\\]{}])", "end": "(?=[,\\[\\]{}])", "beginCaptures": { "0": { "name": "punctuation.definition.map.key.yaml" } }, "name": "meta.flow.map.explicit.yaml", "patterns": [ { "include": "#flow-mapping-map-key" }, { "include": "#flow-map-value-yaml" }, { "include": "#flow-map-value-json" }, { "include": "#flow-node" } ] }, { "comment": "https://yaml.org/spec/1.2.2/#rule-ns-flow-map-implicit-entry (FLOW-IN)", "begin": "(?=(?>[^-?:,\\[\\]{}#&*!|>'\"%@` \\p{Cntrl}\\p{Surrogate}\\x{FFFE FFFF}]|[?:-](?![\\x{85 2028 2029}\r\n\t ,\\[\\]{}])))", "end": "(?=[,\\[\\]{}])", "name": "meta.flow.map.implicit.yaml", "patterns": [ { "include": "#flow-key-plain-in" }, { "match": ":(?=\\[|{)", "name": "invalid.illegal.separator.map.yaml" }, { "include": "#flow-map-value-yaml" }, { "include": "#presentation-detail" } ] }, { "comment": "https://yaml.org/spec/1.2.2/#rule-ns-flow-map-implicit-entry (FLOW-IN)", "begin": "(?=\"|')", "end": "(?=[,\\[\\]{}])", "name": "meta.flow.map.implicit.yaml", "patterns": [ { "include": "#key-double" }, { "include": "source.yaml#key-single" }, { "include": "#flow-map-value-json" }, { "include": "#presentation-detail" } ] } ] }, "flow-sequence-map-key": { "comment": "https://yaml.org/spec/1.2.2/#rule-ns-flow-map-entry (FLOW-IN)", "patterns": [ { "begin": "\\?(?=[\\x{85 2028 2029}\r\n\t ,\\[\\]{}])", "end": "(?=[,\\[\\]{}])", "beginCaptures": { "0": { "name": "punctuation.definition.map.key.yaml" } }, "name": "meta.flow.map.explicit.yaml", "patterns": [ { "include": "#flow-mapping-map-key" }, { "include": "#flow-map-value-yaml" }, { "include": "#flow-map-value-json" }, { "include": "#flow-node" } ] }, { "comment": "https://yaml.org/spec/1.2.2/#rule-ns-flow-map-implicit-entry (FLOW-IN)", "begin": "(?<=[\t ,\\[{]|^)(?=(?>[^-?:,\\[\\]{}#&*!|>'\"%@` \\p{Cntrl}\\p{Surrogate}\\x{FFFE FFFF}]|[?:-](?![\\x{85 2028 2029}\r\n\t ,\\[\\]{}]))(?>[^:#,\\[\\]{}]++|:(?![\\x{85 2028 2029}\r\n\t ,\\[\\]{}])|(?\"(?>[^\\\\\"]++|\\\\.)*+\"|'(?>[^']++|'')*+')[\t ]*+:)", "end": "(?=[,\\[\\]{}])", "name": "meta.flow.map.implicit.yaml", "patterns": [ { "include": "#key-double" }, { "include": "source.yaml#key-single" }, { "include": "#flow-map-value-json" }, { "include": "#presentation-detail" } ] } ] }, "flow-map-value-yaml": { "comment": "https://yaml.org/spec/1.2.2/#rule-c-ns-flow-map-separate-value (FLOW-IN)", "begin": ":(?=[\\x{85 2028 2029}\r\n\t ,\\[\\]{}])", "end": "(?=[,\\]}])", "beginCaptures": { "0": { "name": "punctuation.separator.map.value.yaml" } }, "name": "meta.flow.pair.value.yaml", "patterns": [ { "include": "#flow-node" } ] }, "flow-map-value-json": { "comment": "https://yaml.org/spec/1.2.2/#rule-c-ns-flow-map-separate-value (FLOW-IN)", "begin": "(?<=(?>[\"'\\]}]|^)[\t ]*+):", "end": "(?=[,\\]}])", "beginCaptures": { "0": { "name": "punctuation.separator.map.value.yaml" } }, "name": "meta.flow.pair.value.yaml", "patterns": [ { "include": "#flow-node" } ] }, "flow-plain-in": { "comment": "https://yaml.org/spec/1.2.2/#rule-ns-plain-multi-line (FLOW-IN)", "begin": "(?=[^-?:,\\[\\]{}#&*!|>'\"%@` \\p{Cntrl}\\p{Surrogate}\\x{FFFE FFFF}]|[?:-](?![\\x{85 2028 2029}\r\n\t ,\\[\\]{}]))", "end": "(?=(?>[\t ]++|\\G)#|[\t ]*+[,\\[\\]{}])", "name": "string.unquoted.plain.in.yaml", "patterns": [ { "include": "#tag-implicit-plain-in" }, { "match": "\\G[\t ]++", "name": "punctuation.whitespace.separator.yaml" }, { "match": "[\t ]++$", "name": "punctuation.whitespace.separator.yaml" }, { "match": ":(?=[\\x{85 2028 2029}\r\n\t ,\\[\\]{}])", "name": "invalid.illegal.multiline-key.yaml" }, { "include": "source.yaml#non-printable" } ] }, "flow-key-plain-out": { "comment": "https://yaml.org/spec/1.2.2/#rule-ns-plain-one-line (FLOW-OUT)", "begin": "(?=[^-?:,\\[\\]{}#&*!|>'\"%@` \\p{Cntrl}\\p{Surrogate}\\x{FFFE FFFF}]|[?:-](?![\\x{85 2028 2029}\r\n\t ]))", "end": "(?=[\t ]*+:[\\x{85 2028 2029}\r\n\t ]|[\t ]++#)", "name": "meta.map.key.yaml string.unquoted.plain.yaml entity.name.tag.yaml", "patterns": [ { "include": "#tag-implicit-plain-out" }, { "match": "\\G[\t ]++", "name": "punctuation.whitespace.separator.yaml" }, { "match": "[\t ]++$", "name": "punctuation.whitespace.separator.yaml" }, { "include": "source.yaml#non-printable" } ] }, "flow-key-plain-in": { "comment": "https://yaml.org/spec/1.2.2/#rule-ns-s-implicit-yaml-key (FLOW-KEY)", "begin": "\\G(?![\\x{85 2028 2029}\r\n\t #])", "end": "(?=[\t ]*+(?>:[\\x{85 2028 2029}\r\n\t ,\\[\\]{}]|[,\\[\\]{}])|[\t ]++#)", "name": "meta.flow.map.key.yaml string.unquoted.plain.in.yaml entity.name.tag.yaml", "patterns": [ { "include": "#tag-implicit-plain-in" }, { "include": "source.yaml#non-printable" } ] }, "key-double": { "comment": "https://yaml.org/spec/1.2.2/#double-quoted-style (FLOW-OUT)", "begin": "\"", "end": "\"", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.yaml" } }, "endCaptures": { "0": { "name": "punctuation.definition.string.end.yaml" } }, "name": "meta.map.key.yaml string.quoted.double.yaml entity.name.tag.yaml", "patterns": [ { "match": "[^\t -\\x{10FFFF}]++", "name": "invalid.illegal.character.yaml" }, { "include": "#double-escape" } ] }, "double": { "comment": "https://yaml.org/spec/1.2.2/#double-quoted-style", "begin": "\"", "end": "\"", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.yaml" } }, "endCaptures": { "0": { "name": "punctuation.definition.string.end.yaml" } }, "name": "string.quoted.double.yaml", "patterns": [ { "match": "(?x[^\"]{2,0}|u[^\"]{4,0}|U[^\"]{8,0}|.)", "name": "invalid.illegal.constant.character.escape.yaml" } ] }, "tag-implicit-plain-in": { "comment": "https://yaml.org/type/index.html", "patterns": [ { "match": "\\G(?>null|Null|NULL|~)(?=[\t ]++#|[\t ]*+(?>[\\x{85 2028 2029}\r\n,\\]}]|:[\\x{85 2028 2029}\r\n\t ,\\[\\]{}]))", "name": "constant.language.null.yaml" }, { "match": "\\G(?>true|True|TRUE|false|False|FALSE|y|Y|yes|Yes|YES|n|N|no|No|NO|on|On|ON|off|Off|OFF)(?=[\t ]++#|[\t ]*+(?>[\\x{85 2028 2029}\r\n,\\]}]|:[\\x{85 2028 2029}\r\n\t ,\\[\\]{}]))", "name": "constant.language.boolean.yaml" }, { "match": "\\G[-+]?+(0|[1-9][0-9_]*+)(?=[\t ]++#|[\t ]*+(?>[\\x{85 2028 2029}\r\n,\\]}]|:[\\x{85 2028 2029}\r\n\t ,\\[\\]{}]))", "name": "constant.numeric.integer.decimal.yaml" }, { "match": "\\G[-+]?+0b[0-1_]++(?=[\t ]++#|[\t ]*+(?>[\\x{85 2028 2029}\r\n,\\]}]|:[\\x{85 2028 2029}\r\n\t ,\\[\\]{}]))", "name": "constant.numeric.integer.binary.yaml" }, { "match": "\\G[-+]?0[0-7_]++(?=[\t ]++#|[\t ]*+(?>[\\x{85 2028 2029}\r\n,\\]}]|:[\\x{85 2028 2029}\r\n\t ,\\[\\]{}]))", "name": "constant.numeric.integer.octal.yaml" }, { "match": "\\G[-+]?+0x[0-9a-fA-F_]++(?=[\t ]++#|[\t ]*+(?>[\\x{85 2028 2029}\r\n,\\]}]|:[\\x{85 2028 2029}\r\n\t ,\\[\\]{}]))", "name": "constant.numeric.integer.hexadecimal.yaml" }, { "match": "\\G[-+]?+[1-9][0-9_]*+(?>:[0-5]?[0-9])++(?=[\t ]++#|[\t ]*+(?>[\\x{85 2028 2029}\r\n,\\]}]|:[\\x{85 2028 2029}\r\n\t ,\\[\\]{}]))", "name": "constant.numeric.integer.Sexagesimal.yaml" }, { "match": "\\G[-+]?+(?>[0-9][0-9_]*+)?+\\.[0-9.]*+(?>[eE][-+][0-9]+)?+(?=[\t ]++#|[\t ]*+(?>[\\x{85 2028 2029}\r\n,\\]}]|:[\\x{85 2028 2029}\r\n\t ,\\[\\]{}]))", "name": "constant.numeric.float.decimal.yaml" }, { "match": "\\G[-+]?+[0-9][0-9_]*+(?>:[0-5]?[0-9])++\\.[0-9_]*+(?=[\t ]++#|[\t ]*+(?>[\\x{85 2028 2029}\r\n,\\]}]|:[\\x{85 2028 2029}\r\n\t ,\\[\\]{}]))", "name": "constant.numeric.float.Sexagesimal.yaml" }, { "match": "\\G[-+]?+\\.(?>inf|Inf|INF)(?=[\t ]++#|[\t ]*+(?>[\\x{85 2028 2029}\r\n,\\]}]|:[\\x{85 2028 2029}\r\n\t ,\\[\\]{}]))", "name": "constant.numeric.float.inf.yaml" }, { "match": "\\G\\.(?>nan|NaN|NAN)(?=[\t ]++#|[\t ]*+(?>[\\x{85 2028 2029}\r\n,\\]}]|:[\\x{85 2028 2029}\r\n\t ,\\[\\]{}]))", "name": "constant.numeric.float.nan.yaml" }, { "comment": "https://www.w3.org/TR/NOTE-datetime does not allow spaces, however https://yaml.org/type/timestamp.html does, but the provided regex doesn't match the TZD space in many of the YAML examples", "match": "\\G(?>[0-9]{4}-[0-9]{2,1}-[0-9]{2,1}(?>T|t|[\t ]++)[0-9]{2,1}:[0-9]{2}:[0-9]{2}(?>\\.[0-9]*+)?+[\t ]*+(?>Z|[-+][0-9]{2,1}(?>:[0-9]{2})?+)?+|[0-9]{4}-[0-9]{2}-[0-9]{2})(?=[\t ]++#|[\t ]*+(?>[\\x{85 2028 2029}\r\n,\\]}]|:[\\x{85 2028 2029}\r\n\t ,\\[\\]{}]))", "name": "constant.numeric.timestamp.yaml" }, { "match": "\\G<<(?=[\t ]++#|[\t ]*+(?>[\\x{85 2028 2029}\r\n,\\]}]|:[\\x{85 2028 2029}\r\n\t ,\\[\\]{}]))", "name": "constant.language.merge.yaml" }, { "match": "\\G=(?=[\t ]++#|[\t ]*+(?>[\\x{85 2028 2029}\r\n,\\]}]|:[\\x{85 2028 2029}\r\n\t ,\\[\\]{}]))", "name": "constant.language.value.yaml" }, { "match": "\\G(?>!|&|\\*)(?=[\t ]++#|[\t ]*+(?>[\\x{85 2028 2029}\r\n,\\]}]|:[\\x{85 2028 2029}\r\n\t ,\\[\\]{}]))", "name": "constant.language.yaml.yaml" } ] }, "tag-implicit-plain-out": { "comment": "https://yaml.org/type/index.html", "patterns": [ { "match": "\\G(?>null|Null|NULL|~)(?=[\t ]++#|[\t ]*+(?>$|:[\\x{85 2028 2029}\r\n\t ]))", "name": "constant.language.null.yaml" }, { "match": "\\G(?>true|True|TRUE|false|False|FALSE|yes|Yes|YES|y|Y|no|No|NO|n|N|on|On|ON|off|Off|OFF)(?=[\t ]++#|[\t ]*+(?>$|:[\\x{85 2028 2029}\r\n\t ]))", "name": "constant.language.boolean.yaml" }, { "match": "\\G[-+]?+(0|[1-9][0-9_]*+)(?=[\t ]++#|[\t ]*+(?>$|:[\\x{85 2028 2029}\r\n\t ]))", "name": "constant.numeric.integer.decimal.yaml" }, { "match": "\\G[-+]?+0b[0-1_]++(?=[\t ]++#|[\t ]*+(?>$|:[\\x{85 2028 2029}\r\n\t ]))", "name": "constant.numeric.integer.binary.yaml" }, { "match": "\\G[-+]?0[0-7_]++(?=[\t ]++#|[\t ]*+(?>$|:[\\x{85 2028 2029}\r\n\t ]))", "name": "constant.numeric.integer.octal.yaml" }, { "match": "\\G[-+]?+0x[0-9a-fA-F_]++(?=[\t ]++#|[\t ]*+(?>$|:[\\x{85 2028 2029}\r\n\t ]))", "name": "constant.numeric.integer.hexadecimal.yaml" }, { "match": "\\G[-+]?+[1-9][0-9_]*+(?>:[0-5]?[0-9])++(?=[\t ]++#|[\t ]*+(?>$|:[\\x{85 2028 2029}\r\n\t ]))", "name": "constant.numeric.integer.Sexagesimal.yaml" }, { "match": "\\G[-+]?+(?>[0-9][0-9_]*+)?+\\.[0-9.]*+(?>[eE][-+][0-9]+)?+(?=[\t ]++#|[\t ]*+(?>$|:[\\x{85 2028 2029}\r\n\t ]))", "name": "constant.numeric.float.decimal.yaml" }, { "match": "\\G[-+]?+[0-9][0-9_]*+(?>:[0-5]?[0-9])++\\.[0-9_]*+(?=[\t ]++#|[\t ]*+(?>$|:[\\x{85 2028 2029}\r\n\t ]))", "name": "constant.numeric.float.Sexagesimal.yaml" }, { "match": "\\G[-+]?+\\.(?>inf|Inf|INF)(?=[\t ]++#|[\t ]*+(?>$|:[\\x{85 2028 2029}\r\n\t ]))", "name": "constant.numeric.float.inf.yaml" }, { "match": "\\G\\.(?>nan|NaN|NAN)(?=[\t ]++#|[\t ]*+(?>$|:[\\x{85 2028 2029}\r\n\t ]))", "name": "constant.numeric.float.nan.yaml" }, { "comment": "https://www.w3.org/TR/NOTE-datetime does not allow spaces, however https://yaml.org/type/timestamp.html does, but the provided regex doesn't match the TZD space in many of the YAML examples", "match": "\\G(?>[0-9]{4}-[0-9]{2,1}-[0-9]{2,1}(?>T|t|[\t ]++)[0-9]{2,1}:[0-9]{2}:[0-9]{2}(?>\\.[0-9]*+)?+[\t ]*+(?>Z|[-+][0-9]{2,1}(?>:[0-9]{2})?+)?+|[0-9]{4}-[0-9]{2}-[0-9]{2})(?=[\t ]++#|[\t ]*+(?>$|:[\\x{85 2028 2029}\r\n\t ]))", "name": "constant.numeric.timestamp.yaml" }, { "match": "\\G<<(?=[\t ]++#|[\t ]*+(?>$|:[\\x{85 2028 2029}\r\n\t ]))", "name": "constant.language.merge.yaml" }, { "match": "\\G=(?=[\t ]++#|[\t ]*+(?>$|:[\\x{85 2028 2029}\r\n\t ]))", "name": "constant.language.value.yaml" }, { "match": "\\G(?>!|&|\\*)(?=[\t ]++#|[\t ]*+(?>$|:[\\x{85 2028 2029}\r\n\t ]))", "name": "constant.language.yaml.yaml" } ] }, "tag-property": { "comment": "https://yaml.org/spec/1.2.2/#rule-c-ns-tag-property", "//": [ "!", "!!", "!<>", "!...", "!!...", "!<...>", "!...!..." ], "patterns": [ { "match": "!(?=[\\x{85 2028 2029}\r\n\t ])", "name": "storage.type.tag.non-specific.yaml punctuation.definition.tag.non-specific.yaml" }, { "comment": "https://yaml.org/spec/1.2.2/#rule-c-verbatim-tag", "begin": "!<", "end": ">", "beginCaptures": { "0": { "name": "punctuation.definition.tag.begin.yaml" } }, "endCaptures": { "0": { "name": "punctuation.definition.tag.end.yaml" } }, "name": "storage.type.tag.verbatim.yaml", "patterns": [ { "match": "%[0-9a-fA-F]{2}", "name": "constant.character.escape.unicode.8-bit.yaml" }, { "match": "%[^\\x{85 2028 2029}\r\n\t ]{2,0}", "name": "invalid.illegal.constant.character.escape.unicode.8-bit.yaml" }, { "include": "source.yaml#non-printable" }, { "match": "[^\\x{85 2028 2029}\r\n\t a-zA-Z0-9-#;/?:@&=+$,_.!~*'()\\[\\]%>]++", "name": "invalid.illegal.unrecognized.yaml" } ] }, { "comment": "https://yaml.org/spec/1.2.2/#rule-c-ns-shorthand-tag", "begin": "(?=!)", "end": "(?=[\\x{85 2028 2029}\r\n\t ,\\[\\]{}])", "name": "storage.type.tag.shorthand.yaml", "patterns": [ { "comment": "https://yaml.org/spec/1.2.2/#rule-c-secondary-tag-handle", "match": "\\G!!", "name": "punctuation.definition.tag.secondary.yaml" }, { "comment": "https://yaml.org/spec/1.2.2/#rule-c-secondary-tag-handle", "match": "\\G(!)[0-9A-Za-z-]++(!)", "captures": { "1": { "name": "punctuation.definition.tag.named.yaml" }, "2": { "name": "punctuation.definition.tag.named.yaml" } } }, { "comment": "https://yaml.org/spec/1.2.2/#rule-c-primary-tag-handle", "match": "\\G!", "name": "punctuation.definition.tag.primary.yaml" }, { "match": "%[0-9a-fA-F]{2}", "name": "constant.character.escape.unicode.8-bit.yaml" }, { "match": "%[^\\x{85 2028 2029}\r\n\t ]{2,0}", "name": "invalid.illegal.constant.character.escape.unicode.8-bit.yaml" }, { "include": "source.yaml#non-printable" }, { "match": "[^\\x{85 2028 2029}\r\n\t a-zA-Z0-9-#;/?:@&=+$,_.~*'()\\[\\]%]++", "name": "invalid.illegal.unrecognized.yaml" } ] } ] }, "anchor-property": { "match": "(&)([^ \\p{Cntrl}\\p{Surrogate}\\x{2028 2029 FFFE FFFF}]++)|(&)", "captures": { "0": { "name": "keyword.control.flow.anchor.yaml" }, "1": { "name": "punctuation.definition.anchor.yaml" }, "2": { "name": "variable.other.anchor.yaml" }, "3": { "name": "invalid.illegal.flow.anchor.yaml" } } }, "alias": { "begin": "(\\*)([^ \\p{Cntrl}\\p{Surrogate}\\x{2028 2029 FFFE FFFF}]++)|(\\*)", "end": "(?=:[\\x{85 2028 2029}\r\n\t ,\\[\\]{}]|[,\\[\\]{}])", "captures": { "0": { "name": "keyword.control.flow.alias.yaml" }, "1": { "name": "punctuation.definition.alias.yaml" }, "2": { "name": "variable.other.alias.yaml" }, "3": { "name": "invalid.illegal.flow.alias.yaml" } }, "patterns": [ { "include": "#presentation-detail" } ] }, "byte-order-mark": { "comment": "", "begin": "\\G", "while": "\\G(?=[\\x{FEFF 85 2028 2029}\r\n\t ])", "patterns": [ { "begin": "(?=#)", "while": "\\G", "patterns": [ { "include": "#presentation-detail" } ] }, { "begin": "\\G\\x{FEFF}", "while": "\\G", "beginCaptures": { "0": { "name": "byte-order-mark.yaml" } }, "patterns": [ { "include": "#presentation-detail" } ] }, { "include": "#presentation-detail" } ] }, "presentation-detail": { "patterns": [ { "match": "[\t ]++", "name": "punctuation.whitespace.separator.yaml" }, { "comment": "https://yaml.org/spec/1.1/#id871136", "match": "[\\x{85 2028 2029}\r\n]++", "name": "punctuation.separator.line-break.yaml" }, { "include": "source.yaml#non-printable" }, { "include": "#comment" }, { "include": "#unknown" } ] }, "comment": { "comment": "Comments must be separated from other tokens by white space characters. `space`, `newline` or `carriage-return`. `#(.*)` causes performance issues", "begin": "(?<=^|[\\x{FEFF 85 2028 2029} ])#", "end": "[\\x{85 2028 2029}\r\n]", "captures": { "0": { "name": "punctuation.definition.comment.yaml" } }, "name": "comment.line.number-sign.yaml", "patterns": [ { "include": "source.yaml#non-printable" } ] }, "unknown": { "match": ".[[^\\x{85 2028 2029}#\"':,\\[\\]{}]&&!-~\\x{A0}-\\x{D7FF}\\x{E000}-\\x{FFFD}\\x{010000}-\\x{10FFFF}]*+", "name": "invalid.illegal.unrecognized.yaml" } } }