{"name":"Singularity","scopeName":"source.singularity","patterns":[{"include":"#interpolation"},{"include":"#keyword"},{"include":"#string"},{"include":"#variable"},{"match":"^\\s*\\b(?i:(bootstrap))\\b:.*?(.+?\\b(as)\\b.*)?","captures":{"1":{"name":"keyword.other.special-method.singularity"},"3":{"name":"keyword.other.special-method.singularity"}}},{"match":"^\\s*\\b(?i:(from|registry|namespace))\\b:.*?(.+?\\b(as)\\b.*)?","captures":{"1":{"name":"keyword.other.special-method.singularity"},"3":{"name":"keyword.other.special-method.singularity"}}},{"match":"^\\s*\\b(?i:(stage|osversion|mirrorurl|include))\\b:","captures":{"1":{"name":"keyword.other.special-method.singularity"}}},{"match":"^\\s*(%)\\b(post|setup|environment|help|labels|test|runscript|files|startscript)\\b","captures":{"1":{"name":"keyword.control.singularity"},"2":{"name":"keyword.other.special-method.singularity"}}},{"match":"^\\s*(%)\\b(apprun|applabels|appinstall|appenv|apphelp|appfiles)\\b","captures":{"1":{"name":"keyword.control.singularity"},"2":{"name":"keyword.other.special-method.singularity"}}},{"name":"string.quoted.single.singularity","begin":"'","end":"'","patterns":[{"name":"constant.character.escaped.singularity","match":"\\\\."}],"beginCaptures":{"1":{"name":"punctuation.definition.string.begin.singularity"}},"endCaptures":{"1":{"name":"punctuation.definition.string.end.singularity"}}},{"name":"string.quoted.double.singularity","begin":"\"","end":"\"","patterns":[{"name":"constant.character.escaped.singularity","match":"\\\\."}],"beginCaptures":{"1":{"name":"punctuation.definition.string.begin.singularity"}},"endCaptures":{"1":{"name":"punctuation.definition.string.end.singularity"}}},{"match":"^(\\s*)((#).*$\\n?)","captures":{"1":{"name":"punctuation.whitespace.comment.leading.singularity"},"2":{"name":"comment.line.number-sign.singularity"},"3":{"name":"punctuation.definition.comment.singularity"}}}],"repository":{"interpolation":{"patterns":[{"name":"string.other.math.shell","begin":"\\$\\({2}","end":"\\){2}","patterns":[{"include":"#math"}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.shell"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.shell"}}},{"name":"string.interpolated.backtick.shell","begin":"`","end":"`","patterns":[{"name":"constant.character.escape.shell","match":"\\\\[`\\\\$]"},{"begin":"(?\u003c=\\W)(?=#)(?!#{)","end":"(?!\\G)","patterns":[{"name":"comment.line.number-sign.shell","begin":"#","end":"(?=`)","beginCaptures":{"0":{"name":"punctuation.definition.comment.shell"}}}],"beginCaptures":{"1":{"name":"punctuation.whitespace.comment.leading.shell"}}},{"include":"$self"}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.shell"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.shell"}}},{"name":"string.interpolated.dollar.shell","begin":"\\$\\(","end":"\\)","patterns":[{"include":"$self"}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.shell"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.shell"}}}]},"keyword":{"patterns":[{"name":"keyword.control.shell","match":"(?\u003c=^|;|\u0026|\\s)(if|then|else|elif|fi|for|in|do|done|select|case|continue|esac|while|until|return)(?=\\s|;|\u0026|$)"},{"name":"storage.modifier.shell","match":"(?\u003c=^|;|\u0026|\\s)(?:export|declare|typeset|local|readonly)(?=\\s|;|\u0026|$)"}]},"string":{"patterns":[{"name":"constant.character.escape.shell","match":"\\\\."},{"name":"string.quoted.single.shell","begin":"'","end":"'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.shell"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.shell"}}},{"name":"string.quoted.double.shell","begin":"\\$?\"","end":"\"","patterns":[{"name":"constant.character.escape.shell","match":"\\\\[\\$`\"\\\\\\n]"},{"include":"#variable"},{"include":"#interpolation"}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.shell"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.shell"}}},{"name":"string.quoted.single.dollar.shell","begin":"\\$'","end":"'","patterns":[{"name":"constant.character.escape.ansi-c.shell","match":"\\\\(a|b|e|f|n|r|t|v|\\\\|')"},{"name":"constant.character.escape.octal.shell","match":"\\\\[0-9]{3}"},{"name":"constant.character.escape.hex.shell","match":"\\\\x[0-9a-fA-F]{2}"},{"name":"constant.character.escape.control-char.shell","match":"\\\\c."}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.shell"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.shell"}}}]},"variable":{"patterns":[{"name":"variable.other.normal.shell","match":"(\\$)[a-zA-Z_][a-zA-Z0-9_]*","captures":{"1":{"name":"punctuation.definition.variable.shell"}}},{"name":"variable.other.special.shell","match":"(\\$)[-*@#?$!0_]","captures":{"1":{"name":"punctuation.definition.variable.shell"}}},{"name":"variable.other.positional.shell","match":"(\\$)[1-9]","captures":{"1":{"name":"punctuation.definition.variable.shell"}}},{"name":"variable.other.bracket.shell","begin":"\\${","end":"}","patterns":[{"name":"keyword.operator.expansion.shell","match":"!|:[-=?]?|\\*|@|#{1,2}|%{1,2}|/"},{"match":"(\\[)([^\\]]+)(\\])","captures":{"1":{"name":"punctuation.section.array.shell"},"3":{"name":"punctuation.section.array.shell"}}},{"include":"#variable"},{"include":"#string"}],"beginCaptures":{"0":{"name":"punctuation.definition.variable.shell"}},"endCaptures":{"0":{"name":"punctuation.definition.variable.shell"}}}]}}}