UNPKG

dtl-js

Version:

Data Transformation Language - JSON templates and data transformation

310 lines (303 loc) 10.3 kB
{ "scopeName": "source.dtl", "patterns": [ { "include": "#dtl_entry" }, { "include": "#dtl_single_entry" } ], "repository": { "dtl_entry": { "begin": "\"(?=\\(:)", "end": "(?<=:\\))\"", "name": "keyword.bracket.dtl.happytag", "patterns": [ { "include": "#dtl_happy_tags" } ] }, "dtl_single_entry": { "begin": "'(?=\\(:)", "end": "(?<=:\\))'", "name": "keyword.bracket.dtl.happytag", "patterns": [ { "include": "#dtl_happy_tags" } ] }, "dtl_happy_tags": { "name": "meta.interpolation.dtl", "begin": "(\\(:)", "end": ":\\)(?=[\"'`])", "beginCaptures": { "0": { "name": "punctuation.section.interpolation.begin.dtl " } }, "endCaptures": { "0": { "name": "punctuation.section.interpolation.end.dtl" } }, "patterns": [ { "include": "#dtl_expression" } ] }, "dtl_expression": { "name": "meta.interpolation.dtl", "patterns": [ { "include": "#dtl_error_happy_tags" }, { "include": "#dtl_common_elements" } ] }, "dtl_error_happy_tags": { "patterns": [ { "match": "(?<![\"'`])\\(:", "name": "invalid.illegal.missing-quote-before-happytag.dtl" }, { "match": ":\\)", "name": "invalid.illegal.missing-quote-after-happytag.dtl" } ] }, "dtl_sub_single": { "name": "meta.interpolation.dtl", "begin": "'(\\(:)", "end": "(:\\))'", "beginCaptures": { "0": { "name": "keyword.bracket.happytag.begin.dtl punctuation.section.interpolation.begin.dtl " } }, "endCaptures": { "0": { "name": "keyword.bracket.happytag.end.dtl punctuation.section.interpolation.end.dtl" } }, "patterns": [ { "include": "#dtl_expression" } ] }, "dtl_sub_backtick": { "name": "meta.interpolation.dtl", "begin": "`(\\(:)", "end": "(:\\))`", "beginCaptures": { "0": { "name": "keyword.bracket.happytag.begin.dtl punctuation.section.interpolation.begin.dtl " } }, "endCaptures": { "0": { "name": "keyword.bracket.happytag.end.dtl punctuation.section.interpolation.end.dtl" } }, "patterns": [ { "include": "#dtl_expression" } ] }, "dtl_common_elements": { "patterns": [ { "include": "#dtl_comments" }, { "include": "#dtl_helper" }, { "include": "#dtl_braces" }, { "include": "#dtl_numbers" }, { "include": "#dtl_sub_single"}, { "include": "#dtl_sub_backtick"}, { "include": "#dtl_strings" }, { "include": "#dtl_transform_shortcut" }, { "include": "#dtl_operators" }, { "include": "#dtl_boolean" }, { "include": "#dtl_undef" }, { "include": "#dtl_variable" }, { "include": "#dtl_variable_dot_attributes" }, { "include": "#dtl_parenthesized" }, { "include": "#dtl_barewords" } ] }, "dtl_containers": { "patterns": [ { "include": "#dtl_expression" }, { "include": "#dtl_helper" } ] }, "dtl_numbers": { "patterns": [ { "include": "#dtl_number_alternate_base" }, { "include": "#dtl_number_int" }, { "include": "#dtl_number_decimal" } ] }, "dtl_number_int": { "name": "constant.numeric.integer.dtl", "match": "[\\+\\-]?[0-9]+" }, "dtl_number_decimal": { "name": "constant.numeric.float.decimal.dtl", "match": "[\\+\\-]?(\\d+\\.\\d*|\\.\\d+)([eE][\\+\\-]?\\d+)?" }, "dtl_number_alternate_base": { "name": "constant.numeric.dtl", "patterns": [ { "name": "constant.numeric.octal.dtl", "match": "0o[0-7]+" }, { "name": "constant.numeric.binary.dtl", "match": "0b[0-1]+" }, { "name": "constant.numeric.hex.dtl", "match": "0x[0-9a-fA-F]+" } ] }, "dtl_strings": { "patterns": [ { "include": "#dtl_string_single" }, { "include": "#dtl_string_backtick" } ] }, "dtl_string_single": { "begin": "'", "end": "'", "name": "entity.other.string.single.dtl" }, "dtl_string_backtick": { "begin": "`", "end": "`", "name": "entity.other.string.single.dtl" }, "dtl_transform_shortcut": { "match": "(\\-\\>)\\s*['`]?([a-zA-Z0-9_\\.]+)['`]?", "captures": { "1": { "name": "punctuation.separator.method.period.dtl keyword.operator.arrow.dtl" }, "2": { "name": "storage.type.function.dtl meta.function-call" } } }, "dtl_operators": { "name": "keyword.operator", "patterns": [ { "name": "keyword.operator.comparison.dtl", "match": "(>|<|=>|<=|!=|==|<=>)" }, { "name": "keyword.operator.logical.dtl", "match": "(\\|\\||&&)" }, { "name": "keyword.operator.dtl", "match": "[!+\\-\\/*\\|&]" } ] }, "dtl_boolean": { "name": "constant.language.dtl.boolean", "match": "(true|false)" }, "dtl_undef": { "name": "constant.language.dtl.undef", "match": "(undef|undefined)" }, "dtl_helper": { "begin": "([a-zA-Z0-9_#&\\?@\\^]+)\\(", "end": "(\\))", "beginCaptures": { "0": { "name": "support.function.dtl" } }, "endCaptures": { "0": { "name": "support.function.dtl" } }, "patterns": [ { "name": "invalid.illegal.comma", "match": "," }, { "include": "#dtl_common_elements" } ] }, "dtl_barewords": { "name": "invalid.illegal.character_not_allowed_here", "match": "\\w+" }, "dtl_comments": { "patterns": [ { "name": "comment.block.dtl", "begin": "(/\\*)", "end": "(\\*/)" }, { "contentName": "comment.line.double-slash.dtl", "begin": "(//)", "end": "(?=:\\)|$)", "beginCaptures": { "0": { "name": "comment.line.double-slash.dtl" } } } ] }, "dtl_braces": { "patterns": [ { "include": "#dtl_curly_braces" }, { "include": "#dtl_square_brackets" } ] }, "dtl_curly_braces": { "contentName": "meta.structure.dictionary", "begin": "({)", "end": "(})", "beginCaptures": { "0": { "name": "keyword.bracket.begin.curly.dtl punctuation.definition.dictionary.begin" } }, "endCaptures": { "0": { "name": "keyword.bracket.end.curly.dtl puctuation.definition.dictionary.end" } }, "patterns": [ { "include": "#dtl_common_elements" } ] }, "dtl_square_brackets": { "contentName": "meta.structure.list", "begin": "(\\[)", "end": "(\\])", "beginCaptures": { "0": { "name": "keyword.bracket.begin.dtl punctuation.definition.list.begin" } }, "endCaptures": { "0": { "name": "keyword.bracket.end.dtl puctuation.definition.list.end" } }, "patterns": [ { "include": "#dtl_common_elements" } ] }, "dtl_parenthesized": { "name": "meta.expression.parenthesized", "begin": "\\((?![:]|\\))", "end": "(?<![:])\\)", "patterns": [ { "include": "#dtl_common_elements" }, { "name": "invalid.illegal.comma", "match": "," } ] }, "dtl_variable": { "name": "variable.other.dtl", "match": "\\$(\\.?[a-zA-Z0-9_])+" }, "dtl_variable_dot_attributes": { "name": "variable.other.dtl", "match": "(?<=[\\)\\]])(\\.[a-zA-Z0-9_]+)" } } }