{"name":"Tea","scopeName":"source.tea","patterns":[{"begin":"\u003c%","end":"%\u003e","patterns":[{"include":"#language"}]},{"include":"text.html.basic"},{"include":"source.js"},{"include":"text.xml"}],"repository":{"functions":{"patterns":[{"name":"support.function.tea","match":"\\b(setLocale|getLocale|getAvailableLocales|nullFormat|getNullFormat|getDateFormat|getAvailableTimeZones|getDataFormatTimeZone|numberFormat|getNumberFormat|getNumberFormatInfinity|getNumberFormatNaN|currentDate|startsWith|endsWith|find|findFirst|substring|toLowerCase|toUpperCase|trim|trimLeading|trimTrailing|replace|replaceFirst|replaceLast|shortOrdinal|ordinal|cardinal)\\b(?=\\()"}]},"language":{"patterns":[{"include":"#strings"},{"include":"#functions"},{"name":"meta.template.tea","begin":"\\b(template)\\s+([a-zA-Z_$]\\w*)?\\s*(\\()","end":"(\\))","patterns":[{"match":"\\s*([a-zA-Z_$][\\w.]*)\\s+(\\w*)(?:,\\s*)?","captures":{"1":{"name":"storage.type.tea"},"2":{"name":"variable.parameter.template.tea"}}}],"beginCaptures":{"1":{"name":"storage.type.template.tea"},"2":{"name":"entity.name.class.tea"}}},{"name":"meta.template-call.tea","begin":"\\b(call)\\s+(.*?)\\(.*?","end":"\\)","patterns":[{"include":"#functions"},{"include":"#strings"}],"beginCaptures":{"1":{"name":"keyword.other.tea"},"2":{"name":"entity.name.function.tea"}}},{"name":"keyword.control.tea","match":"\\?:|\\?\\.|\\b(break|else|foreach|if|in|reverse)\\b"},{"name":"keyword.operator.tea","match":"#|##|\\.\\.|\\.\\.\\.|\u0026|\\*\\."},{"name":"keyword.operator.arithmetic.tea","match":"(\\-|\\+|\\*|%)"},{"name":"keyword.operator.assignment.tea","match":"(=)"},{"name":"keyword.operator.comparison.tea","match":"(==|!=|\u003c|\u003e|\u003c=|\u003e=|\u003c=\u003e|\\b(and|not|or|isa)\\b)"},{"name":"keyword.operator.logical.tea","match":"(!)"},{"name":"keyword.other.tea","match":"\\b(call|as|define)\\b"},{"name":"constant.language.boolean.true.tea","match":"\\b(true)\\b"},{"name":"constant.language.boolean.false.tea","match":"\\b(false)\\b"},{"name":"constant.language.null.tea","match":"\\b(null)\\b"},{"name":"constant.numeric.tea","match":"\\b((0(x|X)[0-9a-fA-F]+)|([0-9]+(\\.[0-9]+)?))\\b"},{"name":"comment.line.double-slash.tea","match":"(//).*$\\n?"},{"name":"comment.block.tea","begin":"/\\*","end":"\\*/"},{"name":"punctuation.terminator.statement.tea","match":"\\;"}]},"strings":{"patterns":[{"name":"string.quoted.double.tea","begin":"\"","end":"\"","patterns":[{"name":"constant.character.escape.tea","match":"\\\\(x[[:xdigit:]]{2}|[0-2][0-7]{,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)"}]},{"name":"string.quoted.single.tea","begin":"'","end":"'","patterns":[{"name":"constant.character.escape.tea","match":"\\\\(x[[:xdigit:]]{2}|[0-2][0-7]{,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)"}]}]}}}