|
|
function l(e){for(var t={},a=e.split(" "),r=0;r<a.length;++r)t[a[r]]=!0;return t}var f=l("#end #else #break #stop #[[ #]] #{end} #{else} #{break} #{stop}"),i=l("#if #elseif #foreach #set #include #parse #macro #define #evaluate #{if} #{elseif} #{foreach} #{set} #{include} #{parse} #{macro} #{define} #{evaluate}"),c=l("$foreach.count $foreach.hasNext $foreach.first $foreach.last $foreach.topmost $foreach.parent.count $foreach.parent.hasNext $foreach.parent.first $foreach.parent.last $foreach.parent $velocityCount $!bodyContent $bodyContent"),k=/[+\-*&%=<>!?:\/|]/;function o(e,t,a){return t.tokenize=a,a(e,t)}function s(e,t){var a=t.beforeParams;t.beforeParams=!1;var r=e.next();if(r=="'"&&!t.inString&&t.inParams)return t.lastTokenWasBuiltin=!1,o(e,t,p(r));if(r=='"'){if(t.lastTokenWasBuiltin=!1,t.inString)return t.inString=!1,"string";if(t.inParams)return o(e,t,p(r))}else{if(/[\[\]{}\(\),;\.]/.test(r))return r=="("&&a?t.inParams=!0:r==")"&&(t.inParams=!1,t.lastTokenWasBuiltin=!0),null;if(/\d/.test(r))return t.lastTokenWasBuiltin=!1,e.eatWhile(/[\w\.]/),"number";if(r=="#"&&e.eat("*"))return t.lastTokenWasBuiltin=!1,o(e,t,m);if(r=="#"&&e.match(/ *\[ *\[/))return t.lastTokenWasBuiltin=!1,o(e,t,h);if(r=="#"&&e.eat("#"))return t.lastTokenWasBuiltin=!1,e.skipToEnd(),"comment";if(r=="$")return e.eat("!"),e.eatWhile(/[\w\d\$_\.{}-]/),c&&c.propertyIsEnumerable(e.current())?"keyword":(t.lastTokenWasBuiltin=!0,t.beforeParams=!0,"builtin");if(k.test(r))return t.lastTokenWasBuiltin=!1,e.eatWhile(k),"operator";e.eatWhile(/[\w\$_{}@]/);var n=e.current();return f&&f.propertyIsEnumerable(n)?"keyword":i&&i.propertyIsEnumerable(n)||e.current().match(/^#@?[a-z0-9_]+ *$/i)&&e.peek()=="("&&!(i&&i.propertyIsEnumerable(n.toLowerCase()))?(t.beforeParams=!0,t.lastTokenWasBuiltin=!1,"keyword"):t.inString?(t.lastTokenWasBuiltin=!1,"string"):e.pos>n.length&&e.string.charAt(e.pos-n.length-1)=="."&&t.lastTokenWasBuiltin?"builtin":(t.lastTokenWasBuiltin=!1,null)}}function p(e){return function(t,a){for(var r=!1,n,u=!1;(n=t.next())!=null;){if(n==e&&!r){u=!0;break}if(e=='"'&&t.peek()=="$"&&!r){a.inString=!0,u=!0;break}r=!r&&n=="\\"}return u&&(a.tokenize=s),"string"}}function m(e,t){for(var a=!1,r;r=e.next();){if(r=="#"&&a){t.tokenize=s;break}a=r=="*"}return"comment"}function h(e,t){for(var a=0,r;r=e.next();){if(r=="#"&&a==2){t.tokenize=s;break}r=="]"?a++:r!=" "&&(a=0)}return"meta"}const b={name:"velocity",startState:function(){return{tokenize:s,beforeParams:!1,inParams:!1,inString:!1,lastTokenWasBuiltin:!1}},token:function(e,t){return e.eatSpace()?null:t.tokenize(e,t)},languageData:{commentTokens:{line:"##",block:{open:"#*",close:"*#"}}}};export{b as velocity};
|