379c8b4da6e67c71e5d07fc261325471211e7a6eaade33ecefe8f011d93fd0e824443c35d125146b04434f6b3bc1a162c287ed3dba184407ecd7fdb41a9cb5 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703
  1. "use strict";
  2. /*!-----------------------------------------------------------------------------
  3. * Copyright (c) Microsoft Corporation. All rights reserved.
  4. * Version: 0.34.1(547870b6881302c5b4ff32173c16d06009e3588f)
  5. * Released under the MIT license
  6. * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt
  7. *-----------------------------------------------------------------------------*/
  8. define("vs/basic-languages/freemarker2/freemarker2", ["require"],(require)=>{
  9. var moduleExports = (() => {
  10. var __create = Object.create;
  11. var __defProp = Object.defineProperty;
  12. var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
  13. var __getOwnPropNames = Object.getOwnPropertyNames;
  14. var __getProtoOf = Object.getPrototypeOf;
  15. var __hasOwnProp = Object.prototype.hasOwnProperty;
  16. var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
  17. get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
  18. }) : x)(function(x) {
  19. if (typeof require !== "undefined")
  20. return require.apply(this, arguments);
  21. throw new Error('Dynamic require of "' + x + '" is not supported');
  22. });
  23. var __commonJS = (cb, mod) => function __require2() {
  24. return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
  25. };
  26. var __export = (target, all) => {
  27. for (var name in all)
  28. __defProp(target, name, { get: all[name], enumerable: true });
  29. };
  30. var __copyProps = (to, from, except, desc) => {
  31. if (from && typeof from === "object" || typeof from === "function") {
  32. for (let key of __getOwnPropNames(from))
  33. if (!__hasOwnProp.call(to, key) && key !== except)
  34. __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
  35. }
  36. return to;
  37. };
  38. var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
  39. var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
  40. var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
  41. // src/fillers/monaco-editor-core-amd.ts
  42. var require_monaco_editor_core_amd = __commonJS({
  43. "src/fillers/monaco-editor-core-amd.ts"(exports, module) {
  44. var api = __toESM(__require("vs/editor/editor.api"));
  45. module.exports = api;
  46. }
  47. });
  48. // src/basic-languages/freemarker2/freemarker2.ts
  49. var freemarker2_exports = {};
  50. __export(freemarker2_exports, {
  51. TagAngleInterpolationBracket: () => TagAngleInterpolationBracket,
  52. TagAngleInterpolationDollar: () => TagAngleInterpolationDollar,
  53. TagAutoInterpolationBracket: () => TagAutoInterpolationBracket,
  54. TagAutoInterpolationDollar: () => TagAutoInterpolationDollar,
  55. TagBracketInterpolationBracket: () => TagBracketInterpolationBracket,
  56. TagBracketInterpolationDollar: () => TagBracketInterpolationDollar
  57. });
  58. // src/fillers/monaco-editor-core.ts
  59. var monaco_editor_core_exports = {};
  60. __reExport(monaco_editor_core_exports, __toESM(require_monaco_editor_core_amd()));
  61. // src/basic-languages/freemarker2/freemarker2.ts
  62. var EMPTY_ELEMENTS = [
  63. "assign",
  64. "flush",
  65. "ftl",
  66. "return",
  67. "global",
  68. "import",
  69. "include",
  70. "break",
  71. "continue",
  72. "local",
  73. "nested",
  74. "nt",
  75. "setting",
  76. "stop",
  77. "t",
  78. "lt",
  79. "rt",
  80. "fallback"
  81. ];
  82. var BLOCK_ELEMENTS = [
  83. "attempt",
  84. "autoesc",
  85. "autoEsc",
  86. "compress",
  87. "comment",
  88. "escape",
  89. "noescape",
  90. "function",
  91. "if",
  92. "list",
  93. "items",
  94. "sep",
  95. "macro",
  96. "noparse",
  97. "noParse",
  98. "noautoesc",
  99. "noAutoEsc",
  100. "outputformat",
  101. "switch",
  102. "visit",
  103. "recurse"
  104. ];
  105. var TagSyntaxAngle = {
  106. close: ">",
  107. id: "angle",
  108. open: "<"
  109. };
  110. var TagSyntaxBracket = {
  111. close: "\\]",
  112. id: "bracket",
  113. open: "\\["
  114. };
  115. var TagSyntaxAuto = {
  116. close: "[>\\]]",
  117. id: "auto",
  118. open: "[<\\[]"
  119. };
  120. var InterpolationSyntaxDollar = {
  121. close: "\\}",
  122. id: "dollar",
  123. open1: "\\$",
  124. open2: "\\{"
  125. };
  126. var InterpolationSyntaxBracket = {
  127. close: "\\]",
  128. id: "bracket",
  129. open1: "\\[",
  130. open2: "="
  131. };
  132. function createLangConfiguration(ts) {
  133. return {
  134. brackets: [
  135. ["<", ">"],
  136. ["[", "]"],
  137. ["(", ")"],
  138. ["{", "}"]
  139. ],
  140. comments: {
  141. blockComment: [`${ts.open}--`, `--${ts.close}`]
  142. },
  143. autoCloseBefore: "\n\r }]),.:;=",
  144. autoClosingPairs: [
  145. { open: "{", close: "}" },
  146. { open: "[", close: "]" },
  147. { open: "(", close: ")" },
  148. { open: '"', close: '"', notIn: ["string"] },
  149. { open: "'", close: "'", notIn: ["string"] }
  150. ],
  151. surroundingPairs: [
  152. { open: '"', close: '"' },
  153. { open: "'", close: "'" },
  154. { open: "{", close: "}" },
  155. { open: "[", close: "]" },
  156. { open: "(", close: ")" },
  157. { open: "<", close: ">" }
  158. ],
  159. folding: {
  160. markers: {
  161. start: new RegExp(`${ts.open}#(?:${BLOCK_ELEMENTS.join("|")})([^/${ts.close}]*(?!/)${ts.close})[^${ts.open}]*$`),
  162. end: new RegExp(`${ts.open}/#(?:${BLOCK_ELEMENTS.join("|")})[\\r\\n\\t ]*>`)
  163. }
  164. },
  165. onEnterRules: [
  166. {
  167. beforeText: new RegExp(`${ts.open}#(?!(?:${EMPTY_ELEMENTS.join("|")}))([a-zA-Z_]+)([^/${ts.close}]*(?!/)${ts.close})[^${ts.open}]*$`),
  168. afterText: new RegExp(`^${ts.open}/#([a-zA-Z_]+)[\\r\\n\\t ]*${ts.close}$`),
  169. action: {
  170. indentAction: monaco_editor_core_exports.languages.IndentAction.IndentOutdent
  171. }
  172. },
  173. {
  174. beforeText: new RegExp(`${ts.open}#(?!(?:${EMPTY_ELEMENTS.join("|")}))([a-zA-Z_]+)([^/${ts.close}]*(?!/)${ts.close})[^${ts.open}]*$`),
  175. action: { indentAction: monaco_editor_core_exports.languages.IndentAction.Indent }
  176. }
  177. ]
  178. };
  179. }
  180. function createLangConfigurationAuto() {
  181. return {
  182. brackets: [
  183. ["<", ">"],
  184. ["[", "]"],
  185. ["(", ")"],
  186. ["{", "}"]
  187. ],
  188. autoCloseBefore: "\n\r }]),.:;=",
  189. autoClosingPairs: [
  190. { open: "{", close: "}" },
  191. { open: "[", close: "]" },
  192. { open: "(", close: ")" },
  193. { open: '"', close: '"', notIn: ["string"] },
  194. { open: "'", close: "'", notIn: ["string"] }
  195. ],
  196. surroundingPairs: [
  197. { open: '"', close: '"' },
  198. { open: "'", close: "'" },
  199. { open: "{", close: "}" },
  200. { open: "[", close: "]" },
  201. { open: "(", close: ")" },
  202. { open: "<", close: ">" }
  203. ],
  204. folding: {
  205. markers: {
  206. start: new RegExp(`[<\\[]#(?:${BLOCK_ELEMENTS.join("|")})([^/>\\]]*(?!/)[>\\]])[^<\\[]*$`),
  207. end: new RegExp(`[<\\[]/#(?:${BLOCK_ELEMENTS.join("|")})[\\r\\n\\t ]*>`)
  208. }
  209. },
  210. onEnterRules: [
  211. {
  212. beforeText: new RegExp(`[<\\[]#(?!(?:${EMPTY_ELEMENTS.join("|")}))([a-zA-Z_]+)([^/>\\]]*(?!/)[>\\]])[^[<\\[]]*$`),
  213. afterText: new RegExp(`^[<\\[]/#([a-zA-Z_]+)[\\r\\n\\t ]*[>\\]]$`),
  214. action: {
  215. indentAction: monaco_editor_core_exports.languages.IndentAction.IndentOutdent
  216. }
  217. },
  218. {
  219. beforeText: new RegExp(`[<\\[]#(?!(?:${EMPTY_ELEMENTS.join("|")}))([a-zA-Z_]+)([^/>\\]]*(?!/)[>\\]])[^[<\\[]]*$`),
  220. action: { indentAction: monaco_editor_core_exports.languages.IndentAction.Indent }
  221. }
  222. ]
  223. };
  224. }
  225. function createMonarchLanguage(ts, is) {
  226. const id = `_${ts.id}_${is.id}`;
  227. const s = (name) => name.replace(/__id__/g, id);
  228. const r = (regexp) => {
  229. const source = regexp.source.replace(/__id__/g, id);
  230. return new RegExp(source, regexp.flags);
  231. };
  232. return {
  233. unicode: true,
  234. includeLF: false,
  235. start: s("default__id__"),
  236. ignoreCase: false,
  237. defaultToken: "invalid",
  238. tokenPostfix: `.freemarker2`,
  239. brackets: [
  240. { open: "{", close: "}", token: "delimiter.curly" },
  241. { open: "[", close: "]", token: "delimiter.square" },
  242. { open: "(", close: ")", token: "delimiter.parenthesis" },
  243. { open: "<", close: ">", token: "delimiter.angle" }
  244. ],
  245. [s("open__id__")]: new RegExp(ts.open),
  246. [s("close__id__")]: new RegExp(ts.close),
  247. [s("iOpen1__id__")]: new RegExp(is.open1),
  248. [s("iOpen2__id__")]: new RegExp(is.open2),
  249. [s("iClose__id__")]: new RegExp(is.close),
  250. [s("startTag__id__")]: r(/(@open__id__)(#)/),
  251. [s("endTag__id__")]: r(/(@open__id__)(\/#)/),
  252. [s("startOrEndTag__id__")]: r(/(@open__id__)(\/?#)/),
  253. [s("closeTag1__id__")]: r(/((?:@blank)*)(@close__id__)/),
  254. [s("closeTag2__id__")]: r(/((?:@blank)*\/?)(@close__id__)/),
  255. blank: /[ \t\n\r]/,
  256. keywords: ["false", "true", "in", "as", "using"],
  257. directiveStartCloseTag1: /attempt|recover|sep|auto[eE]sc|no(?:autoe|AutoE)sc|compress|default|no[eE]scape|comment|no[pP]arse/,
  258. directiveStartCloseTag2: /else|break|continue|return|stop|flush|t|lt|rt|nt|nested|recurse|fallback|ftl/,
  259. directiveStartBlank: /if|else[iI]f|list|for[eE]ach|switch|case|assign|global|local|include|import|function|macro|transform|visit|stop|return|call|setting|output[fF]ormat|nested|recurse|escape|ftl|items/,
  260. directiveEndCloseTag1: /if|list|items|sep|recover|attempt|for[eE]ach|local|global|assign|function|macro|output[fF]ormat|auto[eE]sc|no(?:autoe|AutoE)sc|compress|transform|switch|escape|no[eE]scape/,
  261. escapedChar: /\\(?:[ntrfbgla\\'"\{=]|(?:x[0-9A-Fa-f]{1,4}))/,
  262. asciiDigit: /[0-9]/,
  263. integer: /[0-9]+/,
  264. nonEscapedIdStartChar: /[\$@-Z_a-z\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u1FFF\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183-\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3006\u3031-\u3035\u303B-\u303C\u3040-\u318F\u31A0-\u31BA\u31F0-\u31FF\u3300-\u337F\u3400-\u4DB5\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8D0-\uA8D9\uA8F2-\uA8F7\uA8FB\uA900-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF-\uA9D9\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5-\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40-\uFB41\uFB43-\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/,
  265. escapedIdChar: /\\[\-\.:#]/,
  266. idStartChar: /(?:@nonEscapedIdStartChar)|(?:@escapedIdChar)/,
  267. id: /(?:@idStartChar)(?:(?:@idStartChar)|(?:@asciiDigit))*/,
  268. specialHashKeys: /\*\*|\*|false|true|in|as|using/,
  269. namedSymbols: /&lt;=|&gt;=|\\lte|\\lt|&lt;|\\gte|\\gt|&gt;|&amp;&amp;|\\and|-&gt;|->|==|!=|\+=|-=|\*=|\/=|%=|\+\+|--|<=|&&|\|\||:|\.\.\.|\.\.\*|\.\.<|\.\.!|\?\?|=|<|\+|-|\*|\/|%|\||\.\.|\?|!|&|\.|,|;/,
  270. arrows: ["->", "-&gt;"],
  271. delimiters: [";", ":", ",", "."],
  272. stringOperators: ["lte", "lt", "gte", "gt"],
  273. noParseTags: ["noparse", "noParse", "comment"],
  274. tokenizer: {
  275. [s("default__id__")]: [
  276. { include: s("@directive_token__id__") },
  277. { include: s("@interpolation_and_text_token__id__") }
  278. ],
  279. [s("fmExpression__id__.directive")]: [
  280. { include: s("@blank_and_expression_comment_token__id__") },
  281. { include: s("@directive_end_token__id__") },
  282. { include: s("@expression_token__id__") }
  283. ],
  284. [s("fmExpression__id__.interpolation")]: [
  285. { include: s("@blank_and_expression_comment_token__id__") },
  286. { include: s("@expression_token__id__") },
  287. { include: s("@greater_operators_token__id__") }
  288. ],
  289. [s("inParen__id__.plain")]: [
  290. { include: s("@blank_and_expression_comment_token__id__") },
  291. { include: s("@directive_end_token__id__") },
  292. { include: s("@expression_token__id__") }
  293. ],
  294. [s("inParen__id__.gt")]: [
  295. { include: s("@blank_and_expression_comment_token__id__") },
  296. { include: s("@expression_token__id__") },
  297. { include: s("@greater_operators_token__id__") }
  298. ],
  299. [s("noSpaceExpression__id__")]: [
  300. { include: s("@no_space_expression_end_token__id__") },
  301. { include: s("@directive_end_token__id__") },
  302. { include: s("@expression_token__id__") }
  303. ],
  304. [s("unifiedCall__id__")]: [{ include: s("@unified_call_token__id__") }],
  305. [s("singleString__id__")]: [{ include: s("@string_single_token__id__") }],
  306. [s("doubleString__id__")]: [{ include: s("@string_double_token__id__") }],
  307. [s("rawSingleString__id__")]: [{ include: s("@string_single_raw_token__id__") }],
  308. [s("rawDoubleString__id__")]: [{ include: s("@string_double_raw_token__id__") }],
  309. [s("expressionComment__id__")]: [{ include: s("@expression_comment_token__id__") }],
  310. [s("noParse__id__")]: [{ include: s("@no_parse_token__id__") }],
  311. [s("terseComment__id__")]: [{ include: s("@terse_comment_token__id__") }],
  312. [s("directive_token__id__")]: [
  313. [
  314. r(/(?:@startTag__id__)(@directiveStartCloseTag1)(?:@closeTag1__id__)/),
  315. ts.id === "auto" ? {
  316. cases: {
  317. "$1==<": { token: "@rematch", switchTo: `@default_angle_${is.id}` },
  318. "$1==[": { token: "@rematch", switchTo: `@default_bracket_${is.id}` }
  319. }
  320. } : [
  321. { token: "@brackets.directive" },
  322. { token: "delimiter.directive" },
  323. {
  324. cases: {
  325. "@noParseTags": { token: "tag", next: s("@noParse__id__.$3") },
  326. "@default": { token: "tag" }
  327. }
  328. },
  329. { token: "delimiter.directive" },
  330. { token: "@brackets.directive" }
  331. ]
  332. ],
  333. [
  334. r(/(?:@startTag__id__)(@directiveStartCloseTag2)(?:@closeTag2__id__)/),
  335. ts.id === "auto" ? {
  336. cases: {
  337. "$1==<": { token: "@rematch", switchTo: `@default_angle_${is.id}` },
  338. "$1==[": { token: "@rematch", switchTo: `@default_bracket_${is.id}` }
  339. }
  340. } : [
  341. { token: "@brackets.directive" },
  342. { token: "delimiter.directive" },
  343. { token: "tag" },
  344. { token: "delimiter.directive" },
  345. { token: "@brackets.directive" }
  346. ]
  347. ],
  348. [
  349. r(/(?:@startTag__id__)(@directiveStartBlank)(@blank)/),
  350. ts.id === "auto" ? {
  351. cases: {
  352. "$1==<": { token: "@rematch", switchTo: `@default_angle_${is.id}` },
  353. "$1==[": { token: "@rematch", switchTo: `@default_bracket_${is.id}` }
  354. }
  355. } : [
  356. { token: "@brackets.directive" },
  357. { token: "delimiter.directive" },
  358. { token: "tag" },
  359. { token: "", next: s("@fmExpression__id__.directive") }
  360. ]
  361. ],
  362. [
  363. r(/(?:@endTag__id__)(@directiveEndCloseTag1)(?:@closeTag1__id__)/),
  364. ts.id === "auto" ? {
  365. cases: {
  366. "$1==<": { token: "@rematch", switchTo: `@default_angle_${is.id}` },
  367. "$1==[": { token: "@rematch", switchTo: `@default_bracket_${is.id}` }
  368. }
  369. } : [
  370. { token: "@brackets.directive" },
  371. { token: "delimiter.directive" },
  372. { token: "tag" },
  373. { token: "delimiter.directive" },
  374. { token: "@brackets.directive" }
  375. ]
  376. ],
  377. [
  378. r(/(@open__id__)(@)/),
  379. ts.id === "auto" ? {
  380. cases: {
  381. "$1==<": { token: "@rematch", switchTo: `@default_angle_${is.id}` },
  382. "$1==[": { token: "@rematch", switchTo: `@default_bracket_${is.id}` }
  383. }
  384. } : [
  385. { token: "@brackets.directive" },
  386. { token: "delimiter.directive", next: s("@unifiedCall__id__") }
  387. ]
  388. ],
  389. [
  390. r(/(@open__id__)(\/@)((?:(?:@id)(?:\.(?:@id))*)?)(?:@closeTag1__id__)/),
  391. [
  392. { token: "@brackets.directive" },
  393. { token: "delimiter.directive" },
  394. { token: "tag" },
  395. { token: "delimiter.directive" },
  396. { token: "@brackets.directive" }
  397. ]
  398. ],
  399. [
  400. r(/(@open__id__)#--/),
  401. ts.id === "auto" ? {
  402. cases: {
  403. "$1==<": { token: "@rematch", switchTo: `@default_angle_${is.id}` },
  404. "$1==[": { token: "@rematch", switchTo: `@default_bracket_${is.id}` }
  405. }
  406. } : { token: "comment", next: s("@terseComment__id__") }
  407. ],
  408. [
  409. r(/(?:@startOrEndTag__id__)([a-zA-Z_]+)/),
  410. ts.id === "auto" ? {
  411. cases: {
  412. "$1==<": { token: "@rematch", switchTo: `@default_angle_${is.id}` },
  413. "$1==[": { token: "@rematch", switchTo: `@default_bracket_${is.id}` }
  414. }
  415. } : [
  416. { token: "@brackets.directive" },
  417. { token: "delimiter.directive" },
  418. { token: "tag.invalid", next: s("@fmExpression__id__.directive") }
  419. ]
  420. ]
  421. ],
  422. [s("interpolation_and_text_token__id__")]: [
  423. [
  424. r(/(@iOpen1__id__)(@iOpen2__id__)/),
  425. [
  426. { token: is.id === "bracket" ? "@brackets.interpolation" : "delimiter.interpolation" },
  427. {
  428. token: is.id === "bracket" ? "delimiter.interpolation" : "@brackets.interpolation",
  429. next: s("@fmExpression__id__.interpolation")
  430. }
  431. ]
  432. ],
  433. [/[\$#<\[\{]|(?:@blank)+|[^\$<#\[\{\n\r\t ]+/, { token: "source" }]
  434. ],
  435. [s("string_single_token__id__")]: [
  436. [/[^'\\]/, { token: "string" }],
  437. [/@escapedChar/, { token: "string.escape" }],
  438. [/'/, { token: "string", next: "@pop" }]
  439. ],
  440. [s("string_double_token__id__")]: [
  441. [/[^"\\]/, { token: "string" }],
  442. [/@escapedChar/, { token: "string.escape" }],
  443. [/"/, { token: "string", next: "@pop" }]
  444. ],
  445. [s("string_single_raw_token__id__")]: [
  446. [/[^']+/, { token: "string.raw" }],
  447. [/'/, { token: "string.raw", next: "@pop" }]
  448. ],
  449. [s("string_double_raw_token__id__")]: [
  450. [/[^"]+/, { token: "string.raw" }],
  451. [/"/, { token: "string.raw", next: "@pop" }]
  452. ],
  453. [s("expression_token__id__")]: [
  454. [
  455. /(r?)(['"])/,
  456. {
  457. cases: {
  458. "r'": [
  459. { token: "keyword" },
  460. { token: "string.raw", next: s("@rawSingleString__id__") }
  461. ],
  462. 'r"': [
  463. { token: "keyword" },
  464. { token: "string.raw", next: s("@rawDoubleString__id__") }
  465. ],
  466. "'": [{ token: "source" }, { token: "string", next: s("@singleString__id__") }],
  467. '"': [{ token: "source" }, { token: "string", next: s("@doubleString__id__") }]
  468. }
  469. }
  470. ],
  471. [
  472. /(?:@integer)(?:\.(?:@integer))?/,
  473. {
  474. cases: {
  475. "(?:@integer)": { token: "number" },
  476. "@default": { token: "number.float" }
  477. }
  478. }
  479. ],
  480. [
  481. /(\.)(@blank*)(@specialHashKeys)/,
  482. [{ token: "delimiter" }, { token: "" }, { token: "identifier" }]
  483. ],
  484. [
  485. /(?:@namedSymbols)/,
  486. {
  487. cases: {
  488. "@arrows": { token: "meta.arrow" },
  489. "@delimiters": { token: "delimiter" },
  490. "@default": { token: "operators" }
  491. }
  492. }
  493. ],
  494. [
  495. /@id/,
  496. {
  497. cases: {
  498. "@keywords": { token: "keyword.$0" },
  499. "@stringOperators": { token: "operators" },
  500. "@default": { token: "identifier" }
  501. }
  502. }
  503. ],
  504. [
  505. /[\[\]\(\)\{\}]/,
  506. {
  507. cases: {
  508. "\\[": {
  509. cases: {
  510. "$S2==gt": { token: "@brackets", next: s("@inParen__id__.gt") },
  511. "@default": { token: "@brackets", next: s("@inParen__id__.plain") }
  512. }
  513. },
  514. "\\]": {
  515. cases: {
  516. ...is.id === "bracket" ? {
  517. "$S2==interpolation": { token: "@brackets.interpolation", next: "@popall" }
  518. } : {},
  519. ...ts.id === "bracket" ? {
  520. "$S2==directive": { token: "@brackets.directive", next: "@popall" }
  521. } : {},
  522. [s("$S1==inParen__id__")]: { token: "@brackets", next: "@pop" },
  523. "@default": { token: "@brackets" }
  524. }
  525. },
  526. "\\(": { token: "@brackets", next: s("@inParen__id__.gt") },
  527. "\\)": {
  528. cases: {
  529. [s("$S1==inParen__id__")]: { token: "@brackets", next: "@pop" },
  530. "@default": { token: "@brackets" }
  531. }
  532. },
  533. "\\{": {
  534. cases: {
  535. "$S2==gt": { token: "@brackets", next: s("@inParen__id__.gt") },
  536. "@default": { token: "@brackets", next: s("@inParen__id__.plain") }
  537. }
  538. },
  539. "\\}": {
  540. cases: {
  541. ...is.id === "bracket" ? {} : {
  542. "$S2==interpolation": { token: "@brackets.interpolation", next: "@popall" }
  543. },
  544. [s("$S1==inParen__id__")]: { token: "@brackets", next: "@pop" },
  545. "@default": { token: "@brackets" }
  546. }
  547. }
  548. }
  549. }
  550. ],
  551. [/\$\{/, { token: "delimiter.invalid" }]
  552. ],
  553. [s("blank_and_expression_comment_token__id__")]: [
  554. [/(?:@blank)+/, { token: "" }],
  555. [/[<\[][#!]--/, { token: "comment", next: s("@expressionComment__id__") }]
  556. ],
  557. [s("directive_end_token__id__")]: [
  558. [
  559. />/,
  560. ts.id === "bracket" ? { token: "operators" } : { token: "@brackets.directive", next: "@popall" }
  561. ],
  562. [
  563. r(/(\/)(@close__id__)/),
  564. [{ token: "delimiter.directive" }, { token: "@brackets.directive", next: "@popall" }]
  565. ]
  566. ],
  567. [s("greater_operators_token__id__")]: [
  568. [/>/, { token: "operators" }],
  569. [/>=/, { token: "operators" }]
  570. ],
  571. [s("no_space_expression_end_token__id__")]: [
  572. [/(?:@blank)+/, { token: "", switchTo: s("@fmExpression__id__.directive") }]
  573. ],
  574. [s("unified_call_token__id__")]: [
  575. [
  576. /(@id)((?:@blank)+)/,
  577. [{ token: "tag" }, { token: "", next: s("@fmExpression__id__.directive") }]
  578. ],
  579. [
  580. r(/(@id)(\/?)(@close__id__)/),
  581. [
  582. { token: "tag" },
  583. { token: "delimiter.directive" },
  584. { token: "@brackets.directive", next: "@popall" }
  585. ]
  586. ],
  587. [/./, { token: "@rematch", next: s("@noSpaceExpression__id__") }]
  588. ],
  589. [s("no_parse_token__id__")]: [
  590. [
  591. r(/(@open__id__)(\/#?)([a-zA-Z]+)((?:@blank)*)(@close__id__)/),
  592. {
  593. cases: {
  594. "$S2==$3": [
  595. { token: "@brackets.directive" },
  596. { token: "delimiter.directive" },
  597. { token: "tag" },
  598. { token: "" },
  599. { token: "@brackets.directive", next: "@popall" }
  600. ],
  601. "$S2==comment": [
  602. { token: "comment" },
  603. { token: "comment" },
  604. { token: "comment" },
  605. { token: "comment" },
  606. { token: "comment" }
  607. ],
  608. "@default": [
  609. { token: "source" },
  610. { token: "source" },
  611. { token: "source" },
  612. { token: "source" },
  613. { token: "source" }
  614. ]
  615. }
  616. }
  617. ],
  618. [
  619. /[^<\[\-]+|[<\[\-]/,
  620. {
  621. cases: {
  622. "$S2==comment": { token: "comment" },
  623. "@default": { token: "source" }
  624. }
  625. }
  626. ]
  627. ],
  628. [s("expression_comment_token__id__")]: [
  629. [
  630. /--[>\]]/,
  631. {
  632. token: "comment",
  633. next: "@pop"
  634. }
  635. ],
  636. [/[^\->\]]+|[>\]\-]/, { token: "comment" }]
  637. ],
  638. [s("terse_comment_token__id__")]: [
  639. [r(/--(?:@close__id__)/), { token: "comment", next: "@popall" }],
  640. [/[^<\[\-]+|[<\[\-]/, { token: "comment" }]
  641. ]
  642. }
  643. };
  644. }
  645. function createMonarchLanguageAuto(is) {
  646. const angle = createMonarchLanguage(TagSyntaxAngle, is);
  647. const bracket = createMonarchLanguage(TagSyntaxBracket, is);
  648. const auto = createMonarchLanguage(TagSyntaxAuto, is);
  649. return {
  650. ...angle,
  651. ...bracket,
  652. ...auto,
  653. unicode: true,
  654. includeLF: false,
  655. start: `default_auto_${is.id}`,
  656. ignoreCase: false,
  657. defaultToken: "invalid",
  658. tokenPostfix: `.freemarker2`,
  659. brackets: [
  660. { open: "{", close: "}", token: "delimiter.curly" },
  661. { open: "[", close: "]", token: "delimiter.square" },
  662. { open: "(", close: ")", token: "delimiter.parenthesis" },
  663. { open: "<", close: ">", token: "delimiter.angle" }
  664. ],
  665. tokenizer: {
  666. ...angle.tokenizer,
  667. ...bracket.tokenizer,
  668. ...auto.tokenizer
  669. }
  670. };
  671. }
  672. var TagAngleInterpolationDollar = {
  673. conf: createLangConfiguration(TagSyntaxAngle),
  674. language: createMonarchLanguage(TagSyntaxAngle, InterpolationSyntaxDollar)
  675. };
  676. var TagBracketInterpolationDollar = {
  677. conf: createLangConfiguration(TagSyntaxBracket),
  678. language: createMonarchLanguage(TagSyntaxBracket, InterpolationSyntaxDollar)
  679. };
  680. var TagAngleInterpolationBracket = {
  681. conf: createLangConfiguration(TagSyntaxAngle),
  682. language: createMonarchLanguage(TagSyntaxAngle, InterpolationSyntaxBracket)
  683. };
  684. var TagBracketInterpolationBracket = {
  685. conf: createLangConfiguration(TagSyntaxBracket),
  686. language: createMonarchLanguage(TagSyntaxBracket, InterpolationSyntaxBracket)
  687. };
  688. var TagAutoInterpolationDollar = {
  689. conf: createLangConfigurationAuto(),
  690. language: createMonarchLanguageAuto(InterpolationSyntaxDollar)
  691. };
  692. var TagAutoInterpolationBracket = {
  693. conf: createLangConfigurationAuto(),
  694. language: createMonarchLanguageAuto(InterpolationSyntaxBracket)
  695. };
  696. return __toCommonJS(freemarker2_exports);
  697. })();
  698. return moduleExports;
  699. });