[{"displayName":"Puppet","fileTypes":["pp"],"foldingStartMarker":"(^\\s*/\\*|([(\\[{])\\s*$)","foldingStopMarker":"(\\*/|^\\s*([])}]))","name":"puppet","patterns":[{"include":"#line_comment"},{"include":"#constants"},{"begin":"^\\s*/\\*","end":"\\*/","name":"comment.block.puppet"},{"begin":"\\b(node)\\b","captures":{"1":{"name":"storage.type.puppet"},"2":{"name":"entity.name.type.class.puppet"}},"end":"(?=\\{)","name":"meta.definition.class.puppet","patterns":[{"match":"\\bdefault\\b","name":"keyword.puppet"},{"include":"#strings"},{"include":"#regex-literal"}]},{"begin":"\\b(class)\\s+((?:[a-z][0-9_a-z]*)?(?:::[a-z][0-9_a-z]*)+|[a-z][0-9_a-z]*)\\s*","captures":{"1":{"name":"storage.type.puppet"},"2":{"name":"entity.name.type.class.puppet"}},"end":"(?=\\{)","name":"meta.definition.class.puppet","patterns":[{"begin":"\\b(inherits)\\b\\s+","captures":{"1":{"name":"storage.modifier.puppet"}},"end":"(?=[({])","name":"meta.definition.class.inherits.puppet","patterns":[{"match":"\\b((?:[-\".0-9A-Z_a-z]+::)*[-\".0-9A-Z_a-z]+)\\b","name":"support.type.puppet"}]},{"include":"#line_comment"},{"include":"#resource-parameters"},{"include":"#parameter-default-types"}]},{"begin":"^\\s*(plan)\\s+((?:[a-z][0-9_a-z]*)?(?:::[a-z][0-9_a-z]*)+|[a-z][0-9_a-z]*)\\s*","captures":{"1":{"name":"storage.type.puppet"},"2":{"name":"entity.name.type.plan.puppet"}},"end":"(?=\\{)","name":"meta.definition.plan.puppet","patterns":[{"include":"#line_comment"},{"include":"#resource-parameters"},{"include":"#parameter-default-types"}]},{"begin":"^\\s*(define|function)\\s+([a-z][0-9_a-z]*|(?:[a-z][0-9_a-z]*)?(?:::[a-z][0-9_a-z]*)+)\\s*(\\()","captures":{"1":{"name":"storage.type.function.puppet"},"2":{"name":"entity.name.function.puppet"}},"end":"(?=\\{)","name":"meta.function.puppet","patterns":[{"include":"#line_comment"},{"include":"#resource-parameters"},{"include":"#parameter-default-types"}]},{"captures":{"1":{"name":"keyword.control.puppet"}},"match":"\\b(case|else|elsif|if|unless)(?!::)\\b"},{"include":"#keywords"},{"include":"#resource-definition"},{"include":"#heredoc"},{"include":"#strings"},{"include":"#puppet-datatypes"},{"include":"#array"},{"match":"((\\$?)\"?[A-Z_a-z\\x7F-ÿ][0-9A-Z_a-z\\x7F-ÿ]*\"?):(?=\\s+|$)","name":"entity.name.section.puppet"},{"include":"#numbers"},{"include":"#variable"},{"begin":"\\b(import|include|contain|require)\\s+(?!.*=>)","beginCaptures":{"1":{"name":"keyword.control.import.include.puppet"}},"contentName":"variable.parameter.include.puppet","end":"(?=\\s|$)","name":"meta.include.puppet"},{"match":"\\b\\w+\\s*(?==>)\\s*","name":"constant.other.key.puppet"},{"match":"(?<=\\{)\\s*\\w+\\s*(?=})","name":"constant.other.bareword.puppet"},{"match":"\\b(alert|crit|debug|defined|emerg|err|escape|fail|failed|file|generate|gsub|info|notice|package|realize|search|tag|tagged|template|warning)\\b(?!.*\\{)","name":"support.function.puppet"},{"match":"=>","name":"punctuation.separator.key-value.puppet"},{"match":"->","name":"keyword.control.orderarrow.puppet"},{"match":"~>","name":"keyword.control.notifyarrow.puppet"},{"include":"#regex-literal"}],"repository":{"array":{"begin":"(\\[)","beginCaptures":{"1":{"name":"punctuation.definition.array.begin.puppet"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.array.end.puppet"}},"name":"meta.array.puppet","patterns":[{"match":"\\s*,\\s*"},{"include":"#parameter-default-types"},{"include":"#line_comment"}]},"constants":{"patterns":[{"match":"\\b(absent|directory|false|file|present|running|stopped|true)\\b(?!.*\\{)","name":"constant.language.puppet"}]},"double-quoted-string":{"begin":"\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.puppet"}},"end":"\"","endCaptures":{"0":{"name":"punctuation.definition.string.end.puppet"}},"name":"string.quoted.double.interpolated.puppet","patterns":[{"include":"#escaped_char"},{"include":"#interpolated_puppet"}]},"escaped_char":{"match":"\\\\.","name":"constant.character.escape.puppet"},"function_call":{"begin":"([A-Z_a-z][0-9A-Z_a-z]*)(\\()","end":"\\)","name":"meta.function-call.puppet","patterns":[{"include":"#parameter-default-types"},{"match":",","name":"punctuation.separator.parameters.puppet"}]},"hash":{"begin":"\\{","beginCaptures":{"0":{"name":"punctuation.definition.hash.begin.puppet"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.hash.end.puppet"}},"name":"meta.hash.puppet","patterns":[{"match":"\\b\\w+\\s*(?==>)\\s*","name":"constant.other.key.puppet"},{"include":"#parameter-default-types"},{"include":"#line_comment"}]},"heredoc":{"patterns":[{"begin":"@\\(\\p{blank}*\"([^\\t )/:]+)\"\\p{blank}*(:\\p{blank}*[a-z][+0-9A-Z_a-z]*\\p{blank}*)?(/\\p{blank}*[$Lnrst]*)?\\p{blank}*\\)","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.puppet"}},"end":"^\\p{blank}*(\\|\\p{blank}*-|[-|])?\\p{blank}*\\1","endCaptures":{"0":{"name":"punctuation.definition.string.end.puppet"}},"name":"string.interpolated.heredoc.puppet","patterns":[{"include":"#escaped_char"},{"include":"#interpolated_puppet"}]},{"begin":"@\\(\\p{blank}*([^\\t )/:]+)\\p{blank}*(:\\p{blank}*[a-z][+0-9A-Z_a-z]*\\p{blank}*)?(/\\p{blank}*[$Lnrst]*)?\\p{blank}*\\)","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.puppet"}},"end":"^\\p{blank}*(\\|\\p{blank}*-|[-|])?\\p{blank}*\\1","endCaptures":{"0":{"name":"punctuation.definition.string.end.puppet"}},"name":"string.unquoted.heredoc.puppet"}]},"interpolated_puppet":{"patterns":[{"begin":"(\\$\\{)(\\d+)","beginCaptures":{"1":{"name":"punctuation.section.embedded.begin.puppet"},"2":{"name":"source.puppet variable.other.readwrite.global.pre-defined.puppet"}},"contentName":"source.puppet","end":"}","endCaptures":{"0":{"name":"punctuation.section.embedded.end.puppet"}},"name":"meta.embedded.line.puppet","patterns":[{"include":"$self"}]},{"begin":"(\\$\\{)(_[0-9A-Z_a-z]*)","beginCaptures":{"1":{"name":"punctuation.section.embedded.begin.puppet"},"2":{"name":"source.puppet variable.other.readwrite.global.puppet"}},"contentName":"source.puppet","end":"}","endCaptures":{"0":{"name":"punctuation.section.embedded.end.puppet"}},"name":"meta.embedded.line.puppet","patterns":[{"include":"$self"}]},{"begin":"(\\$\\{)(([a-z][0-9_a-z]*)?(?:::[a-z][0-9_a-z]*)*)","beginCaptures":{"1":{"name":"punctuation.section.embedded.begin.puppet"},"2":{"name":"source.puppet variable.other.readwrite.global.puppet"}},"contentName":"source.puppet","end":"}","endCaptures":{"0":{"name":"punctuation.section.embedded.end.puppet"}},"name":"meta.embedded.line.puppet","patterns":[{"include":"$self"}]},{"begin":"\\$\\{","beginCaptures":{"0":{"name":"punctuation.section.embedded.begin.puppet"}},"contentName":"source.puppet","end":"}","endCaptures":{"0":{"name":"punctuation.section.embedded.end.puppet"}},"name":"meta.embedded.line.puppet","patterns":[{"include":"$self"}]}]},"keywords":{"captures":{"1":{"name":"keyword.puppet"}},"match":"\\b(undef)\\b"},"line_comment":{"patterns":[{"captures":{"1":{"name":"comment.line.number-sign.puppet"},"2":{"name":"punctuation.definition.comment.puppet"}},"match":"^((#).*$\\n?)","name":"meta.comment.full-line.puppet"},{"captures":{"1":{"name":"punctuation.definition.comment.puppet"}},"match":"(#).*$\\n?","name":"comment.line.number-sign.puppet"}]},"nested_braces":{"begin":"\\{","captures":{"1":{"name":"punctuation.section.scope.puppet"}},"end":"}","patterns":[{"include":"#escaped_char"},{"include":"#nested_braces"}]},"nested_braces_interpolated":{"begin":"\\{","captures":{"1":{"name":"punctuation.section.scope.puppet"}},"end":"}","patterns":[{"include":"#escaped_char"},{"include":"#variable"},{"include":"#nested_braces_interpolated"}]},"nested_brackets":{"begin":"\\[","captures":{"1":{"name":"punctuation.section.scope.puppet"}},"end":"]","patterns":[{"include":"#escaped_char"},{"include":"#nested_brackets"}]},"nested_brackets_interpolated":{"begin":"\\[","captures":{"1":{"name":"punctuation.section.scope.puppet"}},"end":"]","patterns":[{"include":"#escaped_char"},{"include":"#variable"},{"include":"#nested_brackets_interpolated"}]},"nested_parens":{"begin":"\\(","captures":{"1":{"name":"punctuation.section.scope.puppet"}},"end":"\\)","patterns":[{"include":"#escaped_char"},{"include":"#nested_parens"}]},"nested_parens_interpolated":{"begin":"\\(","captures":{"1":{"name":"punctuation.section.scope.puppet"}},"end":"\\)","patterns":[{"include":"#escaped_char"},{"include":"#variable"},{"include":"#nested_parens_interpolated"}]},"numbers":{"patterns":[{"match":"(?<![\\w\\d])([-+]?)(?i:0x)(?i:[0-9a-f])+(?![\\w\\d])","name":"constant.numeric.hexadecimal.puppet"},{"match":"(?<![.\\w])([-+]?)(?<!\\d)\\d+(?i:e([-+])?\\d+)?(?![.\\w\\d])","name":"constant.numeric.integer.puppet"},{"match":"(?<!\\w)([-+]?)\\d+\\.\\d+(?i:e([-+])?\\d+)?(?![\\w\\d])","name":"constant.numeric.integer.puppet"}]},"parameter-default-types":{"patterns":[{"include":"#strings"},{"include":"#numbers"},{"include":"#variable"},{"include":"#hash"},{"include":"#array"},{"include":"#function_call"},{"include":"#constants"},{"include":"#puppet-datatypes"}]},"puppet-datatypes":{"patterns":[{"match":"(?<![$A-Za-z])([A-Z][0-9A-Z_a-z]*)(?![0-9A-Z_a-z])","name":"storage.type.puppet"}]},"regex-literal":{"match":"(/)(.+?)[^\\\\]/","name":"string.regexp.literal.puppet"},"resource-definition":{"begin":"(?:^|\\b)(::[a-z][0-9_a-z]*|[a-z][0-9_a-z]*|(?:[a-z][0-9_a-z]*)?(?:::[a-z][0-9_a-z]*)+)\\s*(\\{)\\s*","beginCaptures":{"1":{"name":"meta.definition.resource.puppet storage.type.puppet"}},"contentName":"entity.name.section.puppet","end":":","patterns":[{"include":"#strings"},{"include":"#variable"},{"include":"#array"}]},"resource-parameters":{"patterns":[{"captures":{"1":{"name":"variable.other.puppet"},"2":{"name":"punctuation.definition.variable.puppet"}},"match":"((\\$+)[A-Z_a-z][0-9A-Z_a-z]*)\\s*(?=[),])","name":"meta.function.argument.puppet"},{"begin":"((\\$+)[A-Z_a-z][0-9A-Z_a-z]*)\\s*(=)\\s*\\s*","captures":{"1":{"name":"variable.other.puppet"},"2":{"name":"punctuation.definition.variable.puppet"},"3":{"name":"keyword.operator.assignment.puppet"}},"end":"(?=[),])","name":"meta.function.argument.puppet","patterns":[{"include":"#parameter-default-types"}]}]},"single-quoted-string":{"begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.puppet"}},"end":"'","endCaptures":{"0":{"name":"punctuation.definition.string.end.puppet"}},"name":"string.quoted.single.puppet","patterns":[{"include":"#escaped_char"}]},"strings":{"patterns":[{"include":"#double-quoted-string"},{"include":"#single-quoted-string"}]},"variable":{"patterns":[{"captures":{"1":{"name":"punctuation.definition.variable.puppet"}},"match":"(\\$)(\\d+)","name":"variable.other.readwrite.global.pre-defined.puppet"},{"captures":{"1":{"name":"punctuation.definition.variable.puppet"}},"match":"(\\$)_[0-9A-Z_a-z]*","name":"variable.other.readwrite.global.puppet"},{"captures":{"1":{"name":"punctuation.definition.variable.puppet"}},"match":"(\\$)(([a-z][0-9A-Z_a-z]*)?(?:::[a-z][0-9A-Z_a-z]*)*)","name":"variable.other.readwrite.global.puppet"}]}},"scopeName":"source.puppet"}]