UNPKG

@visbot/codemirror-avs

Version:
3 lines (2 loc) 6.77 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("codemirror")):"function"==typeof define&&define.amd?define(["codemirror"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).CodeMirror)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=t(e); /*! codemirror-avs | MIT License | github.com/visbot/codemirror-avs */function i(e,t,n,i,a,r){this.indented=e,this.column=t,this.type=n,this.info=i,this.align=a,this.prev=r}function a(e,t,n,a){let r=e.indented;return e.context&&"statement"==e.context.type&&"statement"!=n&&(r=e.context.indented),e.context=new i(r,t,n,a,null,e.context)}function r(e){let t=e.context.type;return")"!=t&&"]"!=t&&"}"!=t||(e.indented=e.context.indented),e.context=e.context.prev}function s(e,t,n){return"variable"==t.prevToken||"type"==t.prevToken||(!!/\S(?:[^- ]>|[*\]])\s*$|\*$/.test(e.string.slice(0,n))||(!(!t.typeAtEndOfLine||e.column()!=e.indentation())||void 0))}function o(e){for(;;){if(!e||"top"==e.type)return!0;if("}"==e.type&&"namespace"!=e.prev.info)return!1;e=e.prev}}function l(e){let t={},n=e.split(" ");for(let e=0;e<n.length;++e)t[n[e]]=!0;return t}function u(e,t){return"function"==typeof e?e(t):Object.prototype.propertyIsEnumerable.call(e,t)}function d(e,t){"string"==typeof e&&(e=[e]);let i=[];function a(e){if(e)for(let t in e)Object.prototype.hasOwnProperty.call(e,t)&&i.push(t)}a(t.variables),a(t.builtin),a(t.constants),i.length&&(t.helperType=e[0],n.default.registerHelper("hintWords",e[0],i));for(let i=0;i<e.length;++i)n.default.defineMIME(e[i],t)}n.default.defineMode("avs",(function(e,t){let l,d,f=e.indentUnit,c=t.statementIndentUnit||f,p=t.dontAlignCalls,m=t.keywords||{},b=t.builtin||{},v=t.blockKeywords||{},y=t.defKeywords||{},h=t.types||{},x=t.constants||{},w=t.variables||{},g=t.hooks||{},k=t.multiLineStrings,z=!1!==t.indentStatements,S=t.namespaceSeparator,C=t.isPunctuationChar||/[[\]{}(),;:.]/,O=t.numberStart||/[\d.]/,$=t.number||/^(?:0x[a-f\d]+|0b[01]+|(?:\d+\.?\d*|\.\d+)(?:e[-+]?\d+)?)(u|ll?|l|f)?/i,I=t.isOperatorChar||/[+\-*&%=<>!?|/]/,L=t.isIdentifierChar||/[\w$_\xa1-\uffff]/;function T(e,t){let n=e.next();if(g[n]){let i=g[n](e,t);if(!1!==i)return i}if('"'==n||"'"==n)return t.tokenize=(i=n,function(e,t){let n,a=!1,r=!1;for(;null!=(n=e.next());){if(n==i&&!a){r=!0;break}a=!a&&"\\"==n}return(r||!a&&!k)&&(t.tokenize=null),"string"}),t.tokenize(e,t);var i;if(C.test(n))return l=n,null;if(O.test(n)){if(e.backUp(1),e.match($))return"number";e.next()}if("/"==n){if(e.eat("*"))return t.tokenize=E,E(e,t);if(e.eat("/"))return e.skipToEnd(),"comment"}if(I.test(n))return"operator";if(e.eatWhile(L),S)for(;e.match(S);)e.eatWhile(L);let a=e.current();return u(m,a)?(u(v,a)&&(l="newstatement"),u(y,a)&&(d=!0),"keyword"):u(h,a)?"type":u(b,a)?(u(v,a)&&(l="newstatement"),"builtin"):u(w,a)?"variable":u(x,a)?"variable-2":"keyword"}function E(e,t){let n,i=!1;for(;n=e.next();){if("/"==n&&i){t.tokenize=null;break}i="*"==n}return"comment"}function q(e,n){t.typeFirstDefinitions&&e.eol()&&o(n.context)&&(n.typeAtEndOfLine=s(e,n,e.pos))}return{startState:function(e){return{tokenize:null,context:new i((e||0)-f,0,"top",null,!1),indented:0,startOfLine:!0,prevToken:null}},token:function(e,n){let i=n.context;if(e.sol()&&(null==i.align&&(i.align=!1),n.indented=e.indentation(),n.startOfLine=!0),e.eatSpace())return q(e,n),null;l=d=null;let u=(n.tokenize||T)(e,n);if("comment"==u||"meta"==u)return u;if(null==i.align&&(i.align=!0),";"==l||":"==l||","==l&&e.match(/^\s*(?:\/\/.*)?$/,!1))for(;"statement"==n.context.type;)r(n);else if("{"==l)a(n,e.column(),"}");else if("["==l)a(n,e.column(),"]");else if("("==l)a(n,e.column(),")");else if("}"==l){for(;"statement"==i.type;)i=r(n);for("}"==i.type&&(i=r(n));"statement"==i.type;)i=r(n)}else l==i.type?r(n):z&&(("}"==i.type||"top"==i.type)&&";"!=l||"statement"==i.type&&"newstatement"==l)&&a(n,e.column(),"statement",e.current());if("variable"==u&&("def"==n.prevToken||t.typeFirstDefinitions&&s(e,n,e.start)&&o(n.context)&&e.match(/^\s*\(/,!1))&&(u="def"),g.token){let t=g.token(e,n,u);void 0!==t&&(u=t)}return"def"==u&&!1===t.styleDefs&&(u="variable"),n.startOfLine=!1,n.prevToken=d?"def":u||l,q(e,n),u},indent:function(e,i){if(e.tokenize!=T&&null!=e.tokenize||e.typeAtEndOfLine)return n.default.Pass;let a=e.context,r=i&&i.charAt(0);if("statement"==a.type&&"}"==r&&(a=a.prev),t.dontIndentStatements)for(;"statement"==a.type&&t.dontIndentStatements.test(a.info);)a=a.prev;if(g.indent){let t=g.indent(e,a,i);if("number"==typeof t)return t}let s=r==a.type,o=a.prev&&"switch"==a.prev.info;if(t.allmanIndentation&&/[{(]/.test(r)){for(;"top"!=a.type&&"}"!=a.type;)a=a.prev;return a.indented}return"statement"==a.type?a.indented+("{"==r?0:c):!a.align||p&&")"==a.type?")"!=a.type||s?a.indented+(s?0:f)+(s||!o||/^(?:case|default)\b/.test(i)?0:f):a.indented+c:a.column+(s?0:1)},blockCommentStart:"/*",blockCommentEnd:"*/",blockCommentContinue:" * ",lineComment:"//"}}));let f=l("abs sin cos tan asin acos atan atan2 sqr sqrt invsqrt pow exp log log10 floor ceil sign min max sigmoid rand band bor bnot if assign exec2 equal above below getosc getspec gettime getkbmouse megabuf gmegabuf loop"),c=l("$e $phi $pi $E $PHI $PI"),p=!1;d(["avs/bump"],{name:"avs",variables:l("x y isBeat isLBeat bi"),builtin:f,constants:c,indentSwitch:p}),d(["avs/color-modifier","avs/cm"],{name:"avs",variables:l("red green blue"),builtin:f,constants:c,indentSwitch:p}),d(["avs/dynamic-distance-modifier","avs/ddm"],{name:"avs",variables:l("d"),builtin:f,constants:c,indentSwitch:p}),d(["avs/dynamic-movement","avs/dm"],{name:"avs",variables:l("x y w h r d alpha"),builtin:f,constants:c,indentSwitch:p}),d(["avs/dynamic-shift","avs/ds"],{name:"avs",variables:l("x y w h b alpha"),builtin:f,constants:c,indentSwitch:p}),d(["avs/effect-list","avs/el"],{name:"avs",variables:l("enabled beat clear alphain alphaout w h"),builtin:f,constants:c,indentSwitch:p}),d(["avs/movement","avs/mov"],{name:"avs",variables:l("r d x y sw sh"),builtin:f,constants:c,indentSwitch:p}),d(["avs/superscope","avs/ssc"],{name:"avs",variables:l("n x y i v b red green blue linesize skip drawmode w h"),builtin:f,constants:c,indentSwitch:p}),d(["avs/texer2","avs/t2"],{name:"avs",variables:l("n w h i x y v b iw ih sizex sizey red green blue skip"),builtin:f,constants:c,indentSwitch:p}),d(["avs/triangle","avs/tr"],{name:"avs",variables:l("n x1 x2 x3 y1 y2 y3 z1 skip red1 blue1 green1 w h zbclear zbuf"),builtin:f,constants:c,indentSwitch:p}),d(["text/x-avs","avs"],{name:"avs",variables:l("alpha alphain alphaout b beat bi blue blue1 clear d drawmode enabled green green1 h i ih isBeat isLBeat iw linesize n r red red1 sh sizex sizey skip sw v w x x1 x2 x3 y y1 y2 y3 z1 zbclear zbuf"),builtin:f,constants:c,indentSwitch:p})}));