mumuki-laboratory 5.0.1 → 5.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/mumuki/laboratory/version.rb +1 -1
- data/vendor/assets/javascripts/analytics.js +4 -0
- data/vendor/assets/javascripts/codemirror-modes/assembly_x86.js +967 -0
- data/vendor/assets/javascripts/codemirror-modes/autocomplete.js +44 -0
- data/vendor/assets/javascripts/codemirror-modes/clike.min.js +1 -0
- data/vendor/assets/javascripts/codemirror-modes/closebrackets.min.js +1 -0
- data/vendor/assets/javascripts/codemirror-modes/css-hint.min.js +1 -0
- data/vendor/assets/javascripts/codemirror-modes/css.min.js +1 -0
- data/vendor/assets/javascripts/codemirror-modes/elixir.js +1284 -0
- data/vendor/assets/javascripts/codemirror-modes/gobstones-autocomplete.js +4 -0
- data/vendor/assets/javascripts/codemirror-modes/gobstones.js +1046 -0
- data/vendor/assets/javascripts/codemirror-modes/haskell-autocomplete.js +1 -0
- data/vendor/assets/javascripts/codemirror-modes/haskell.min.js +1 -0
- data/vendor/assets/javascripts/codemirror-modes/html-hint.min.js +1 -0
- data/vendor/assets/javascripts/codemirror-modes/htmlmixed.min.js +1 -0
- data/vendor/assets/javascripts/codemirror-modes/javascript-hint.min.js +1 -0
- data/vendor/assets/javascripts/codemirror-modes/javascript.min.js +1 -0
- data/vendor/assets/javascripts/codemirror-modes/markdown.min.js +1 -0
- data/vendor/assets/javascripts/codemirror-modes/matchbrackets.min.js +1 -0
- data/vendor/assets/javascripts/codemirror-modes/placeholder.min.js +1 -0
- data/vendor/assets/javascripts/codemirror-modes/prolog-autocomplete.js +1 -0
- data/vendor/assets/javascripts/codemirror-modes/prolog.js +1089 -0
- data/vendor/assets/javascripts/codemirror-modes/python.min.js +1 -0
- data/vendor/assets/javascripts/codemirror-modes/ruby-autocomplete.js +3 -0
- data/vendor/assets/javascripts/codemirror-modes/ruby.min.js +1 -0
- data/vendor/assets/javascripts/codemirror-modes/shell.min.js +1 -0
- data/vendor/assets/javascripts/codemirror-modes/show-hint.min.js +1 -0
- data/vendor/assets/javascripts/codemirror-modes/sql-hint.min.js +1 -0
- data/vendor/assets/javascripts/codemirror-modes/sql.min.js +1 -0
- data/vendor/assets/javascripts/codemirror-modes/wollok-autocomplete.js +3 -0
- data/vendor/assets/javascripts/codemirror-modes/wollok.js +1035 -0
- data/vendor/assets/javascripts/codemirror-modes/xml-hint.min.js +1 -0
- data/vendor/assets/javascripts/codemirror-modes/xml.min.js +1 -0
- data/vendor/assets/javascripts/codemirror.min.js +1 -0
- data/vendor/assets/javascripts/hotjar.js +8 -0
- data/vendor/assets/javascripts/jquery-console.js +845 -0
- data/vendor/assets/javascripts/webcomponents-lite.js +12 -0
- data/vendor/assets/stylesheets/codemirror/codemirror.min.css +2 -0
- data/vendor/assets/stylesheets/codemirror/show-hint.min.css +2 -0
- metadata +39 -1
@@ -0,0 +1 @@
|
|
1
|
+
registerAutocomplete('haskell', 'case of class data instance deriving do if then else let in newtype type where'.split(' '));
|
@@ -0,0 +1 @@
|
|
1
|
+
!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror-modes")):"function"==typeof define&&define.amd?define(["../../lib/codemirror-modes"],e):e(CodeMirror)}(function(e){"use strict";e.defineMode("haskell",function(e,r){function t(e,r,t){return r(t),t(e,r)}function n(e,r){if(e.eatWhile(p))return null;var n=e.next();if(h.test(n)){if("{"==n&&e.eat("-")){o="comment";return e.eat("#")&&(o="meta"),t(e,r,i(o,1))}return null}if("'"==n)return e.eat("\\"),e.next(),e.eat("'")?"string":"string error";if('"'==n)return t(e,r,a);if(u.test(n))return e.eatWhile(d),e.eat(".")?"qualifier":"variable-2";if(l.test(n))return e.eatWhile(d),"variable";if(f.test(n)){if("0"==n){if(e.eat(/[xX]/))return e.eatWhile(s),"integer";if(e.eat(/[oO]/))return e.eatWhile(c),"number"}e.eatWhile(f);o="number";return e.match(/^\.\d+/)&&(o="number"),e.eat(/[eE]/)&&(o="number",e.eat(/[-+]/),e.eatWhile(f)),o}if("."==n&&e.eat("."))return"keyword";if(m.test(n)){if("-"==n&&e.eat(/-/)&&(e.eatWhile(/-/),!e.eat(m)))return e.skipToEnd(),"comment";var o="variable";return":"==n&&(o="variable-2"),e.eatWhile(m),o}return"error"}function i(e,r){return 0==r?n:function(t,a){for(var o=r;!t.eol();){var l=t.next();if("{"==l&&t.eat("-"))++o;else if("-"==l&&t.eat("}")&&0==--o)return a(n),e}return a(i(e,o)),e}}function a(e,r){for(;!e.eol();){var t=e.next();if('"'==t)return r(n),"string";if("\\"==t){if(e.eol()||e.eat(p))return r(o),"string";e.eat("&")||e.next()}}return r(n),"string error"}function o(e,r){return e.eat("\\")?t(e,r,a):(e.next(),r(n),"error")}var l=/[a-z_]/,u=/[A-Z]/,f=/\d/,s=/[0-9A-Fa-f]/,c=/[0-7]/,d=/[a-z_A-Z0-9'\xa1-\uffff]/,m=/[-!#$%&*+.\/<=>?@\\^|~:]/,h=/[(),;[\]`{}]/,p=/[ \t\v\f]/,g=function(){function e(e){return function(){for(var r=0;r<arguments.length;r++)t[arguments[r]]=e}}var t={};e("keyword")("case","class","data","default","deriving","do","else","foreign","if","import","in","infix","infixl","infixr","instance","let","module","newtype","of","then","type","where","_"),e("keyword")("..",":","::","=","\\","<-","->","@","~","=>"),e("builtin")("!!","$!","$","&&","+","++","-",".","/","/=","<","<=","=<<","==",">",">=",">>",">>=","^","^^","||","*","**"),e("builtin")("Bool","Bounded","Char","Double","EQ","Either","Enum","Eq","False","FilePath","Float","Floating","Fractional","Functor","GT","IO","IOError","Int","Integer","Integral","Just","LT","Left","Maybe","Monad","Nothing","Num","Ord","Ordering","Rational","Read","ReadS","Real","RealFloat","RealFrac","Right","Show","ShowS","String","True"),e("builtin")("abs","acos","acosh","all","and","any","appendFile","asTypeOf","asin","asinh","atan","atan2","atanh","break","catch","ceiling","compare","concat","concatMap","const","cos","cosh","curry","cycle","decodeFloat","div","divMod","drop","dropWhile","either","elem","encodeFloat","enumFrom","enumFromThen","enumFromThenTo","enumFromTo","error","even","exp","exponent","fail","filter","flip","floatDigits","floatRadix","floatRange","floor","fmap","foldl","foldl1","foldr","foldr1","fromEnum","fromInteger","fromIntegral","fromRational","fst","gcd","getChar","getContents","getLine","head","id","init","interact","ioError","isDenormalized","isIEEE","isInfinite","isNaN","isNegativeZero","iterate","last","lcm","length","lex","lines","log","logBase","lookup","map","mapM","mapM_","max","maxBound","maximum","maybe","min","minBound","minimum","mod","negate","not","notElem","null","odd","or","otherwise","pi","pred","print","product","properFraction","putChar","putStr","putStrLn","quot","quotRem","read","readFile","readIO","readList","readLn","readParen","reads","readsPrec","realToFrac","recip","rem","repeat","replicate","return","reverse","round","scaleFloat","scanl","scanl1","scanr","scanr1","seq","sequence","sequence_","show","showChar","showList","showParen","showString","shows","showsPrec","significand","signum","sin","sinh","snd","span","splitAt","sqrt","subtract","succ","sum","tail","take","takeWhile","tan","tanh","toEnum","toInteger","toRational","truncate","uncurry","undefined","unlines","until","unwords","unzip","unzip3","userError","words","writeFile","zip","zip3","zipWith","zipWith3");var n=r.overrideKeywords;if(n)for(var i in n)n.hasOwnProperty(i)&&(t[i]=n[i]);return t}();return{startState:function(){return{f:n}},copyState:function(e){return{f:e.f}},token:function(e,r){var t=r.f(e,function(e){r.f=e}),n=e.current();return g.hasOwnProperty(n)?g[n]:t},blockCommentStart:"{-",blockCommentEnd:"-}",lineComment:"--"}}),e.defineMIME("text/x-haskell","haskell")});
|
@@ -0,0 +1 @@
|
|
1
|
+
!function(l){"object"==typeof exports&&"object"==typeof module?l(require("../../lib/codemirror-modes"),require("./xml-hint")):"function"==typeof define&&define.amd?define(["../../lib/codemirror-modes","./xml-hint"],l):l(CodeMirror)}(function(l){"use strict";function t(l){for(var t in d)d.hasOwnProperty(t)&&(l.attrs[t]=d[t])}var e="ab aa af ak sq am ar an hy as av ae ay az bm ba eu be bn bh bi bs br bg my ca ch ce ny zh cv kw co cr hr cs da dv nl dz en eo et ee fo fj fi fr ff gl ka de el gn gu ht ha he hz hi ho hu ia id ie ga ig ik io is it iu ja jv kl kn kr ks kk km ki rw ky kv kg ko ku kj la lb lg li ln lo lt lu lv gv mk mg ms ml mt mi mr mh mn na nv nb nd ne ng nn no ii nr oc oj cu om or os pa pi fa pl ps pt qu rm rn ro ru sa sc sd se sm sg sr gd sn si sk sl so st es su sw ss sv ta te tg th ti bo tk tl tn to tr ts tt tw ty ug uk ur uz ve vi vo wa cy wo fy xh yi yo za zu".split(" "),a=["_blank","_self","_top","_parent"],n=["ascii","utf-8","utf-16","latin1","latin1"],r=["get","post","put","delete"],o=["application/x-www-form-urlencoded","multipart/form-data","text/plain"],s=["all","screen","print","embossed","braille","handheld","print","projection","screen","tty","tv","speech","3d-glasses","resolution [>][<][=] [X]","device-aspect-ratio: X/Y","orientation:portrait","orientation:landscape","device-height: [X]","device-width: [X]"],u={attrs:{}},i={a:{attrs:{href:null,ping:null,type:null,media:s,target:a,hreflang:e}},abbr:u,acronym:u,address:u,applet:u,area:{attrs:{alt:null,coords:null,href:null,target:null,ping:null,media:s,hreflang:e,type:null,shape:["default","rect","circle","poly"]}},article:u,aside:u,audio:{attrs:{src:null,mediagroup:null,crossorigin:["anonymous","use-credentials"],preload:["none","metadata","auto"],autoplay:["","autoplay"],loop:["","loop"],controls:["","controls"]}},b:u,base:{attrs:{href:null,target:a}},basefont:u,bdi:u,bdo:u,big:u,blockquote:{attrs:{cite:null}},body:u,br:u,button:{attrs:{form:null,formaction:null,name:null,value:null,autofocus:["","autofocus"],disabled:["","autofocus"],formenctype:o,formmethod:r,formnovalidate:["","novalidate"],formtarget:a,type:["submit","reset","button"]}},canvas:{attrs:{width:null,height:null}},caption:u,center:u,cite:u,code:u,col:{attrs:{span:null}},colgroup:{attrs:{span:null}},command:{attrs:{type:["command","checkbox","radio"],label:null,icon:null,radiogroup:null,command:null,title:null,disabled:["","disabled"],checked:["","checked"]}},data:{attrs:{value:null}},datagrid:{attrs:{disabled:["","disabled"],multiple:["","multiple"]}},datalist:{attrs:{data:null}},dd:u,del:{attrs:{cite:null,datetime:null}},details:{attrs:{open:["","open"]}},dfn:u,dir:u,div:u,dl:u,dt:u,em:u,embed:{attrs:{src:null,type:null,width:null,height:null}},eventsource:{attrs:{src:null}},fieldset:{attrs:{disabled:["","disabled"],form:null,name:null}},figcaption:u,figure:u,font:u,footer:u,form:{attrs:{action:null,name:null,"accept-charset":n,autocomplete:["on","off"],enctype:o,method:r,novalidate:["","novalidate"],target:a}},frame:u,frameset:u,h1:u,h2:u,h3:u,h4:u,h5:u,h6:u,head:{attrs:{},children:["title","base","link","style","meta","script","noscript","command"]},header:u,hgroup:u,hr:u,html:{attrs:{manifest:null},children:["head","body"]},i:u,iframe:{attrs:{src:null,srcdoc:null,name:null,width:null,height:null,sandbox:["allow-top-navigation","allow-same-origin","allow-forms","allow-scripts"],seamless:["","seamless"]}},img:{attrs:{alt:null,src:null,ismap:null,usemap:null,width:null,height:null,crossorigin:["anonymous","use-credentials"]}},input:{attrs:{alt:null,dirname:null,form:null,formaction:null,height:null,list:null,max:null,maxlength:null,min:null,name:null,pattern:null,placeholder:null,size:null,src:null,step:null,value:null,width:null,accept:["audio/*","video/*","image/*"],autocomplete:["on","off"],autofocus:["","autofocus"],checked:["","checked"],disabled:["","disabled"],formenctype:o,formmethod:r,formnovalidate:["","novalidate"],formtarget:a,multiple:["","multiple"],readonly:["","readonly"],required:["","required"],type:["hidden","text","search","tel","url","email","password","datetime","date","month","week","time","datetime-local","number","range","color","checkbox","radio","file","submit","image","reset","button"]}},ins:{attrs:{cite:null,datetime:null}},kbd:u,keygen:{attrs:{challenge:null,form:null,name:null,autofocus:["","autofocus"],disabled:["","disabled"],keytype:["RSA"]}},label:{attrs:{for:null,form:null}},legend:u,li:{attrs:{value:null}},link:{attrs:{href:null,type:null,hreflang:e,media:s,sizes:["all","16x16","16x16 32x32","16x16 32x32 64x64"]}},map:{attrs:{name:null}},mark:u,menu:{attrs:{label:null,type:["list","context","toolbar"]}},meta:{attrs:{content:null,charset:n,name:["viewport","application-name","author","description","generator","keywords"],"http-equiv":["content-language","content-type","default-style","refresh"]}},meter:{attrs:{value:null,min:null,low:null,high:null,max:null,optimum:null}},nav:u,noframes:u,noscript:u,object:{attrs:{data:null,type:null,name:null,usemap:null,form:null,width:null,height:null,typemustmatch:["","typemustmatch"]}},ol:{attrs:{reversed:["","reversed"],start:null,type:["1","a","A","i","I"]}},optgroup:{attrs:{disabled:["","disabled"],label:null}},option:{attrs:{disabled:["","disabled"],label:null,selected:["","selected"],value:null}},output:{attrs:{for:null,form:null,name:null}},p:u,param:{attrs:{name:null,value:null}},pre:u,progress:{attrs:{value:null,max:null}},q:{attrs:{cite:null}},rp:u,rt:u,ruby:u,s:u,samp:u,script:{attrs:{type:["text/javascript"],src:null,async:["","async"],defer:["","defer"],charset:n}},section:u,select:{attrs:{form:null,name:null,size:null,autofocus:["","autofocus"],disabled:["","disabled"],multiple:["","multiple"]}},small:u,source:{attrs:{src:null,type:null,media:null}},span:u,strike:u,strong:u,style:{attrs:{type:["text/css"],media:s,scoped:null}},sub:u,summary:u,sup:u,table:u,tbody:u,td:{attrs:{colspan:null,rowspan:null,headers:null}},textarea:{attrs:{dirname:null,form:null,maxlength:null,name:null,placeholder:null,rows:null,cols:null,autofocus:["","autofocus"],disabled:["","disabled"],readonly:["","readonly"],required:["","required"],wrap:["soft","hard"]}},tfoot:u,th:{attrs:{colspan:null,rowspan:null,headers:null,scope:["row","col","rowgroup","colgroup"]}},thead:u,time:{attrs:{datetime:null}},title:u,tr:u,track:{attrs:{src:null,label:null,default:null,kind:["subtitles","captions","descriptions","chapters","metadata"],srclang:e}},tt:u,u:u,ul:u,var:u,video:{attrs:{src:null,poster:null,width:null,height:null,crossorigin:["anonymous","use-credentials"],preload:["auto","metadata","none"],autoplay:["","autoplay"],mediagroup:["movie"],muted:["","muted"],controls:["","controls"]}},wbr:u},d={accesskey:["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9"],class:null,contenteditable:["true","false"],contextmenu:null,dir:["ltr","rtl","auto"],draggable:["true","false","auto"],dropzone:["copy","move","link","string:","file:"],hidden:["hidden"],id:null,inert:["inert"],itemid:null,itemprop:null,itemref:null,itemscope:["itemscope"],itemtype:null,lang:["en","es"],spellcheck:["true","false"],style:null,tabindex:["1","2","3","4","5","6","7","8","9"],title:null,translate:["yes","no"],onclick:null,rel:["stylesheet","alternate","author","bookmark","help","license","next","nofollow","noreferrer","prefetch","prev","search","tag"]};t(u);for(var c in i)i.hasOwnProperty(c)&&i[c]!=u&&t(i[c]);l.htmlSchema=i,l.registerHelper("hint","html",function(t,e){var a={schemaInfo:i};if(e)for(var n in e)a[n]=e[n];return l.hint.xml(t,a)})});
|
@@ -0,0 +1 @@
|
|
1
|
+
!function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror-modes"),require("../xml/xml"),require("../javascript/javascript"),require("../css/css")):"function"==typeof define&&define.amd?define(["../../lib/codemirror-modes","../xml/xml","../javascript/javascript","../css/css"],t):t(CodeMirror)}(function(t){"use strict";function e(t,e,a){var n=t.current(),l=n.search(e);return l>-1?t.backUp(n.length-l):n.match(/<\/?$/)&&(t.backUp(n.length),t.match(e,!1)||t.match(n)),a}function a(t){var e=i[t];return e||(i[t]=new RegExp("\\s+"+t+"\\s*=\\s*('|\")?([^'\"]+)('|\")?\\s*"))}function n(t,e){var n=t.match(a(e));return n?/^\s*(.*?)\s*$/.exec(n[2])[1]:""}function l(t,e){return new RegExp((e?"^":"")+"</s*"+t+"s*>","i")}function r(t,e){for(var a in t)for(var n=e[a]||(e[a]=[]),l=t[a],r=l.length-1;r>=0;r--)n.unshift(l[r])}function o(t,e){for(var a=0;a<t.length;a++){var l=t[a];if(!l[0]||l[1].test(n(e,l[0])))return l[2]}}var c={script:[["lang",/(javascript|babel)/i,"javascript"],["type",/^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^module$|^$/i,"javascript"],["type",/./,"text/plain"],[null,null,"javascript"]],style:[["lang",/^css$/i,"css"],["type",/^(text\/)?(x-)?(stylesheet|css)$/i,"css"],["type",/./,"text/plain"],[null,null,"css"]]},i={};t.defineMode("htmlmixed",function(a,n){function i(n,r){var c,m=s.token(n,r.htmlState),d=/\btag\b/.test(m);if(d&&!/[<>\s\/]/.test(n.current())&&(c=r.htmlState.tagName&&r.htmlState.tagName.toLowerCase())&&u.hasOwnProperty(c))r.inTag=c+" ";else if(r.inTag&&d&&/>$/.test(n.current())){var f=/^([\S]+) (.*)/.exec(r.inTag);r.inTag=null;var p=">"==n.current()&&o(u[f[1]],f[2]),g=t.getMode(a,p),h=l(f[1],!0),S=l(f[1],!1);r.token=function(t,a){return t.match(h,!1)?(a.token=i,a.localState=a.localMode=null,null):e(t,S,a.localMode.token(t,a.localState))},r.localMode=g,r.localState=t.startState(g,s.indent(r.htmlState,""))}else r.inTag&&(r.inTag+=n.current(),n.eol()&&(r.inTag+=" "));return m}var s=t.getMode(a,{name:"xml",htmlMode:!0,multilineTagIndentFactor:n.multilineTagIndentFactor,multilineTagIndentPastTag:n.multilineTagIndentPastTag}),u={},m=n&&n.tags,d=n&&n.scriptTypes;if(r(c,u),m&&r(m,u),d)for(var f=d.length-1;f>=0;f--)u.script.unshift(["type",d[f].matches,d[f].mode]);return{startState:function(){return{token:i,inTag:null,localMode:null,localState:null,htmlState:t.startState(s)}},copyState:function(e){var a;return e.localState&&(a=t.copyState(e.localMode,e.localState)),{token:e.token,inTag:e.inTag,localMode:e.localMode,localState:a,htmlState:t.copyState(s,e.htmlState)}},token:function(t,e){return e.token(t,e)},indent:function(e,a,n){return!e.localMode||/^\s*<\//.test(a)?s.indent(e.htmlState,a):e.localMode.indent?e.localMode.indent(e.localState,a,n):t.Pass},innerMode:function(t){return{state:t.localState||t.htmlState,mode:t.localMode||s}}}},"xml","javascript","css"),t.defineMIME("text/html","htmlmixed")});
|
@@ -0,0 +1 @@
|
|
1
|
+
!function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror-modes")):"function"==typeof define&&define.amd?define(["../../lib/codemirror-modes"],t):t(CodeMirror)}(function(t){function e(t,e){for(var r=0,n=t.length;r<n;++r)e(t[r])}function r(t,e){if(!Array.prototype.indexOf){for(var r=t.length;r--;)if(t[r]===e)return!0;return!1}return-1!=t.indexOf(e)}function n(e,r,n,i){var o=e.getCursor(),f=n(e,o);if(!/\b(?:string|comment)\b/.test(f.type)){f.state=t.innerMode(e.getMode(),f.state).state,/^[\w$_]*$/.test(f.string)?f.end>o.ch&&(f.end=o.ch,f.string=f.string.slice(0,o.ch-f.start)):f={start:o.ch,end:o.ch,string:"",state:f.state,type:"."==f.string?"property":null};for(var l=f;"property"==l.type;){if("."!=(l=n(e,a(o.line,l.start))).string)return;if(l=n(e,a(o.line,l.start)),!c)var c=[];c.push(l)}return{list:s(f,c,r,i),from:a(o.line,f.start),to:a(o.line,f.end)}}}function i(t,e){var r=t.getTokenAt(e);return e.ch==r.start+1&&"."==r.string.charAt(0)?(r.end=r.start,r.string=".",r.type="property"):/^\.[\w$_]*$/.test(r.string)&&(r.type="property",r.start++,r.string=r.string.replace(/\./,"")),r}function o(t,e){if(Object.getOwnPropertyNames&&Object.getPrototypeOf)for(var r=t;r;r=Object.getPrototypeOf(r))Object.getOwnPropertyNames(r).forEach(e);else for(var n in t)e(n)}function s(t,n,i,s){function a(t){0!=t.lastIndexOf(g,0)||r(u,t)||u.push(t)}function p(t){"string"==typeof t?e(f,a):t instanceof Array?e(l,a):t instanceof Function&&e(c,a),o(t,a)}var u=[],g=t.string,d=s&&s.globalScope||window;if(n&&n.length){var y,h=n.pop();for(h.type&&0===h.type.indexOf("variable")?(s&&s.additionalContext&&(y=s.additionalContext[h.string]),s&&!1===s.useGlobalScope||(y=y||d[h.string])):"string"==h.type?y="":"atom"==h.type?y=1:"function"==h.type&&(null==d.jQuery||"$"!=h.string&&"jQuery"!=h.string||"function"!=typeof d.jQuery?null!=d._&&"_"==h.string&&"function"==typeof d._&&(y=d._()):y=d.jQuery());null!=y&&n.length;)y=y[n.pop().string];null!=y&&p(y)}else{for(b=t.state.localVars;b;b=b.next)a(b.name);for(var b=t.state.globalVars;b;b=b.next)a(b.name);s&&!1===s.useGlobalScope||p(d),e(i,a)}return u}var a=t.Pos;t.registerHelper("hint","javascript",function(t,e){return n(t,p,function(t,e){return t.getTokenAt(e)},e)}),t.registerHelper("hint","coffeescript",function(t,e){return n(t,u,i,e)});var f="charAt charCodeAt indexOf lastIndexOf substring substr slice trim trimLeft trimRight toUpperCase toLowerCase split concat match replace search".split(" "),l="length concat join splice push pop shift unshift slice reverse sort indexOf lastIndexOf every some filter forEach map reduce reduceRight ".split(" "),c="prototype apply call bind".split(" "),p="break case catch continue debugger default delete do else false finally for function if in instanceof new null return switch throw true try typeof var void while with".split(" "),u="and break catch class continue delete do else extends false finally for if in instanceof isnt new no not null of off on or return switch then throw true try typeof until void while with yes".split(" ")});
|
@@ -0,0 +1 @@
|
|
1
|
+
!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror-modes")):"function"==typeof define&&define.amd?define(["../../lib/codemirror-modes"],e):e(CodeMirror)}(function(e){"use strict";e.defineMode("javascript",function(t,r){function n(e){for(var t,r=!1,n=!1;null!=(t=e.next());){if(!r){if("/"==t&&!n)return;"["==t?n=!0:n&&"]"==t&&(n=!1)}r=!r&&"\\"==t}}function a(e,t,r){return Ae=e,Ee=r,t}function i(e,t){var r=e.next();if('"'==r||"'"==r)return t.tokenize=o(r),t.tokenize(e,t);if("."==r&&e.match(/^\d+(?:[eE][+\-]?\d+)?/))return a("number","number");if("."==r&&e.match(".."))return a("spread","meta");if(/[\[\]{}\(\),;\:\.]/.test(r))return a(r);if("="==r&&e.eat(">"))return a("=>","operator");if("0"==r&&e.eat(/x/i))return e.eatWhile(/[\da-f]/i),a("number","number");if("0"==r&&e.eat(/o/i))return e.eatWhile(/[0-7]/i),a("number","number");if("0"==r&&e.eat(/b/i))return e.eatWhile(/[01]/i),a("number","number");if(/\d/.test(r))return e.match(/^\d*(?:\.\d*)?(?:[eE][+\-]?\d+)?/),a("number","number");if("/"==r)return e.eat("*")?(t.tokenize=c,c(e,t)):e.eat("/")?(e.skipToEnd(),a("comment","comment")):Ve(e,t,1)?(n(e),e.match(/^\b(([gimyu])(?![gimyu]*\2))+\b/),a("regexp","string-2")):(e.eatWhile(We),a("operator","operator",e.current()));if("`"==r)return t.tokenize=u,u(e,t);if("#"==r)return e.skipToEnd(),a("error","error");if(We.test(r))return">"==r&&t.lexical&&">"==t.lexical.type||e.eatWhile(We),a("operator","operator",e.current());if(Ce.test(r)){e.eatWhile(Ce);var i=e.current();if("."!=t.lastType){if(Oe.propertyIsEnumerable(i)){var s=Oe[i];return a(s.type,s.style,i)}if("async"==i&&e.match(/^\s*[\(\w]/,!1))return a("async","keyword",i)}return a("variable","variable",i)}}function o(e){return function(t,r){var n,o=!1;if(Te&&"@"==t.peek()&&t.match(Pe))return r.tokenize=i,a("jsonld-keyword","meta");for(;null!=(n=t.next())&&(n!=e||o);)o=!o&&"\\"==n;return o||(r.tokenize=i),a("string","string")}}function c(e,t){for(var r,n=!1;r=e.next();){if("/"==r&&n){t.tokenize=i;break}n="*"==r}return a("comment","comment")}function u(e,t){for(var r,n=!1;null!=(r=e.next());){if(!n&&("`"==r||"$"==r&&e.eat("{"))){t.tokenize=i;break}n=!n&&"\\"==r}return a("quasi","string-2",e.current())}function s(e,t){t.fatArrowAt&&(t.fatArrowAt=null);var r=e.string.indexOf("=>",e.start);if(!(r<0)){if(qe){var n=/:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(e.string.slice(e.start,r));n&&(r=n.index)}for(var a=0,i=!1,o=r-1;o>=0;--o){var c=e.string.charAt(o),u=Se.indexOf(c);if(u>=0&&u<3){if(!a){++o;break}if(0==--a){"("==c&&(i=!0);break}}else if(u>=3&&u<6)++a;else if(Ce.test(c))i=!0;else{if(/["'\/]/.test(c))return;if(i&&!a){++o;break}}}i&&!a&&(t.fatArrowAt=o)}}function f(e,t,r,n,a,i){this.indented=e,this.column=t,this.type=r,this.prev=a,this.info=i,null!=n&&(this.align=n)}function l(e,t){for(n=e.localVars;n;n=n.next)if(n.name==t)return!0;for(var r=e.context;r;r=r.prev)for(var n=r.vars;n;n=n.next)if(n.name==t)return!0}function d(e,t,r,n,a){var i=e.cc;for(Ue.state=e,Ue.stream=a,Ue.marked=null,Ue.cc=i,Ue.style=t,e.lexical.hasOwnProperty("align")||(e.lexical.align=!0);;)if((i.length?i.pop():$e?g:h)(r,n)){for(;i.length&&i[i.length-1].lex;)i.pop()();return Ue.marked?Ue.marked:"variable"==r&&l(e,n)?"variable-2":t}}function p(){for(var e=arguments.length-1;e>=0;e--)Ue.cc.push(arguments[e])}function m(){return p.apply(null,arguments),!0}function v(e){function t(t){for(var r=t;r;r=r.next)if(r.name==e)return!0;return!1}var n=Ue.state;if(Ue.marked="def",n.context){if(t(n.localVars))return;n.localVars={name:e,next:n.localVars}}else{if(t(n.globalVars))return;r.globalVars&&(n.globalVars={name:e,next:n.globalVars})}}function y(){Ue.state.context={prev:Ue.state.context,vars:Ue.state.localVars},Ue.state.localVars=Be}function k(){Ue.state.localVars=Ue.state.context.vars,Ue.state.context=Ue.state.context.prev}function b(e,t){var r=function(){var r=Ue.state,n=r.indented;if("stat"==r.lexical.type)n=r.lexical.indented;else for(var a=r.lexical;a&&")"==a.type&&a.align;a=a.prev)n=a.indented;r.lexical=new f(n,Ue.stream.column(),e,null,r.lexical,t)};return r.lex=!0,r}function x(){var e=Ue.state;e.lexical.prev&&(")"==e.lexical.type&&(e.indented=e.lexical.indented),e.lexical=e.lexical.prev)}function w(e){function t(r){return r==e?m():";"==e?p():m(t)}return t}function h(e,t){return"var"==e?m(b("vardef",t.length),Z,w(";"),x):"keyword a"==e?m(b("form"),M,h,x):"keyword b"==e?m(b("form"),h,x):"{"==e?m(b("}"),G,x):";"==e?m():"if"==e?("else"==Ue.state.lexical.info&&Ue.state.cc[Ue.state.cc.length-1]==x&&Ue.state.cc.pop()(),m(b("form"),M,h,x,ne)):"function"==e?m(se):"for"==e?m(b("form"),ae,h,x):"variable"==e?qe&&"type"==t?(Ue.marked="keyword",m(K,w("operator"),K,w(";"))):qe&&"declare"==t?(Ue.marked="keyword",m(h)):m(b("stat"),S):"switch"==e?m(b("form"),M,w("{"),b("}","switch"),G,x,x):"case"==e?m(g,w(":")):"default"==e?m(w(":")):"catch"==e?m(b("form"),y,w("("),fe,w(")"),h,x,k):"class"==e?m(b("form"),de,x):"export"==e?m(b("stat"),ye,x):"import"==e?m(b("stat"),be,x):"module"==e?m(b("form"),_,w("{"),b("}"),G,x,x):"async"==e?m(h):"@"==t?m(g,h):p(b("stat"),g,w(";"),x)}function g(e){return V(e,!1)}function j(e){return V(e,!0)}function M(e){return"("!=e?p():m(b(")"),g,w(")"),x)}function V(e,t){if(Ue.state.fatArrowAt==Ue.stream.start){var r=t?C:q;if("("==e)return m(y,b(")"),D(fe,")"),x,w("=>"),r,k);if("variable"==e)return p(y,_,w("=>"),r,k)}var n=t?I:z;return Ne.hasOwnProperty(e)?m(n):"function"==e?m(se,n):"class"==e?m(b("form"),le,x):"keyword c"==e||"async"==e?m(t?E:A):"("==e?m(b(")"),A,w(")"),x,n):"operator"==e||"spread"==e?m(t?j:g):"["==e?m(b("]"),je,x,n):"{"==e?F(U,"}",null,n):"quasi"==e?p(T,n):"new"==e?m(O(t)):m()}function A(e){return e.match(/[;\}\)\],]/)?p():p(g)}function E(e){return e.match(/[;\}\)\],]/)?p():p(j)}function z(e,t){return","==e?m(g):I(e,t,!1)}function I(e,t,r){var n=0==r?z:I,a=0==r?g:j;return"=>"==e?m(y,r?C:q,k):"operator"==e?/\+\+|--/.test(t)||qe&&"!"==t?m(n):"?"==t?m(g,w(":"),a):m(a):"quasi"==e?p(T,n):";"!=e?"("==e?F(j,")","call",n):"."==e?m(N,n):"["==e?m(b("]"),A,w("]"),x,n):qe&&"as"==t?(Ue.marked="keyword",m(K,n)):"regexp"==e?(Ue.state.lastType=Ue.marked="operator",Ue.stream.backUp(Ue.stream.pos-Ue.stream.start-1),m(a)):void 0:void 0}function T(e,t){return"quasi"!=e?p():"${"!=t.slice(t.length-2)?m(T):m(g,$)}function $(e){if("}"==e)return Ue.marked="string-2",Ue.state.tokenize=u,m(T)}function q(e){return s(Ue.stream,Ue.state),p("{"==e?h:g)}function C(e){return s(Ue.stream,Ue.state),p("{"==e?h:j)}function O(e){return function(t){return"."==t?m(e?P:W):"variable"==t&&qe?m(Y,e?I:z):p(e?j:g)}}function W(e,t){if("target"==t)return Ue.marked="keyword",m(z)}function P(e,t){if("target"==t)return Ue.marked="keyword",m(I)}function S(e){return":"==e?m(x,h):p(z,w(";"),x)}function N(e){if("variable"==e)return Ue.marked="property",m()}function U(e,t){if("async"==e)return Ue.marked="property",m(U);if("variable"==e||"keyword"==Ue.style){if(Ue.marked="property","get"==t||"set"==t)return m(B);var r;return qe&&Ue.state.fatArrowAt==Ue.stream.start&&(r=Ue.stream.match(/^\s*:\s*/,!1))&&(Ue.state.fatArrowAt=Ue.stream.pos+r[0].length),m(H)}return"number"==e||"string"==e?(Ue.marked=Te?"property":Ue.style+" property",m(H)):"jsonld-keyword"==e?m(H):"modifier"==e?m(U):"["==e?m(g,w("]"),H):"spread"==e?m(g,H):":"==e?p(H):void 0}function B(e){return"variable"!=e?p(H):(Ue.marked="property",m(se))}function H(e){return":"==e?m(j):"("==e?p(se):void 0}function D(e,t,r){function n(a,i){if(r?r.indexOf(a)>-1:","==a){var o=Ue.state.lexical;return"call"==o.info&&(o.pos=(o.pos||0)+1),m(function(r,n){return r==t||n==t?p():p(e)},n)}return a==t||i==t?m():m(w(t))}return function(r,a){return r==t||a==t?m():p(e,n)}}function F(e,t,r){for(var n=3;n<arguments.length;n++)Ue.cc.push(arguments[n]);return m(b(t,r),D(e,t),x)}function G(e){return"}"==e?m():p(h,G)}function J(e,t){if(qe){if(":"==e)return m(K);if("?"==t)return m(J)}}function K(e,t){return"variable"==e?"keyof"==t?(Ue.marked="keyword",m(K)):(Ue.marked="type",m(X)):"string"==e||"number"==e||"atom"==e?m(X):"["==e?m(b("]"),D(K,"]",","),x,X):"{"==e?m(b("}"),D(Q,"}",",;"),x,X):"("==e?m(D(R,")"),L):void 0}function L(e){if("=>"==e)return m(K)}function Q(e,t){return"variable"==e||"keyword"==Ue.style?(Ue.marked="property",m(Q)):"?"==t?m(Q):":"==e?m(K):"["==e?m(g,J,w("]"),Q):void 0}function R(e){return"variable"==e?m(R):":"==e?m(K):void 0}function X(e,t){return"<"==t?m(b(">"),D(K,">"),x,X):"|"==t||"."==e?m(K):"["==e?m(w("]"),X):"extends"==t?m(K):void 0}function Y(e,t){if("<"==t)return m(b(">"),D(K,">"),x,X)}function Z(){return p(_,J,te,re)}function _(e,t){return"modifier"==e?m(_):"variable"==e?(v(t),m()):"spread"==e?m(_):"["==e?F(_,"]"):"{"==e?F(ee,"}"):void 0}function ee(e,t){return"variable"!=e||Ue.stream.match(/^\s*:/,!1)?("variable"==e&&(Ue.marked="property"),"spread"==e?m(_):"}"==e?p():m(w(":"),_,te)):(v(t),m(te))}function te(e,t){if("="==t)return m(j)}function re(e){if(","==e)return m(Z)}function ne(e,t){if("keyword b"==e&&"else"==t)return m(b("form","else"),h,x)}function ae(e){if("("==e)return m(b(")"),ie,w(")"),x)}function ie(e){return"var"==e?m(Z,w(";"),ce):";"==e?m(ce):"variable"==e?m(oe):p(g,w(";"),ce)}function oe(e,t){return"in"==t||"of"==t?(Ue.marked="keyword",m(g)):m(z,ce)}function ce(e,t){return";"==e?m(ue):"in"==t||"of"==t?(Ue.marked="keyword",m(g)):p(g,w(";"),ue)}function ue(e){")"!=e&&m(g)}function se(e,t){return"*"==t?(Ue.marked="keyword",m(se)):"variable"==e?(v(t),m(se)):"("==e?m(y,b(")"),D(fe,")"),x,J,h,k):qe&&"<"==t?m(b(">"),D(K,">"),x,se):void 0}function fe(e,t){return"@"==t&&m(g,fe),"spread"==e||"modifier"==e?m(fe):p(_,J,te)}function le(e,t){return"variable"==e?de(e,t):pe(e,t)}function de(e,t){if("variable"==e)return v(t),m(pe)}function pe(e,t){return"<"==t?m(b(">"),D(K,">"),x,pe):"extends"==t||"implements"==t||qe&&","==e?m(qe?K:g,pe):"{"==e?m(b("}"),me,x):void 0}function me(e,t){return"modifier"==e||"async"==e||"variable"==e&&("static"==t||"get"==t||"set"==t)&&Ue.stream.match(/^\s+[\w$\xa1-\uffff]/,!1)?(Ue.marked="keyword",m(me)):"variable"==e||"keyword"==Ue.style?(Ue.marked="property",m(qe?ve:se,me)):"["==e?m(g,w("]"),qe?ve:se,me):"*"==t?(Ue.marked="keyword",m(me)):";"==e?m(me):"}"==e?m():"@"==t?m(g,me):void 0}function ve(e,t){return"?"==t?m(ve):":"==e?m(K,te):"="==t?m(j):p(se)}function ye(e,t){return"*"==t?(Ue.marked="keyword",m(ge,w(";"))):"default"==t?(Ue.marked="keyword",m(g,w(";"))):"{"==e?m(D(ke,"}"),ge,w(";")):p(h)}function ke(e,t){return"as"==t?(Ue.marked="keyword",m(w("variable"))):"variable"==e?p(j,ke):void 0}function be(e){return"string"==e?m():p(xe,we,ge)}function xe(e,t){return"{"==e?F(xe,"}"):("variable"==e&&v(t),"*"==t&&(Ue.marked="keyword"),m(he))}function we(e){if(","==e)return m(xe,we)}function he(e,t){if("as"==t)return Ue.marked="keyword",m(xe)}function ge(e,t){if("from"==t)return Ue.marked="keyword",m(g)}function je(e){return"]"==e?m():p(D(j,"]"))}function Me(e,t){return"operator"==e.lastType||","==e.lastType||We.test(t.charAt(0))||/[,.]/.test(t.charAt(0))}function Ve(e,t,r){return t.tokenize==i&&/^(?:operator|sof|keyword [bc]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/.test(t.lastType)||"quasi"==t.lastType&&/\{\s*$/.test(e.string.slice(0,e.pos-(r||0)))}var Ae,Ee,ze=t.indentUnit,Ie=r.statementIndent,Te=r.jsonld,$e=r.json||Te,qe=r.typescript,Ce=r.wordCharacters||/[\w$\xa1-\uffff]/,Oe=function(){function e(e){return{type:e,style:"keyword"}}var t=e("keyword a"),r=e("keyword b"),n=e("keyword c"),a=e("operator"),i={type:"atom",style:"atom"},o={if:e("if"),while:t,with:t,else:r,do:r,try:r,finally:r,return:n,break:n,continue:n,new:e("new"),delete:n,void:n,throw:n,debugger:n,var:e("var"),const:e("var"),let:e("var"),function:e("function"),catch:e("catch"),for:e("for"),switch:e("switch"),case:e("case"),default:e("default"),in:a,typeof:a,instanceof:a,true:i,false:i,null:i,undefined:i,NaN:i,Infinity:i,this:e("this"),class:e("class"),super:e("atom"),yield:n,export:e("export"),import:e("import"),extends:n,await:n};if(qe){var c={type:"variable",style:"type"},u={interface:e("class"),implements:n,namespace:n,module:e("module"),enum:e("module"),public:e("modifier"),private:e("modifier"),protected:e("modifier"),abstract:e("modifier"),readonly:e("modifier"),string:c,number:c,boolean:c,any:c};for(var s in u)o[s]=u[s]}return o}(),We=/[+\-*&%=<>!?|~^@]/,Pe=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/,Se="([{}])",Ne={atom:!0,number:!0,variable:!0,string:!0,regexp:!0,this:!0,"jsonld-keyword":!0},Ue={state:null,column:null,marked:null,cc:null},Be={name:"this",next:{name:"arguments"}};return x.lex=!0,{startState:function(e){var t={tokenize:i,lastType:"sof",cc:[],lexical:new f((e||0)-ze,0,"block",!1),localVars:r.localVars,context:r.localVars&&{vars:r.localVars},indented:e||0};return r.globalVars&&"object"==typeof r.globalVars&&(t.globalVars=r.globalVars),t},token:function(e,t){if(e.sol()&&(t.lexical.hasOwnProperty("align")||(t.lexical.align=!1),t.indented=e.indentation(),s(e,t)),t.tokenize!=c&&e.eatSpace())return null;var r=t.tokenize(e,t);return"comment"==Ae?r:(t.lastType="operator"!=Ae||"++"!=Ee&&"--"!=Ee?Ae:"incdec",d(t,r,Ae,Ee,e))},indent:function(t,n){if(t.tokenize==c)return e.Pass;if(t.tokenize!=i)return 0;var a,o=n&&n.charAt(0),u=t.lexical;if(!/^\s*else\b/.test(n))for(var s=t.cc.length-1;s>=0;--s){var f=t.cc[s];if(f==x)u=u.prev;else if(f!=ne)break}for(;("stat"==u.type||"form"==u.type)&&("}"==o||(a=t.cc[t.cc.length-1])&&(a==z||a==I)&&!/^[,\.=+\-*:?[\(]/.test(n));)u=u.prev;Ie&&")"==u.type&&"stat"==u.prev.type&&(u=u.prev);var l=u.type,d=o==l;return"vardef"==l?u.indented+("operator"==t.lastType||","==t.lastType?u.info+1:0):"form"==l&&"{"==o?u.indented:"form"==l?u.indented+ze:"stat"==l?u.indented+(Me(t,n)?Ie||ze:0):"switch"!=u.info||d||0==r.doubleIndentSwitch?u.align?u.column+(d?0:1):u.indented+(d?0:ze):u.indented+(/^(?:case|default)\b/.test(n)?ze:2*ze)},electricInput:/^\s*(?:case .*?:|default:|\{|\})$/,blockCommentStart:$e?null:"/*",blockCommentEnd:$e?null:"*/",lineComment:$e?null:"//",fold:"brace",closeBrackets:"()[]{}''\"\"``",helperType:$e?"json":"javascript",jsonldMode:Te,jsonMode:$e,expressionAllowed:Ve,skipExpression:function(e){var t=e.cc[e.cc.length-1];t!=g&&t!=j||e.cc.pop()}}}),e.registerHelper("wordChars","javascript",/[\w$]/),e.defineMIME("text/javascript","javascript"),e.defineMIME("text/ecmascript","javascript"),e.defineMIME("application/javascript","javascript"),e.defineMIME("application/x-javascript","javascript"),e.defineMIME("application/ecmascript","javascript"),e.defineMIME("application/json",{name:"javascript",json:!0}),e.defineMIME("application/x-json",{name:"javascript",json:!0}),e.defineMIME("application/ld+json",{name:"javascript",jsonld:!0}),e.defineMIME("text/typescript",{name:"javascript",typescript:!0}),e.defineMIME("application/typescript",{name:"javascript",typescript:!0})});
|
@@ -0,0 +1 @@
|
|
1
|
+
!function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror"),require("../xml/xml"),require("../meta")):"function"==typeof define&&define.amd?define(["../../lib/codemirror-modes","../xml/xml","../meta"],t):t(CodeMirror)}(function(t){"use strict";t.defineMode("markdown",function(e,i){function n(i){if(t.findModeByName){var n=t.findModeByName(i);n&&(i=n.mime||n.mimes[0])}var r=t.getMode(e,i);return"null"==r.name?null:r}function r(t,e,i){return e.f=e.inline=i,i(t,e)}function a(t,e,i){return e.f=e.block=i,i(t,e)}function l(t){return!t||!/\S/.test(t.string)}function o(t){return t.linkTitle=!1,t.em=!1,t.strong=!1,t.strikethrough=!1,t.quote=0,t.indentedCode=!1,t.f==s&&(t.f=f,t.block=h),t.trailingSpace=0,t.trailingSpaceNewLine=!1,t.prevLine=t.thisLine,t.thisLine={stream:null},null}function h(e,a){var o=e.column()===a.indentation,h=l(a.prevLine.stream),s=a.indentedCode,u=a.prevLine.hr,f=!1!==a.list,c=(a.listStack[a.listStack.length-1]||0)+3;a.indentedCode=!1;var d=a.indentation;if(null===a.indentationDiff&&(a.indentationDiff=a.indentation,f)){for(a.list=null;d<a.listStack[a.listStack.length-1];)a.listStack.pop(),a.listStack.length?a.indentation=a.listStack[a.listStack.length-1]:a.list=!1;!1!==a.list&&(a.indentationDiff=d-a.listStack[a.listStack.length-1])}var k=!(h||u||a.prevLine.header||f&&s||a.prevLine.fencedCodeEnd),x=(!1===a.list||u||h)&&a.indentation<=c&&e.match(M),S=null;if(a.indentationDiff>=4&&(s||a.prevLine.fencedCodeEnd||a.prevLine.header||h))return e.skipToEnd(),a.indentedCode=!0,T.code;if(e.eatSpace())return null;if(o&&a.indentation<=c&&(S=e.match(E))&&S[1].length<=6)return a.quote=0,a.header=S[1].length,a.thisLine.header=!0,i.highlightFormatting&&(a.formatting="header"),a.f=a.inline,m(a);if(a.indentation<=c&&e.eat(">"))return a.quote=o?1:a.quote+1,i.highlightFormatting&&(a.formatting="quote"),e.eatSpace(),m(a);if(!x&&!a.setext&&o&&a.indentation<=c&&(S=e.match(F))){var v=S[1]?"ol":"ul";return a.indentation=d+e.current().length,a.list=!0,a.quote=0,a.listStack.push(a.indentation),i.taskLists&&e.match(b,!1)&&(a.taskList=!0),a.f=a.inline,i.highlightFormatting&&(a.formatting=["list","list-"+v]),m(a)}return o&&a.indentation<=c&&(S=e.match(y,!0))?(a.quote=0,a.fencedEndRE=new RegExp(S[1]+"+ *$"),a.localMode=i.fencedCodeBlockHighlighting&&n(S[2]),a.localMode&&(a.localState=t.startState(a.localMode)),a.f=a.block=g,i.highlightFormatting&&(a.formatting="code-block"),a.code=-1,m(a)):a.setext||!(k&&f||a.quote||!1!==a.list||a.code||x||C.test(e.string))&&(S=e.lookAhead(1))&&(S=S.match(w))?(a.setext?(a.header=a.setext,a.setext=0,e.skipToEnd(),i.highlightFormatting&&(a.formatting="header")):(a.header="="==S[0].charAt(0)?1:2,a.setext=a.header),a.thisLine.header=!0,a.f=a.inline,m(a)):x?(e.skipToEnd(),a.hr=!0,a.thisLine.hr=!0,T.hr):"["===e.peek()?r(e,a,p):r(e,a,a.inline)}function s(e,i){var n=v.token(e,i.htmlState);if(!L){var r=t.innerMode(v,i.htmlState);("xml"==r.mode.name&&null===r.state.tagStart&&!r.state.context&&r.state.tokenize.isInText||i.md_inside&&e.current().indexOf(">")>-1)&&(i.f=f,i.block=h,i.htmlState=null)}return n}function g(t,e){var n=e.listStack[e.listStack.length-1]||0,r=e.indentation<n,l=n+3;if(e.fencedEndRE&&e.indentation<=l&&(r||t.match(e.fencedEndRE))){i.highlightFormatting&&(e.formatting="code-block");var o;return r||(o=m(e)),e.localMode=e.localState=null,e.block=h,e.f=f,e.fencedEndRE=null,e.code=0,e.thisLine.fencedCodeEnd=!0,r?a(t,e,e.block):o}return e.localMode?e.localMode.token(t,e.localState):(t.skipToEnd(),T.code)}function m(t){var e=[];if(t.formatting){e.push(T.formatting),"string"==typeof t.formatting&&(t.formatting=[t.formatting]);for(var n=0;n<t.formatting.length;n++)e.push(T.formatting+"-"+t.formatting[n]),"header"===t.formatting[n]&&e.push(T.formatting+"-"+t.formatting[n]+"-"+t.header),"quote"===t.formatting[n]&&(!i.maxBlockquoteDepth||i.maxBlockquoteDepth>=t.quote?e.push(T.formatting+"-"+t.formatting[n]+"-"+t.quote):e.push("error"))}if(t.taskOpen)return e.push("meta"),e.length?e.join(" "):null;if(t.taskClosed)return e.push("property"),e.length?e.join(" "):null;if(t.linkHref?e.push(T.linkHref,"url"):(t.strong&&e.push(T.strong),t.em&&e.push(T.em),t.strikethrough&&e.push(T.strikethrough),t.emoji&&e.push(T.emoji),t.linkText&&e.push(T.linkText),t.code&&e.push(T.code),t.image&&e.push(T.image),t.imageAltText&&e.push(T.imageAltText,"link"),t.imageMarker&&e.push(T.imageMarker)),t.header&&e.push(T.header,T.header+"-"+t.header),t.quote&&(e.push(T.quote),!i.maxBlockquoteDepth||i.maxBlockquoteDepth>=t.quote?e.push(T.quote+"-"+t.quote):e.push(T.quote+"-"+i.maxBlockquoteDepth)),!1!==t.list){var r=(t.listStack.length-1)%3;r?1===r?e.push(T.list2):e.push(T.list3):e.push(T.list1)}return t.trailingSpaceNewLine?e.push("trailing-space-new-line"):t.trailingSpace&&e.push("trailing-space-"+(t.trailingSpace%2?"a":"b")),e.length?e.join(" "):null}function u(t,e){if(t.match(j,!0))return m(e)}function f(e,n){var r=n.text(e,n);if(void 0!==r)return r;if(n.list)return n.list=null,m(n);if(n.taskList)return" "===e.match(b,!0)[1]?n.taskOpen=!0:n.taskClosed=!0,i.highlightFormatting&&(n.formatting="task"),n.taskList=!1,m(n);if(n.taskOpen=!1,n.taskClosed=!1,n.header&&e.match(/^#+$/,!0))return i.highlightFormatting&&(n.formatting="header"),m(n);var l=e.next();if(n.linkTitle){n.linkTitle=!1;var o=l;"("===l&&(o=")");var h="^\\s*(?:[^"+(o=(o+"").replace(/([.?*+^\[\]\\(){}|-])/g,"\\$1"))+"\\\\]+|\\\\\\\\|\\\\.)"+o;if(e.match(new RegExp(h),!0))return T.linkHref}if("`"===l){var g=n.formatting;i.highlightFormatting&&(n.formatting="code"),e.eatWhile("`");var u=e.current().length;if(0!=n.code||n.quote&&1!=u){if(u==n.code){y=m(n);return n.code=0,y}return n.formatting=g,m(n)}return n.code=u,m(n)}if(n.code)return m(n);if("\\"===l&&(e.next(),i.highlightFormatting)){var k=m(n),p=T.formatting+"-escape";return k?k+" "+p:p}if("!"===l&&e.match(/\[[^\]]*\] ?(?:\(|\[)/,!1))return n.imageMarker=!0,n.image=!0,i.highlightFormatting&&(n.formatting="image"),m(n);if("["===l&&n.imageMarker&&e.match(/[^\]]*\](\(.*?\)| ?\[.*?\])/,!1))return n.imageMarker=!1,n.imageAltText=!0,i.highlightFormatting&&(n.formatting="image"),m(n);if("]"===l&&n.imageAltText){i.highlightFormatting&&(n.formatting="image");k=m(n);return n.imageAltText=!1,n.image=!1,n.inline=n.f=d,k}if("["===l&&!n.image)return n.linkText=!0,i.highlightFormatting&&(n.formatting="link"),m(n);if("]"===l&&n.linkText){i.highlightFormatting&&(n.formatting="link");k=m(n);return n.linkText=!1,n.inline=n.f=e.match(/\(.*?\)| ?\[.*?\]/,!1)?d:f,k}if("<"===l&&e.match(/^(https?|ftps?):\/\/(?:[^\\>]|\\.)+>/,!1))return n.f=n.inline=c,i.highlightFormatting&&(n.formatting="link"),(k=m(n))?k+=" ":k="",k+T.linkInline;if("<"===l&&e.match(/^[^> \\]+@(?:[^\\>]|\\.)+>/,!1))return n.f=n.inline=c,i.highlightFormatting&&(n.formatting="link"),(k=m(n))?k+=" ":k="",k+T.linkEmail;if(i.xml&&"<"===l&&e.match(/^(!--|[a-z]+(?:\s+[a-z_:.\-]+(?:\s*=\s*[^ >]+)?)*\s*>)/i,!1)){var x=e.string.indexOf(">",e.pos);if(-1!=x){var S=e.string.substring(e.start,x);/markdown\s*=\s*('|"){0,1}1('|"){0,1}/.test(S)&&(n.md_inside=!0)}return e.backUp(1),n.htmlState=t.startState(v),a(e,n,s)}if(i.xml&&"<"===l&&e.match(/^\/\w*?>/))return n.md_inside=!1,"tag";if("*"===l||"_"===l){for(var L=1,q=1==e.pos?" ":e.string.charAt(e.pos-2);L<3&&e.eat(l);)L++;var M=e.peek()||" ",F=!/\s/.test(M)&&(!B.test(M)||/\s/.test(q)||B.test(q)),E=!/\s/.test(q)&&(!B.test(q)||/\s/.test(M)||B.test(M)),w=null,j=null;if(L%2&&(n.em||!F||"*"!==l&&E&&!B.test(q)?n.em!=l||!E||"*"!==l&&F&&!B.test(M)||(w=!1):w=!0),L>1&&(n.strong||!F||"*"!==l&&E&&!B.test(q)?n.strong!=l||!E||"*"!==l&&F&&!B.test(M)||(j=!1):j=!0),null!=j||null!=w){i.highlightFormatting&&(n.formatting=null==w?"strong":null==j?"em":"strong em"),!0===w&&(n.em=l),!0===j&&(n.strong=l);y=m(n);return!1===w&&(n.em=!1),!1===j&&(n.strong=!1),y}}else if(" "===l&&(e.eat("*")||e.eat("_"))){if(" "===e.peek())return m(n);e.backUp(1)}if(i.strikethrough)if("~"===l&&e.eatWhile(l)){if(n.strikethrough){i.highlightFormatting&&(n.formatting="strikethrough");var y=m(n);return n.strikethrough=!1,y}if(e.match(/^[^\s]/,!1))return n.strikethrough=!0,i.highlightFormatting&&(n.formatting="strikethrough"),m(n)}else if(" "===l&&e.match(/^~~/,!0)){if(" "===e.peek())return m(n);e.backUp(2)}if(i.emoji&&":"===l&&e.match(/^[a-z_\d+-]+:/)){n.emoji=!0,i.highlightFormatting&&(n.formatting="emoji");var C=m(n);return n.emoji=!1,C}return" "===l&&(e.match(/ +$/,!1)?n.trailingSpace++:n.trailingSpace&&(n.trailingSpaceNewLine=!0)),m(n)}function c(t,e){if(">"===t.next()){e.f=e.inline=f,i.highlightFormatting&&(e.formatting="link");var n=m(e);return n?n+=" ":n="",n+T.linkInline}return t.match(/^[^>]+/,!0),T.linkInline}function d(t,e){if(t.eatSpace())return null;var n=t.next();return"("===n||"["===n?(e.f=e.inline=k("("===n?")":"]"),i.highlightFormatting&&(e.formatting="link-string"),e.linkHref=!0,m(e)):"error"}function k(t){return function(e,n){if(e.next()===t){n.f=n.inline=f,i.highlightFormatting&&(n.formatting="link-string");var r=m(n);return n.linkHref=!1,r}return e.match(H[t]),n.linkHref=!0,m(n)}}function p(t,e){return t.match(/^([^\]\\]|\\.)*\]:/,!1)?(e.f=x,t.next(),i.highlightFormatting&&(e.formatting="link"),e.linkText=!0,m(e)):r(t,e,f)}function x(t,e){if(t.match(/^\]:/,!0)){e.f=e.inline=S,i.highlightFormatting&&(e.formatting="link");var n=m(e);return e.linkText=!1,n}return t.match(/^([^\]\\]|\\.)+/,!0),T.linkText}function S(t,e){return t.eatSpace()?null:(t.match(/^[^\s]+/,!0),void 0===t.peek()?e.linkTitle=!0:t.match(/^(?:\s+(?:"(?:[^"\\]|\\\\|\\.)+"|'(?:[^'\\]|\\\\|\\.)+'|\((?:[^)\\]|\\\\|\\.)+\)))?/,!0),e.f=e.inline=f,T.linkHref+" url")}var v=t.getMode(e,"text/html"),L="null"==v.name;void 0===i.highlightFormatting&&(i.highlightFormatting=!1),void 0===i.maxBlockquoteDepth&&(i.maxBlockquoteDepth=0),void 0===i.taskLists&&(i.taskLists=!1),void 0===i.strikethrough&&(i.strikethrough=!1),void 0===i.emoji&&(i.emoji=!1),void 0===i.fencedCodeBlockHighlighting&&(i.fencedCodeBlockHighlighting=!0),void 0===i.xml&&(i.xml=!0),void 0===i.tokenTypeOverrides&&(i.tokenTypeOverrides={});var T={header:"header",code:"comment",quote:"quote",list1:"variable-2",list2:"variable-3",list3:"keyword",hr:"hr",image:"image",imageAltText:"image-alt-text",imageMarker:"image-marker",formatting:"formatting",linkInline:"link",linkEmail:"link",linkText:"link",linkHref:"string",em:"em",strong:"strong",strikethrough:"strikethrough",emoji:"builtin"};for(var q in T)T.hasOwnProperty(q)&&i.tokenTypeOverrides[q]&&(T[q]=i.tokenTypeOverrides[q]);var M=/^([*\-_])(?:\s*\1){2,}\s*$/,F=/^(?:[*\-+]|^[0-9]+([.)]))\s+/,b=/^\[(x| )\](?=\s)/i,E=i.allowAtxHeaderWithoutSpace?/^(#+)/:/^(#+)(?: |$)/,w=/^ *(?:\={1,}|-{1,})\s*$/,j=/^[^#!\[\]*_\\<>` "'(~:]+/,y=/^(~~~+|```+)[ \t]*([\w+#-]*)[^\n`]*$/,C=/^\s*\[[^\]]+?\]:\s*\S+(\s*\S*\s*)?$/,B=/[!\"#$%&\'()*+,\-\.\/:;<=>?@\[\\\]^_`{|}~—]/,H={")":/^(?:[^\\\(\)]|\\.|\((?:[^\\\(\)]|\\.)*\))*?(?=\))/,"]":/^(?:[^\\\[\]]|\\.|\[(?:[^\\\[\]]|\\.)*\])*?(?=\])/},D={startState:function(){return{f:h,prevLine:{stream:null},thisLine:{stream:null},block:h,htmlState:null,indentation:0,inline:f,text:u,formatting:!1,linkText:!1,linkHref:!1,linkTitle:!1,code:0,em:!1,strong:!1,header:0,setext:0,hr:!1,taskList:!1,list:!1,listStack:[],quote:0,trailingSpace:0,trailingSpaceNewLine:!1,strikethrough:!1,emoji:!1,fencedEndRE:null}},copyState:function(e){return{f:e.f,prevLine:e.prevLine,thisLine:e.thisLine,block:e.block,htmlState:e.htmlState&&t.copyState(v,e.htmlState),indentation:e.indentation,localMode:e.localMode,localState:e.localMode?t.copyState(e.localMode,e.localState):null,inline:e.inline,text:e.text,formatting:!1,linkText:e.linkText,linkTitle:e.linkTitle,code:e.code,em:e.em,strong:e.strong,strikethrough:e.strikethrough,emoji:e.emoji,header:e.header,setext:e.setext,hr:e.hr,taskList:e.taskList,list:e.list,listStack:e.listStack.slice(0),quote:e.quote,indentedCode:e.indentedCode,trailingSpace:e.trailingSpace,trailingSpaceNewLine:e.trailingSpaceNewLine,md_inside:e.md_inside,fencedEndRE:e.fencedEndRE}},token:function(t,e){if(e.formatting=!1,t!=e.thisLine.stream){if(e.header=0,e.hr=!1,t.match(/^\s*$/,!0))return o(e),null;if(e.prevLine=e.thisLine,e.thisLine={stream:t},e.taskList=!1,e.trailingSpace=0,e.trailingSpaceNewLine=!1,e.f=e.block,e.f!=s){var i=t.match(/^\s*/,!0)[0].replace(/\t/g," ").length;if(e.indentation=i,e.indentationDiff=null,i>0)return null}}return e.f(t,e)},innerMode:function(t){return t.block==s?{state:t.htmlState,mode:v}:t.localState?{state:t.localState,mode:t.localMode}:{state:t,mode:D}},indent:function(e,i,n){return e.block==s&&v.indent?v.indent(e.htmlState,i,n):e.localState&&e.localMode.indent?e.localMode.indent(e.localState,i,n):t.Pass},blankLine:o,getType:m,closeBrackets:"()[]{}''\"\"``",fold:"markdown"};return D},"xml"),t.defineMIME("text/x-markdown","markdown")});
|
@@ -0,0 +1 @@
|
|
1
|
+
!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)}(function(e){function t(e,t,r){var i=e.getLineHandle(t.line),o=t.ch-1,l=r&&r.afterCursor;null==l&&(l=/(^| )cm-fat-cursor($| )/.test(e.getWrapperElement().className));var f=!l&&o>=0&&c[i.text.charAt(o)]||c[i.text.charAt(++o)];if(!f)return null;var s=">"==f.charAt(1)?1:-1;if(r&&r.strict&&s>0!=(o==t.ch))return null;var u=e.getTokenTypeAt(a(t.line,o+1)),h=n(e,a(t.line,o+(s>0?1:0)),s,u||null,r);return null==h?null:{from:a(t.line,o),to:h&&h.pos,match:h&&h.ch==f.charAt(0),forward:s>0}}function n(e,t,n,r,i){for(var o=i&&i.maxScanLineLength||1e4,l=i&&i.maxScanLines||1e3,f=[],s=i&&i.bracketRegex?i.bracketRegex:/[(){}[\]]/,u=n>0?Math.min(t.line+l,e.lastLine()+1):Math.max(e.firstLine()-1,t.line-l),h=t.line;h!=u;h+=n){var m=e.getLine(h);if(m){var d=n>0?0:m.length-1,g=n>0?m.length:-1;if(!(m.length>o))for(h==t.line&&(d=t.ch-(n<0?1:0));d!=g;d+=n){var p=m.charAt(d);if(s.test(p)&&(void 0===r||e.getTokenTypeAt(a(h,d+1))==r))if(">"==c[p].charAt(1)==n>0)f.push(p);else{if(!f.length)return{pos:a(h,d),ch:p};f.pop()}}}}return h-n!=(n>0?e.lastLine():e.firstLine())&&null}function r(e,n,r){for(var i=e.state.matchBrackets.maxHighlightLineLength||1e3,c=[],l=e.listSelections(),f=0;f<l.length;f++){var s=l[f].empty()&&t(e,l[f].head,r);if(s&&e.getLine(s.from.line).length<=i){var u=s.match?"CodeMirror-matchingbracket":"CodeMirror-nonmatchingbracket";c.push(e.markText(s.from,a(s.from.line,s.from.ch+1),{className:u})),s.to&&e.getLine(s.to.line).length<=i&&c.push(e.markText(s.to,a(s.to.line,s.to.ch+1),{className:u}))}}if(c.length){o&&e.state.focused&&e.focus();var h=function(){e.operation(function(){for(var e=0;e<c.length;e++)c[e].clear()})};if(!n)return h;setTimeout(h,800)}}function i(e){e.operation(function(){l&&(l(),l=null),l=r(e,!1,e.state.matchBrackets)})}var o=/MSIE \d/.test(navigator.userAgent)&&(null==document.documentMode||document.documentMode<8),a=e.Pos,c={"(":")>",")":"(<","[":"]>","]":"[<","{":"}>","}":"{<"},l=null;e.defineOption("matchBrackets",!1,function(t,n,r){r&&r!=e.Init&&(t.off("cursorActivity",i),l&&(l(),l=null)),n&&(t.state.matchBrackets="object"==typeof n?n:{},t.on("cursorActivity",i))}),e.defineExtension("matchBrackets",function(){r(this,!0)}),e.defineExtension("findMatchingBracket",function(e,n,r){return(r||"boolean"==typeof n)&&(r?(r.strict=n,n=r):n=n?{strict:!0}:null),t(this,e,n)}),e.defineExtension("scanForBracket",function(e,t,r,i){return n(this,e,t,r,i)})});
|
@@ -0,0 +1 @@
|
|
1
|
+
!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)}(function(e){function o(e){e.state.placeholder&&(e.state.placeholder.parentNode.removeChild(e.state.placeholder),e.state.placeholder=null)}function r(e){o(e);var r=e.state.placeholder=document.createElement("pre");r.style.cssText="height: 0; overflow: visible",r.className="CodeMirror-placeholder";var t=e.getOption("placeholder");"string"==typeof t&&(t=document.createTextNode(t)),r.appendChild(t),e.display.lineSpace.insertBefore(r,e.display.lineSpace.firstChild)}function t(e){n(e)&&r(e)}function a(e){var t=e.getWrapperElement(),a=n(e);t.className=t.className.replace(" CodeMirror-empty","")+(a?" CodeMirror-empty":""),a?r(e):o(e)}function n(e){return 1===e.lineCount()&&""===e.getLine(0)}e.defineOption("placeholder","",function(r,n,l){var i=l&&l!=e.Init;if(n&&!i)r.on("blur",t),r.on("change",a),r.on("swapDoc",a),a(r);else if(!n&&i){r.off("blur",t),r.off("change",a),r.off("swapDoc",a),o(r);var c=r.getWrapperElement();c.className=c.className.replace(" CodeMirror-empty","")}n&&!r.hasFocus()&&t(r)})});
|
@@ -0,0 +1 @@
|
|
1
|
+
registerAutocomplete('prolog', ('findall forall not length member sumlist is').split(' '));
|
@@ -0,0 +1,1089 @@
|
|
1
|
+
// Parts from Ace; see <https://raw.githubusercontent.com/ajaxorg/ace/master/LICENSE>
|
2
|
+
CodeMirror.defineMode("prolog", function(cmCfg, modeCfg) {
|
3
|
+
|
4
|
+
// Fake define() function.
|
5
|
+
var moduleHolder = Object.create(null);
|
6
|
+
|
7
|
+
// Given a module path as a string, create the canonical version
|
8
|
+
// (no leading ./, no ending .js).
|
9
|
+
var canonicalPath = function(path) {
|
10
|
+
return path.replace(/\.\//, '').replace(/\.js$/, '');
|
11
|
+
};
|
12
|
+
|
13
|
+
// We intentionally add the `path` argument to `define()`.
|
14
|
+
var define = function(path, init) {
|
15
|
+
var exports = Object.create(null);
|
16
|
+
init(require, exports); // module (3rd parameter) isn't supported.
|
17
|
+
moduleHolder[canonicalPath(path)] = exports;
|
18
|
+
};
|
19
|
+
|
20
|
+
// path: string of the location of the JS file.
|
21
|
+
var require = function(path) { return moduleHolder[canonicalPath(path)]; };
|
22
|
+
|
23
|
+
// All dependencies here.
|
24
|
+
define("../lib/oop.js", function(require, exports, module) {
|
25
|
+
"use strict";
|
26
|
+
|
27
|
+
exports.inherits = function(ctor, superCtor) {
|
28
|
+
ctor.super_ = superCtor;
|
29
|
+
ctor.prototype = Object.create(superCtor.prototype, {
|
30
|
+
constructor: {
|
31
|
+
value: ctor,
|
32
|
+
enumerable: false,
|
33
|
+
writable: true,
|
34
|
+
configurable: true
|
35
|
+
}
|
36
|
+
});
|
37
|
+
};
|
38
|
+
|
39
|
+
exports.mixin = function(obj, mixin) {
|
40
|
+
for (var key in mixin) {
|
41
|
+
obj[key] = mixin[key];
|
42
|
+
}
|
43
|
+
return obj;
|
44
|
+
};
|
45
|
+
|
46
|
+
exports.implement = function(proto, mixin) {
|
47
|
+
exports.mixin(proto, mixin);
|
48
|
+
};
|
49
|
+
|
50
|
+
});
|
51
|
+
|
52
|
+
|
53
|
+
define("../lib/lang.js", function(require, exports, module) {
|
54
|
+
"use strict";
|
55
|
+
|
56
|
+
exports.last = function(a) {
|
57
|
+
return a[a.length - 1];
|
58
|
+
};
|
59
|
+
|
60
|
+
exports.stringReverse = function(string) {
|
61
|
+
return string.split("").reverse().join("");
|
62
|
+
};
|
63
|
+
|
64
|
+
exports.stringRepeat = function (string, count) {
|
65
|
+
var result = '';
|
66
|
+
while (count > 0) {
|
67
|
+
if (count & 1)
|
68
|
+
result += string;
|
69
|
+
|
70
|
+
if (count >>= 1)
|
71
|
+
string += string;
|
72
|
+
}
|
73
|
+
return result;
|
74
|
+
};
|
75
|
+
|
76
|
+
var trimBeginRegexp = /^\s\s*/;
|
77
|
+
var trimEndRegexp = /\s\s*$/;
|
78
|
+
|
79
|
+
exports.stringTrimLeft = function (string) {
|
80
|
+
return string.replace(trimBeginRegexp, '');
|
81
|
+
};
|
82
|
+
|
83
|
+
exports.stringTrimRight = function (string) {
|
84
|
+
return string.replace(trimEndRegexp, '');
|
85
|
+
};
|
86
|
+
|
87
|
+
exports.copyObject = function(obj) {
|
88
|
+
var copy = {};
|
89
|
+
for (var key in obj) {
|
90
|
+
copy[key] = obj[key];
|
91
|
+
}
|
92
|
+
return copy;
|
93
|
+
};
|
94
|
+
|
95
|
+
exports.copyArray = function(array){
|
96
|
+
var copy = [];
|
97
|
+
for (var i=0, l=array.length; i<l; i++) {
|
98
|
+
if (array[i] && typeof array[i] == "object")
|
99
|
+
copy[i] = this.copyObject(array[i]);
|
100
|
+
else
|
101
|
+
copy[i] = array[i];
|
102
|
+
}
|
103
|
+
return copy;
|
104
|
+
};
|
105
|
+
|
106
|
+
exports.deepCopy = function deepCopy(obj) {
|
107
|
+
if (typeof obj !== "object" || !obj)
|
108
|
+
return obj;
|
109
|
+
var copy;
|
110
|
+
if (Array.isArray(obj)) {
|
111
|
+
copy = [];
|
112
|
+
for (var key = 0; key < obj.length; key++) {
|
113
|
+
copy[key] = deepCopy(obj[key]);
|
114
|
+
}
|
115
|
+
return copy;
|
116
|
+
}
|
117
|
+
if (Object.prototype.toString.call(obj) !== "[object Object]")
|
118
|
+
return obj;
|
119
|
+
|
120
|
+
copy = {};
|
121
|
+
for (var key in obj)
|
122
|
+
copy[key] = deepCopy(obj[key]);
|
123
|
+
return copy;
|
124
|
+
};
|
125
|
+
|
126
|
+
exports.arrayToMap = function(arr) {
|
127
|
+
var map = {};
|
128
|
+
for (var i=0; i<arr.length; i++) {
|
129
|
+
map[arr[i]] = 1;
|
130
|
+
}
|
131
|
+
return map;
|
132
|
+
|
133
|
+
};
|
134
|
+
|
135
|
+
exports.createMap = function(props) {
|
136
|
+
var map = Object.create(null);
|
137
|
+
for (var i in props) {
|
138
|
+
map[i] = props[i];
|
139
|
+
}
|
140
|
+
return map;
|
141
|
+
};
|
142
|
+
|
143
|
+
/*
|
144
|
+
* splice out of 'array' anything that === 'value'
|
145
|
+
*/
|
146
|
+
exports.arrayRemove = function(array, value) {
|
147
|
+
for (var i = 0; i <= array.length; i++) {
|
148
|
+
if (value === array[i]) {
|
149
|
+
array.splice(i, 1);
|
150
|
+
}
|
151
|
+
}
|
152
|
+
};
|
153
|
+
|
154
|
+
exports.escapeRegExp = function(str) {
|
155
|
+
return str.replace(/([.*+?^${}()|[\]\/\\])/g, '\\$1');
|
156
|
+
};
|
157
|
+
|
158
|
+
exports.escapeHTML = function(str) {
|
159
|
+
return str.replace(/&/g, "&").replace(/"/g, """).replace(/'/g, "'").replace(/</g, "<");
|
160
|
+
};
|
161
|
+
|
162
|
+
exports.getMatchOffsets = function(string, regExp) {
|
163
|
+
var matches = [];
|
164
|
+
|
165
|
+
string.replace(regExp, function(str) {
|
166
|
+
matches.push({
|
167
|
+
offset: arguments[arguments.length-2],
|
168
|
+
length: str.length
|
169
|
+
});
|
170
|
+
});
|
171
|
+
|
172
|
+
return matches;
|
173
|
+
};
|
174
|
+
|
175
|
+
/* deprecated */
|
176
|
+
exports.deferredCall = function(fcn) {
|
177
|
+
var timer = null;
|
178
|
+
var callback = function() {
|
179
|
+
timer = null;
|
180
|
+
fcn();
|
181
|
+
};
|
182
|
+
|
183
|
+
var deferred = function(timeout) {
|
184
|
+
deferred.cancel();
|
185
|
+
timer = setTimeout(callback, timeout || 0);
|
186
|
+
return deferred;
|
187
|
+
};
|
188
|
+
|
189
|
+
deferred.schedule = deferred;
|
190
|
+
|
191
|
+
deferred.call = function() {
|
192
|
+
this.cancel();
|
193
|
+
fcn();
|
194
|
+
return deferred;
|
195
|
+
};
|
196
|
+
|
197
|
+
deferred.cancel = function() {
|
198
|
+
clearTimeout(timer);
|
199
|
+
timer = null;
|
200
|
+
return deferred;
|
201
|
+
};
|
202
|
+
|
203
|
+
deferred.isPending = function() {
|
204
|
+
return timer;
|
205
|
+
};
|
206
|
+
|
207
|
+
return deferred;
|
208
|
+
};
|
209
|
+
|
210
|
+
|
211
|
+
exports.delayedCall = function(fcn, defaultTimeout) {
|
212
|
+
var timer = null;
|
213
|
+
var callback = function() {
|
214
|
+
timer = null;
|
215
|
+
fcn();
|
216
|
+
};
|
217
|
+
|
218
|
+
var _self = function(timeout) {
|
219
|
+
if (timer == null)
|
220
|
+
timer = setTimeout(callback, timeout || defaultTimeout);
|
221
|
+
};
|
222
|
+
|
223
|
+
_self.delay = function(timeout) {
|
224
|
+
timer && clearTimeout(timer);
|
225
|
+
timer = setTimeout(callback, timeout || defaultTimeout);
|
226
|
+
};
|
227
|
+
_self.schedule = _self;
|
228
|
+
|
229
|
+
_self.call = function() {
|
230
|
+
this.cancel();
|
231
|
+
fcn();
|
232
|
+
};
|
233
|
+
|
234
|
+
_self.cancel = function() {
|
235
|
+
timer && clearTimeout(timer);
|
236
|
+
timer = null;
|
237
|
+
};
|
238
|
+
|
239
|
+
_self.isPending = function() {
|
240
|
+
return timer;
|
241
|
+
};
|
242
|
+
|
243
|
+
return _self;
|
244
|
+
};
|
245
|
+
});
|
246
|
+
|
247
|
+
|
248
|
+
define("./text_highlight_rules.js", function(require, exports, module) {
|
249
|
+
"use strict";
|
250
|
+
|
251
|
+
var lang = require("../lib/lang");
|
252
|
+
|
253
|
+
var TextHighlightRules = function() {
|
254
|
+
|
255
|
+
// regexp must not have capturing parentheses
|
256
|
+
// regexps are ordered -> the first match is used
|
257
|
+
|
258
|
+
this.$rules = {
|
259
|
+
"start" : [{
|
260
|
+
token : "empty_line",
|
261
|
+
regex : '^$'
|
262
|
+
}, {
|
263
|
+
defaultToken : "text"
|
264
|
+
}]
|
265
|
+
};
|
266
|
+
};
|
267
|
+
|
268
|
+
(function() {
|
269
|
+
|
270
|
+
this.addRules = function(rules, prefix) {
|
271
|
+
if (!prefix) {
|
272
|
+
for (var key in rules)
|
273
|
+
this.$rules[key] = rules[key];
|
274
|
+
return;
|
275
|
+
}
|
276
|
+
for (var key in rules) {
|
277
|
+
var state = rules[key];
|
278
|
+
for (var i = 0; i < state.length; i++) {
|
279
|
+
var rule = state[i];
|
280
|
+
if (rule.next || rule.onMatch) {
|
281
|
+
if (typeof rule.next == "string") {
|
282
|
+
if (rule.next.indexOf(prefix) !== 0)
|
283
|
+
rule.next = prefix + rule.next;
|
284
|
+
}
|
285
|
+
if (rule.nextState && rule.nextState.indexOf(prefix) !== 0)
|
286
|
+
rule.nextState = prefix + rule.nextState;
|
287
|
+
}
|
288
|
+
}
|
289
|
+
this.$rules[prefix + key] = state;
|
290
|
+
}
|
291
|
+
};
|
292
|
+
|
293
|
+
this.getRules = function() {
|
294
|
+
return this.$rules;
|
295
|
+
};
|
296
|
+
|
297
|
+
this.embedRules = function (HighlightRules, prefix, escapeRules, states, append) {
|
298
|
+
var embedRules = typeof HighlightRules == "function"
|
299
|
+
? new HighlightRules().getRules()
|
300
|
+
: HighlightRules;
|
301
|
+
if (states) {
|
302
|
+
for (var i = 0; i < states.length; i++)
|
303
|
+
states[i] = prefix + states[i];
|
304
|
+
} else {
|
305
|
+
states = [];
|
306
|
+
for (var key in embedRules)
|
307
|
+
states.push(prefix + key);
|
308
|
+
}
|
309
|
+
|
310
|
+
this.addRules(embedRules, prefix);
|
311
|
+
|
312
|
+
if (escapeRules) {
|
313
|
+
var addRules = Array.prototype[append ? "push" : "unshift"];
|
314
|
+
for (var i = 0; i < states.length; i++)
|
315
|
+
addRules.apply(this.$rules[states[i]], lang.deepCopy(escapeRules));
|
316
|
+
}
|
317
|
+
|
318
|
+
if (!this.$embeds)
|
319
|
+
this.$embeds = [];
|
320
|
+
this.$embeds.push(prefix);
|
321
|
+
};
|
322
|
+
|
323
|
+
this.getEmbeds = function() {
|
324
|
+
return this.$embeds;
|
325
|
+
};
|
326
|
+
|
327
|
+
var pushState = function(currentState, stack) {
|
328
|
+
if (currentState != "start" || stack.length)
|
329
|
+
stack.unshift(this.nextState, currentState);
|
330
|
+
return this.nextState;
|
331
|
+
};
|
332
|
+
var popState = function(currentState, stack) {
|
333
|
+
// if (stack[0] === currentState)
|
334
|
+
stack.shift();
|
335
|
+
return stack.shift() || "start";
|
336
|
+
};
|
337
|
+
|
338
|
+
this.normalizeRules = function() {
|
339
|
+
var id = 0;
|
340
|
+
var rules = this.$rules;
|
341
|
+
function processState(key) {
|
342
|
+
var state = rules[key];
|
343
|
+
state.processed = true;
|
344
|
+
for (var i = 0; i < state.length; i++) {
|
345
|
+
var rule = state[i];
|
346
|
+
var toInsert = null;
|
347
|
+
if (Array.isArray(rule)) {
|
348
|
+
toInsert = rule;
|
349
|
+
rule = {};
|
350
|
+
}
|
351
|
+
if (!rule.regex && rule.start) {
|
352
|
+
rule.regex = rule.start;
|
353
|
+
if (!rule.next)
|
354
|
+
rule.next = [];
|
355
|
+
rule.next.push({
|
356
|
+
defaultToken: rule.token
|
357
|
+
}, {
|
358
|
+
token: rule.token + ".end",
|
359
|
+
regex: rule.end || rule.start,
|
360
|
+
next: "pop"
|
361
|
+
});
|
362
|
+
rule.token = rule.token + ".start";
|
363
|
+
rule.push = true;
|
364
|
+
}
|
365
|
+
var next = rule.next || rule.push;
|
366
|
+
if (next && Array.isArray(next)) {
|
367
|
+
var stateName = rule.stateName;
|
368
|
+
if (!stateName) {
|
369
|
+
stateName = rule.token;
|
370
|
+
if (typeof stateName != "string")
|
371
|
+
stateName = stateName[0] || "";
|
372
|
+
if (rules[stateName])
|
373
|
+
stateName += id++;
|
374
|
+
}
|
375
|
+
rules[stateName] = next;
|
376
|
+
rule.next = stateName;
|
377
|
+
processState(stateName);
|
378
|
+
} else if (next == "pop") {
|
379
|
+
rule.next = popState;
|
380
|
+
}
|
381
|
+
|
382
|
+
if (rule.push) {
|
383
|
+
rule.nextState = rule.next || rule.push;
|
384
|
+
rule.next = pushState;
|
385
|
+
delete rule.push;
|
386
|
+
}
|
387
|
+
|
388
|
+
if (rule.rules) {
|
389
|
+
for (var r in rule.rules) {
|
390
|
+
if (rules[r]) {
|
391
|
+
if (rules[r].push)
|
392
|
+
rules[r].push.apply(rules[r], rule.rules[r]);
|
393
|
+
} else {
|
394
|
+
rules[r] = rule.rules[r];
|
395
|
+
}
|
396
|
+
}
|
397
|
+
}
|
398
|
+
var includeName = typeof rule == "string" ? rule : rule.include;
|
399
|
+
if (includeName) {
|
400
|
+
if (Array.isArray(includeName))
|
401
|
+
toInsert = includeName.map(function(x) { return rules[x]; });
|
402
|
+
else
|
403
|
+
toInsert = rules[includeName];
|
404
|
+
}
|
405
|
+
|
406
|
+
if (toInsert) {
|
407
|
+
var args = [i, 1].concat(toInsert);
|
408
|
+
if (rule.noEscape)
|
409
|
+
args = args.filter(function(x) {return !x.next;});
|
410
|
+
state.splice.apply(state, args);
|
411
|
+
// skip included rules since they are already processed
|
412
|
+
//i += args.length - 3;
|
413
|
+
i--;
|
414
|
+
}
|
415
|
+
|
416
|
+
if (rule.keywordMap) {
|
417
|
+
rule.token = this.createKeywordMapper(
|
418
|
+
rule.keywordMap, rule.defaultToken || "text", rule.caseInsensitive
|
419
|
+
);
|
420
|
+
delete rule.defaultToken;
|
421
|
+
}
|
422
|
+
}
|
423
|
+
}
|
424
|
+
Object.keys(rules).forEach(processState, this);
|
425
|
+
};
|
426
|
+
|
427
|
+
this.createKeywordMapper = function(map, defaultToken, ignoreCase, splitChar) {
|
428
|
+
var keywords = Object.create(null);
|
429
|
+
Object.keys(map).forEach(function(className) {
|
430
|
+
var a = map[className];
|
431
|
+
if (ignoreCase)
|
432
|
+
a = a.toLowerCase();
|
433
|
+
var list = a.split(splitChar || "|");
|
434
|
+
for (var i = list.length; i--; )
|
435
|
+
keywords[list[i]] = className;
|
436
|
+
});
|
437
|
+
// in old versions of opera keywords["__proto__"] sets prototype
|
438
|
+
// even on objects with __proto__=null
|
439
|
+
if (Object.getPrototypeOf(keywords)) {
|
440
|
+
keywords.__proto__ = null;
|
441
|
+
}
|
442
|
+
this.$keywordList = Object.keys(keywords);
|
443
|
+
map = null;
|
444
|
+
return ignoreCase
|
445
|
+
? function(value) {return keywords[value.toLowerCase()] || defaultToken; }
|
446
|
+
: function(value) {return keywords[value] || defaultToken; };
|
447
|
+
};
|
448
|
+
|
449
|
+
this.getKeywords = function() {
|
450
|
+
return this.$keywords;
|
451
|
+
};
|
452
|
+
|
453
|
+
}).call(TextHighlightRules.prototype);
|
454
|
+
|
455
|
+
exports.TextHighlightRules = TextHighlightRules;
|
456
|
+
});
|
457
|
+
|
458
|
+
|
459
|
+
define("prolog_highlight_rules", function(require, exports, module) {
|
460
|
+
"use strict";
|
461
|
+
|
462
|
+
var oop = require("../lib/oop");
|
463
|
+
var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
|
464
|
+
|
465
|
+
var PrologHighlightRules = function() {
|
466
|
+
// regexp must not have capturing parentheses. Use (?:) instead.
|
467
|
+
// regexps are ordered -> the first match is used
|
468
|
+
|
469
|
+
this.$rules = { start:
|
470
|
+
[ { include: '#comment' },
|
471
|
+
{ include: '#basic_fact' },
|
472
|
+
{ include: '#rule' },
|
473
|
+
{ include: '#directive' },
|
474
|
+
{ include: '#fact' } ],
|
475
|
+
'#atom':
|
476
|
+
[ { token: 'constant.other.atom.prolog',
|
477
|
+
regex: '\\b[a-z][a-zA-Z0-9_]*\\b' },
|
478
|
+
{ token: 'constant.numeric.prolog',
|
479
|
+
regex: '-?\\d+(?:\\.\\d+)?' },
|
480
|
+
{ include: '#string' } ],
|
481
|
+
'#basic_elem':
|
482
|
+
[ { include: '#comment' },
|
483
|
+
{ include: '#statement' },
|
484
|
+
{ include: '#constants' },
|
485
|
+
{ include: '#operators' },
|
486
|
+
{ include: '#builtins' },
|
487
|
+
{ include: '#list' },
|
488
|
+
{ include: '#atom' },
|
489
|
+
{ include: '#variable' } ],
|
490
|
+
'#basic_fact':
|
491
|
+
[ { token:
|
492
|
+
[ 'entity.name.function.fact.basic.prolog',
|
493
|
+
'punctuation.end.fact.basic.prolog' ],
|
494
|
+
regex: '([a-z]\\w*)(\\.)' } ],
|
495
|
+
'#builtins':
|
496
|
+
[ { token: 'support.function.builtin.prolog',
|
497
|
+
regex: '\\b(?:abolish|abort|ancestors|arg|ascii|assert[az]|atom(?:ic)?|body|char|close|conc|concat|consult|define|definition|dynamic|dump|fail|file|free|free_proc|functor|getc|goal|halt|head|head|integer|length|listing|match_args|member|next_clause|nl|nonvar|nth|number|cvars|nvars|offset|op|print?|prompt|putc|quoted|ratom|read|redefine|rename|retract(?:all)?|see|seeing|seen|skip|spy|statistics|system|tab|tell|telling|term|time|told|univ|unlink_clause|unspy_predicate|var|write)\\b' } ],
|
498
|
+
'#comment':
|
499
|
+
[ { token:
|
500
|
+
[ 'punctuation.definition.comment.prolog',
|
501
|
+
'comment.line.percentage.prolog' ],
|
502
|
+
regex: '(%)(.*$)' },
|
503
|
+
{ token: 'punctuation.definition.comment.prolog',
|
504
|
+
regex: '/\\*',
|
505
|
+
push:
|
506
|
+
[ { token: 'punctuation.definition.comment.prolog',
|
507
|
+
regex: '\\*/',
|
508
|
+
next: 'pop' },
|
509
|
+
{ defaultToken: 'comment.block.prolog' } ] } ],
|
510
|
+
'#constants':
|
511
|
+
[ { token: 'constant.language.prolog',
|
512
|
+
regex: '\\b(?:true|false|yes|no)\\b' } ],
|
513
|
+
'#directive':
|
514
|
+
[ { token: 'keyword.operator.directive.prolog',
|
515
|
+
regex: ':-',
|
516
|
+
push:
|
517
|
+
[ { token: 'meta.directive.prolog', regex: '\\.', next: 'pop' },
|
518
|
+
{ include: '#comment' },
|
519
|
+
{ include: '#statement' },
|
520
|
+
{ defaultToken: 'meta.directive.prolog' } ] } ],
|
521
|
+
'#expr':
|
522
|
+
[ { include: '#comments' },
|
523
|
+
{ token: 'meta.expression.prolog',
|
524
|
+
regex: '\\(',
|
525
|
+
push:
|
526
|
+
[ { token: 'meta.expression.prolog', regex: '\\)', next: 'pop' },
|
527
|
+
{ include: '#expr' },
|
528
|
+
{ defaultToken: 'meta.expression.prolog' } ] },
|
529
|
+
{ token: 'keyword.control.cutoff.prolog', regex: '!' },
|
530
|
+
{ token: 'punctuation.control.and.prolog', regex: ',' },
|
531
|
+
{ token: 'punctuation.control.or.prolog', regex: ';' },
|
532
|
+
{ include: '#basic_elem' } ],
|
533
|
+
'#fact':
|
534
|
+
[ { token:
|
535
|
+
[ 'entity.name.function.fact.prolog',
|
536
|
+
'punctuation.begin.fact.parameters.prolog' ],
|
537
|
+
regex: '([a-z]\\w*)(\\()(?!.*:-)',
|
538
|
+
push:
|
539
|
+
[ { token:
|
540
|
+
[ 'punctuation.end.fact.parameters.prolog',
|
541
|
+
'punctuation.end.fact.prolog' ],
|
542
|
+
regex: '(\\))(\\.?)',
|
543
|
+
next: 'pop' },
|
544
|
+
{ include: '#parameter' },
|
545
|
+
{ defaultToken: 'meta.fact.prolog' } ] } ],
|
546
|
+
'#list':
|
547
|
+
[ { token: 'punctuation.begin.list.prolog',
|
548
|
+
regex: '\\[(?=.*\\])',
|
549
|
+
push:
|
550
|
+
[ { token: 'punctuation.end.list.prolog',
|
551
|
+
regex: '\\]',
|
552
|
+
next: 'pop' },
|
553
|
+
{ include: '#comment' },
|
554
|
+
{ token: 'punctuation.separator.list.prolog', regex: ',' },
|
555
|
+
{ token: 'punctuation.concat.list.prolog',
|
556
|
+
regex: '\\|',
|
557
|
+
push:
|
558
|
+
[ { token: 'meta.list.concat.prolog',
|
559
|
+
regex: '(?=\\s*\\])',
|
560
|
+
next: 'pop' },
|
561
|
+
{ include: '#basic_elem' },
|
562
|
+
{ defaultToken: 'meta.list.concat.prolog' } ] },
|
563
|
+
{ include: '#basic_elem' },
|
564
|
+
{ defaultToken: 'meta.list.prolog' } ] } ],
|
565
|
+
'#operators':
|
566
|
+
[ { token: 'keyword.operator.prolog',
|
567
|
+
regex: '\\\\\\+|\\bnot\\b|\\bis\\b|->|[><]|[><\\\\:=]?=|(?:=\\\\|\\\\=)=' } ],
|
568
|
+
'#parameter':
|
569
|
+
[ { token: 'variable.language.anonymous.prolog',
|
570
|
+
regex: '\\b_\\b' },
|
571
|
+
{ token: 'variable.parameter.prolog',
|
572
|
+
regex: '\\b[A-Z_]\\w*\\b' },
|
573
|
+
{ token: 'punctuation.separator.parameters.prolog', regex: ',' },
|
574
|
+
{ include: '#basic_elem' },
|
575
|
+
{ token: 'text', regex: '[^\\s]' } ],
|
576
|
+
'#rule':
|
577
|
+
[ { token: 'meta.rule.prolog',
|
578
|
+
regex: '(?=[a-z]\\w*.*:-)',
|
579
|
+
push:
|
580
|
+
[ { token: 'punctuation.rule.end.prolog',
|
581
|
+
regex: '\\.',
|
582
|
+
next: 'pop' },
|
583
|
+
{ token: 'meta.rule.signature.prolog',
|
584
|
+
regex: '(?=[a-z]\\w*.*:-)',
|
585
|
+
push:
|
586
|
+
[ { token: 'meta.rule.signature.prolog',
|
587
|
+
regex: '(?=:-)',
|
588
|
+
next: 'pop' },
|
589
|
+
{ token: 'entity.name.function.rule.prolog',
|
590
|
+
regex: '[a-z]\\w*(?=\\(|\\s*:-)' },
|
591
|
+
{ token: 'punctuation.rule.parameters.begin.prolog',
|
592
|
+
regex: '\\(',
|
593
|
+
push:
|
594
|
+
[ { token: 'punctuation.rule.parameters.end.prolog',
|
595
|
+
regex: '\\)',
|
596
|
+
next: 'pop' },
|
597
|
+
{ include: '#parameter' },
|
598
|
+
{ defaultToken: 'meta.rule.parameters.prolog' } ] },
|
599
|
+
{ defaultToken: 'meta.rule.signature.prolog' } ] },
|
600
|
+
{ token: 'keyword.operator.definition.prolog',
|
601
|
+
regex: ':-',
|
602
|
+
push:
|
603
|
+
[ { token: 'meta.rule.definition.prolog',
|
604
|
+
regex: '(?=\\.)',
|
605
|
+
next: 'pop' },
|
606
|
+
{ include: '#comment' },
|
607
|
+
{ include: '#expr' },
|
608
|
+
{ defaultToken: 'meta.rule.definition.prolog' } ] },
|
609
|
+
{ defaultToken: 'meta.rule.prolog' } ] } ],
|
610
|
+
'#statement':
|
611
|
+
[ { token: 'meta.statement.prolog',
|
612
|
+
regex: '(?=[a-z]\\w*\\()',
|
613
|
+
push:
|
614
|
+
[ { token: 'punctuation.end.statement.parameters.prolog',
|
615
|
+
regex: '\\)',
|
616
|
+
next: 'pop' },
|
617
|
+
{ include: '#builtins' },
|
618
|
+
{ include: '#atom' },
|
619
|
+
{ token: 'punctuation.begin.statement.parameters.prolog',
|
620
|
+
regex: '\\(',
|
621
|
+
push:
|
622
|
+
[ { token: 'meta.statement.parameters.prolog',
|
623
|
+
regex: '(?=\\))',
|
624
|
+
next: 'pop' },
|
625
|
+
{ token: 'punctuation.separator.statement.prolog', regex: ',' },
|
626
|
+
{ include: '#basic_elem' },
|
627
|
+
{ defaultToken: 'meta.statement.parameters.prolog' } ] },
|
628
|
+
{ defaultToken: 'meta.statement.prolog' } ] } ],
|
629
|
+
'#string':
|
630
|
+
[ { token: 'punctuation.definition.string.begin.prolog',
|
631
|
+
regex: '\'',
|
632
|
+
push:
|
633
|
+
[ { token: 'punctuation.definition.string.end.prolog',
|
634
|
+
regex: '\'',
|
635
|
+
next: 'pop' },
|
636
|
+
{ token: 'constant.character.escape.prolog', regex: '\\\\.' },
|
637
|
+
{ token: 'constant.character.escape.quote.prolog',
|
638
|
+
regex: '\'\'' },
|
639
|
+
{ defaultToken: 'string.quoted.single.prolog' } ] } ],
|
640
|
+
'#variable':
|
641
|
+
[ { token: 'variable.language.anonymous.prolog',
|
642
|
+
regex: '\\b_\\b' },
|
643
|
+
{ token: 'variable.other.prolog',
|
644
|
+
regex: '\\b[A-Z_][a-zA-Z0-9_]*\\b' } ] };
|
645
|
+
|
646
|
+
this.normalizeRules();
|
647
|
+
};
|
648
|
+
|
649
|
+
PrologHighlightRules.metaData = { fileTypes: [ 'plg', 'prolog' ],
|
650
|
+
foldingStartMarker: '(%\\s*region \\w*)|([a-z]\\w*.*:- ?)',
|
651
|
+
foldingStopMarker: '(%\\s*end(\\s*region)?)|(?=\\.)',
|
652
|
+
keyEquivalent: '^~P',
|
653
|
+
name: 'Prolog',
|
654
|
+
scopeName: 'source.prolog' };
|
655
|
+
|
656
|
+
|
657
|
+
oop.inherits(PrologHighlightRules, TextHighlightRules);
|
658
|
+
|
659
|
+
exports.PrologHighlightRules = PrologHighlightRules;
|
660
|
+
});
|
661
|
+
|
662
|
+
|
663
|
+
// Ace highlight rules function imported below.
|
664
|
+
var HighlightRules = require("prolog_highlight_rules").PrologHighlightRules;
|
665
|
+
|
666
|
+
|
667
|
+
|
668
|
+
// Ace's Syntax Tokenizer.
|
669
|
+
|
670
|
+
// tokenizing lines longer than this makes editor very slow
|
671
|
+
var MAX_TOKEN_COUNT = 1000;
|
672
|
+
var Tokenizer = function(rules) {
|
673
|
+
this.states = rules;
|
674
|
+
|
675
|
+
this.regExps = {};
|
676
|
+
this.matchMappings = {};
|
677
|
+
for (var key in this.states) {
|
678
|
+
var state = this.states[key];
|
679
|
+
var ruleRegExps = [];
|
680
|
+
var matchTotal = 0;
|
681
|
+
var mapping = this.matchMappings[key] = {defaultToken: "text"};
|
682
|
+
var flag = "g";
|
683
|
+
|
684
|
+
var splitterRurles = [];
|
685
|
+
for (var i = 0; i < state.length; i++) {
|
686
|
+
var rule = state[i];
|
687
|
+
if (rule.defaultToken)
|
688
|
+
mapping.defaultToken = rule.defaultToken;
|
689
|
+
if (rule.caseInsensitive)
|
690
|
+
flag = "gi";
|
691
|
+
if (rule.regex == null)
|
692
|
+
continue;
|
693
|
+
|
694
|
+
if (rule.regex instanceof RegExp)
|
695
|
+
rule.regex = rule.regex.toString().slice(1, -1);
|
696
|
+
|
697
|
+
// Count number of matching groups. 2 extra groups from the full match
|
698
|
+
// And the catch-all on the end (used to force a match);
|
699
|
+
var adjustedregex = rule.regex;
|
700
|
+
var matchcount = new RegExp("(?:(" + adjustedregex + ")|(.))").exec("a").length - 2;
|
701
|
+
if (Array.isArray(rule.token)) {
|
702
|
+
if (rule.token.length == 1 || matchcount == 1) {
|
703
|
+
rule.token = rule.token[0];
|
704
|
+
} else if (matchcount - 1 != rule.token.length) {
|
705
|
+
throw new Error("number of classes and regexp groups in '" +
|
706
|
+
rule.token + "'\n'" + rule.regex + "' doesn't match\n"
|
707
|
+
+ (matchcount - 1) + "!=" + rule.token.length);
|
708
|
+
} else {
|
709
|
+
rule.tokenArray = rule.token;
|
710
|
+
rule.token = null;
|
711
|
+
rule.onMatch = this.$arrayTokens;
|
712
|
+
}
|
713
|
+
} else if (typeof rule.token == "function" && !rule.onMatch) {
|
714
|
+
if (matchcount > 1)
|
715
|
+
rule.onMatch = this.$applyToken;
|
716
|
+
else
|
717
|
+
rule.onMatch = rule.token;
|
718
|
+
}
|
719
|
+
|
720
|
+
if (matchcount > 1) {
|
721
|
+
if (/\\\d/.test(rule.regex)) {
|
722
|
+
// Replace any backreferences and offset appropriately.
|
723
|
+
adjustedregex = rule.regex.replace(/\\([0-9]+)/g, function(match, digit) {
|
724
|
+
return "\\" + (parseInt(digit, 10) + matchTotal + 1);
|
725
|
+
});
|
726
|
+
} else {
|
727
|
+
matchcount = 1;
|
728
|
+
adjustedregex = this.removeCapturingGroups(rule.regex);
|
729
|
+
}
|
730
|
+
if (!rule.splitRegex && typeof rule.token != "string")
|
731
|
+
splitterRurles.push(rule); // flag will be known only at the very end
|
732
|
+
}
|
733
|
+
|
734
|
+
mapping[matchTotal] = i;
|
735
|
+
matchTotal += matchcount;
|
736
|
+
|
737
|
+
ruleRegExps.push(adjustedregex);
|
738
|
+
|
739
|
+
// makes property access faster
|
740
|
+
if (!rule.onMatch)
|
741
|
+
rule.onMatch = null;
|
742
|
+
}
|
743
|
+
|
744
|
+
splitterRurles.forEach(function(rule) {
|
745
|
+
rule.splitRegex = this.createSplitterRegexp(rule.regex, flag);
|
746
|
+
}, this);
|
747
|
+
|
748
|
+
this.regExps[key] = new RegExp("(" + ruleRegExps.join(")|(") + ")|($)", flag);
|
749
|
+
}
|
750
|
+
};
|
751
|
+
|
752
|
+
(function() {
|
753
|
+
this.$setMaxTokenCount = function(m) {
|
754
|
+
MAX_TOKEN_COUNT = m | 0;
|
755
|
+
};
|
756
|
+
|
757
|
+
this.$applyToken = function(str) {
|
758
|
+
var values = this.splitRegex.exec(str).slice(1);
|
759
|
+
var types = this.token.apply(this, values);
|
760
|
+
|
761
|
+
// required for compatibility with old modes
|
762
|
+
if (typeof types === "string")
|
763
|
+
return [{type: types, value: str}];
|
764
|
+
|
765
|
+
var tokens = [];
|
766
|
+
for (var i = 0, l = types.length; i < l; i++) {
|
767
|
+
if (values[i])
|
768
|
+
tokens[tokens.length] = {
|
769
|
+
type: types[i],
|
770
|
+
value: values[i]
|
771
|
+
};
|
772
|
+
}
|
773
|
+
return tokens;
|
774
|
+
},
|
775
|
+
|
776
|
+
this.$arrayTokens = function(str) {
|
777
|
+
if (!str)
|
778
|
+
return [];
|
779
|
+
var values = this.splitRegex.exec(str);
|
780
|
+
if (!values)
|
781
|
+
return "text";
|
782
|
+
var tokens = [];
|
783
|
+
var types = this.tokenArray;
|
784
|
+
for (var i = 0, l = types.length; i < l; i++) {
|
785
|
+
if (values[i + 1])
|
786
|
+
tokens[tokens.length] = {
|
787
|
+
type: types[i],
|
788
|
+
value: values[i + 1]
|
789
|
+
};
|
790
|
+
}
|
791
|
+
return tokens;
|
792
|
+
};
|
793
|
+
|
794
|
+
this.removeCapturingGroups = function(src) {
|
795
|
+
var r = src.replace(
|
796
|
+
/\[(?:\\.|[^\]])*?\]|\\.|\(\?[:=!]|(\()/g,
|
797
|
+
function(x, y) {return y ? "(?:" : x;}
|
798
|
+
);
|
799
|
+
return r;
|
800
|
+
};
|
801
|
+
|
802
|
+
this.createSplitterRegexp = function(src, flag) {
|
803
|
+
if (src.indexOf("(?=") != -1) {
|
804
|
+
var stack = 0;
|
805
|
+
var inChClass = false;
|
806
|
+
var lastCapture = {};
|
807
|
+
src.replace(/(\\.)|(\((?:\?[=!])?)|(\))|([\[\]])/g, function(
|
808
|
+
m, esc, parenOpen, parenClose, square, index
|
809
|
+
) {
|
810
|
+
if (inChClass) {
|
811
|
+
inChClass = square != "]";
|
812
|
+
} else if (square) {
|
813
|
+
inChClass = true;
|
814
|
+
} else if (parenClose) {
|
815
|
+
if (stack == lastCapture.stack) {
|
816
|
+
lastCapture.end = index+1;
|
817
|
+
lastCapture.stack = -1;
|
818
|
+
}
|
819
|
+
stack--;
|
820
|
+
} else if (parenOpen) {
|
821
|
+
stack++;
|
822
|
+
if (parenOpen.length != 1) {
|
823
|
+
lastCapture.stack = stack
|
824
|
+
lastCapture.start = index;
|
825
|
+
}
|
826
|
+
}
|
827
|
+
return m;
|
828
|
+
});
|
829
|
+
|
830
|
+
if (lastCapture.end != null && /^\)*$/.test(src.substr(lastCapture.end)))
|
831
|
+
src = src.substring(0, lastCapture.start) + src.substr(lastCapture.end);
|
832
|
+
}
|
833
|
+
return new RegExp(src, (flag||"").replace("g", ""));
|
834
|
+
};
|
835
|
+
|
836
|
+
/**
|
837
|
+
* Returns an object containing two properties: `tokens`, which contains all the tokens; and `state`, the current state.
|
838
|
+
* @returns {Object}
|
839
|
+
**/
|
840
|
+
this.getLineTokens = function(line, startState) {
|
841
|
+
if (startState && typeof startState != "string") {
|
842
|
+
var stack = startState.slice(0);
|
843
|
+
startState = stack[0];
|
844
|
+
} else
|
845
|
+
var stack = [];
|
846
|
+
|
847
|
+
var currentState = startState || "start";
|
848
|
+
var state = this.states[currentState];
|
849
|
+
if (!state) {
|
850
|
+
currentState = "start";
|
851
|
+
state = this.states[currentState];
|
852
|
+
}
|
853
|
+
var mapping = this.matchMappings[currentState];
|
854
|
+
var re = this.regExps[currentState];
|
855
|
+
re.lastIndex = 0;
|
856
|
+
|
857
|
+
var match, tokens = [];
|
858
|
+
var lastIndex = 0;
|
859
|
+
|
860
|
+
var token = {type: null, value: ""};
|
861
|
+
|
862
|
+
while (match = re.exec(line)) {
|
863
|
+
var type = mapping.defaultToken;
|
864
|
+
var rule = null;
|
865
|
+
var value = match[0];
|
866
|
+
var index = re.lastIndex;
|
867
|
+
|
868
|
+
if (index - value.length > lastIndex) {
|
869
|
+
var skipped = line.substring(lastIndex, index - value.length);
|
870
|
+
if (token.type == type) {
|
871
|
+
token.value += skipped;
|
872
|
+
} else {
|
873
|
+
if (token.type)
|
874
|
+
tokens.push(token);
|
875
|
+
token = {type: type, value: skipped};
|
876
|
+
}
|
877
|
+
}
|
878
|
+
|
879
|
+
for (var i = 0; i < match.length-2; i++) {
|
880
|
+
if (match[i + 1] === undefined)
|
881
|
+
continue;
|
882
|
+
|
883
|
+
rule = state[mapping[i]];
|
884
|
+
|
885
|
+
if (rule.onMatch)
|
886
|
+
type = rule.onMatch(value, currentState, stack);
|
887
|
+
else
|
888
|
+
type = rule.token;
|
889
|
+
|
890
|
+
if (rule.next) {
|
891
|
+
if (typeof rule.next == "string")
|
892
|
+
currentState = rule.next;
|
893
|
+
else
|
894
|
+
currentState = rule.next(currentState, stack);
|
895
|
+
|
896
|
+
state = this.states[currentState];
|
897
|
+
if (!state) {
|
898
|
+
window.console && console.error && console.error(currentState, "doesn't exist");
|
899
|
+
currentState = "start";
|
900
|
+
state = this.states[currentState];
|
901
|
+
}
|
902
|
+
mapping = this.matchMappings[currentState];
|
903
|
+
lastIndex = index;
|
904
|
+
re = this.regExps[currentState];
|
905
|
+
re.lastIndex = index;
|
906
|
+
}
|
907
|
+
break;
|
908
|
+
}
|
909
|
+
|
910
|
+
if (value) {
|
911
|
+
if (typeof type == "string") {
|
912
|
+
if ((!rule || rule.merge !== false) && token.type === type) {
|
913
|
+
token.value += value;
|
914
|
+
} else {
|
915
|
+
if (token.type)
|
916
|
+
tokens.push(token);
|
917
|
+
token = {type: type, value: value};
|
918
|
+
}
|
919
|
+
} else if (type) {
|
920
|
+
if (token.type)
|
921
|
+
tokens.push(token);
|
922
|
+
token = {type: null, value: ""};
|
923
|
+
for (var i = 0; i < type.length; i++)
|
924
|
+
tokens.push(type[i]);
|
925
|
+
}
|
926
|
+
}
|
927
|
+
|
928
|
+
if (lastIndex == line.length)
|
929
|
+
break;
|
930
|
+
|
931
|
+
lastIndex = index;
|
932
|
+
|
933
|
+
if (tokens.length > MAX_TOKEN_COUNT) {
|
934
|
+
// chrome doens't show contents of text nodes with very long text
|
935
|
+
while (lastIndex < line.length) {
|
936
|
+
if (token.type)
|
937
|
+
tokens.push(token);
|
938
|
+
token = {
|
939
|
+
value: line.substring(lastIndex, lastIndex += 2000),
|
940
|
+
type: "overflow"
|
941
|
+
};
|
942
|
+
}
|
943
|
+
currentState = "start";
|
944
|
+
stack = [];
|
945
|
+
break;
|
946
|
+
}
|
947
|
+
}
|
948
|
+
|
949
|
+
if (token.type)
|
950
|
+
tokens.push(token);
|
951
|
+
|
952
|
+
if (stack.length > 1) {
|
953
|
+
if (stack[0] !== currentState)
|
954
|
+
stack.unshift(currentState);
|
955
|
+
}
|
956
|
+
return {
|
957
|
+
tokens : tokens,
|
958
|
+
state : stack.length ? stack : currentState
|
959
|
+
};
|
960
|
+
};
|
961
|
+
|
962
|
+
}).call(Tokenizer.prototype);
|
963
|
+
|
964
|
+
// Token conversion.
|
965
|
+
// See <https://github.com/ajaxorg/ace/wiki/Creating-or-Extending-an-Edit-Mode#common-tokens>
|
966
|
+
// This is not an exact match nor the best match that can be made.
|
967
|
+
var tokenFromAceToken = {
|
968
|
+
empty: null,
|
969
|
+
text: null,
|
970
|
+
|
971
|
+
// Keyword
|
972
|
+
keyword: 'keyword',
|
973
|
+
control: 'keyword',
|
974
|
+
operator: 'operator',
|
975
|
+
|
976
|
+
// Constants
|
977
|
+
constant: 'atom',
|
978
|
+
numeric: 'number',
|
979
|
+
character: 'atom',
|
980
|
+
escape: 'atom',
|
981
|
+
|
982
|
+
// Variables
|
983
|
+
variable: 'variable',
|
984
|
+
parameter: 'variable-3',
|
985
|
+
language: 'variable-2', // Python's `self` uses that.
|
986
|
+
|
987
|
+
// Comments
|
988
|
+
comment: 'comment',
|
989
|
+
line: 'comment',
|
990
|
+
'double-slash': 'comment',
|
991
|
+
'double-dash': 'comment',
|
992
|
+
'number-sign': 'comment',
|
993
|
+
percentage: 'comment',
|
994
|
+
block: 'comment',
|
995
|
+
documentation: 'comment',
|
996
|
+
|
997
|
+
// String
|
998
|
+
string: 'string',
|
999
|
+
quoted: 'string',
|
1000
|
+
single: 'string',
|
1001
|
+
double: 'string',
|
1002
|
+
triple: 'string',
|
1003
|
+
unquoted: 'string',
|
1004
|
+
interpolated: 'string',
|
1005
|
+
regexp: 'string-2',
|
1006
|
+
|
1007
|
+
meta: 'meta',
|
1008
|
+
literal: 'qualifier',
|
1009
|
+
support: 'builtin',
|
1010
|
+
|
1011
|
+
// Markup
|
1012
|
+
markup: 'tag',
|
1013
|
+
underline: 'link',
|
1014
|
+
link: 'link',
|
1015
|
+
bold: 'strong',
|
1016
|
+
heading: 'header',
|
1017
|
+
italic: 'em',
|
1018
|
+
list: 'variable-2',
|
1019
|
+
numbered: 'variable-2',
|
1020
|
+
unnumbered: 'variable-2',
|
1021
|
+
quote: 'quote',
|
1022
|
+
raw: 'variable-2', // Markdown's raw block uses that.
|
1023
|
+
|
1024
|
+
// Invalid
|
1025
|
+
invalid: 'error',
|
1026
|
+
illegal: 'invalidchar',
|
1027
|
+
deprecated: 'error'
|
1028
|
+
};
|
1029
|
+
|
1030
|
+
// Takes a list of Ace tokens, returns a (string) CodeMirror token.
|
1031
|
+
var cmTokenFromAceTokens = function(tokens) {
|
1032
|
+
var token = null;
|
1033
|
+
for (var i = 0; i < tokens.length; i++) {
|
1034
|
+
// Find the most specific token.
|
1035
|
+
if (tokenFromAceToken[tokens[i]] !== undefined) {
|
1036
|
+
token = tokenFromAceToken[tokens[i]];
|
1037
|
+
}
|
1038
|
+
}
|
1039
|
+
return token;
|
1040
|
+
};
|
1041
|
+
|
1042
|
+
// Consume a token from plannedTokens.
|
1043
|
+
var consumeToken = function(stream, state) {
|
1044
|
+
var plannedToken = state.plannedTokens.shift();
|
1045
|
+
if (plannedToken === undefined) {
|
1046
|
+
return null;
|
1047
|
+
}
|
1048
|
+
stream.match(plannedToken.value);
|
1049
|
+
var tokens = plannedToken.type.split('.');
|
1050
|
+
return cmTokenFromAceTokens(tokens);
|
1051
|
+
};
|
1052
|
+
|
1053
|
+
var matchToken = function(stream, state) {
|
1054
|
+
// Anormal start: we already have planned tokens to consume.
|
1055
|
+
if (state.plannedTokens.length > 0) {
|
1056
|
+
return consumeToken(stream, state);
|
1057
|
+
}
|
1058
|
+
|
1059
|
+
// Normal start.
|
1060
|
+
var currentState = state.current;
|
1061
|
+
var currentLine = stream.match(/.*$/, false)[0];
|
1062
|
+
var tokenized = tokenizer.getLineTokens(currentLine, currentState);
|
1063
|
+
// We got a {tokens, state} object.
|
1064
|
+
// Each token is a {value, type} object.
|
1065
|
+
state.plannedTokens = tokenized.tokens;
|
1066
|
+
state.current = tokenized.state;
|
1067
|
+
|
1068
|
+
// Consume a token.
|
1069
|
+
return consumeToken(stream, state);
|
1070
|
+
}
|
1071
|
+
|
1072
|
+
// Initialize all state.
|
1073
|
+
var aceHighlightRules = new HighlightRules();
|
1074
|
+
var tokenizer = new Tokenizer(aceHighlightRules.$rules);
|
1075
|
+
|
1076
|
+
return {
|
1077
|
+
startState: function() {
|
1078
|
+
return {
|
1079
|
+
current: 'start',
|
1080
|
+
// List of {value, type}, with type being an Ace token string.
|
1081
|
+
plannedTokens: []
|
1082
|
+
};
|
1083
|
+
},
|
1084
|
+
blankLine: function(state) { matchToken('', state); },
|
1085
|
+
token: matchToken
|
1086
|
+
};
|
1087
|
+
});
|
1088
|
+
|
1089
|
+
CodeMirror.defineMIME("text/x-prolog", "prolog");
|