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.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/lib/mumuki/laboratory/version.rb +1 -1
  3. data/vendor/assets/javascripts/analytics.js +4 -0
  4. data/vendor/assets/javascripts/codemirror-modes/assembly_x86.js +967 -0
  5. data/vendor/assets/javascripts/codemirror-modes/autocomplete.js +44 -0
  6. data/vendor/assets/javascripts/codemirror-modes/clike.min.js +1 -0
  7. data/vendor/assets/javascripts/codemirror-modes/closebrackets.min.js +1 -0
  8. data/vendor/assets/javascripts/codemirror-modes/css-hint.min.js +1 -0
  9. data/vendor/assets/javascripts/codemirror-modes/css.min.js +1 -0
  10. data/vendor/assets/javascripts/codemirror-modes/elixir.js +1284 -0
  11. data/vendor/assets/javascripts/codemirror-modes/gobstones-autocomplete.js +4 -0
  12. data/vendor/assets/javascripts/codemirror-modes/gobstones.js +1046 -0
  13. data/vendor/assets/javascripts/codemirror-modes/haskell-autocomplete.js +1 -0
  14. data/vendor/assets/javascripts/codemirror-modes/haskell.min.js +1 -0
  15. data/vendor/assets/javascripts/codemirror-modes/html-hint.min.js +1 -0
  16. data/vendor/assets/javascripts/codemirror-modes/htmlmixed.min.js +1 -0
  17. data/vendor/assets/javascripts/codemirror-modes/javascript-hint.min.js +1 -0
  18. data/vendor/assets/javascripts/codemirror-modes/javascript.min.js +1 -0
  19. data/vendor/assets/javascripts/codemirror-modes/markdown.min.js +1 -0
  20. data/vendor/assets/javascripts/codemirror-modes/matchbrackets.min.js +1 -0
  21. data/vendor/assets/javascripts/codemirror-modes/placeholder.min.js +1 -0
  22. data/vendor/assets/javascripts/codemirror-modes/prolog-autocomplete.js +1 -0
  23. data/vendor/assets/javascripts/codemirror-modes/prolog.js +1089 -0
  24. data/vendor/assets/javascripts/codemirror-modes/python.min.js +1 -0
  25. data/vendor/assets/javascripts/codemirror-modes/ruby-autocomplete.js +3 -0
  26. data/vendor/assets/javascripts/codemirror-modes/ruby.min.js +1 -0
  27. data/vendor/assets/javascripts/codemirror-modes/shell.min.js +1 -0
  28. data/vendor/assets/javascripts/codemirror-modes/show-hint.min.js +1 -0
  29. data/vendor/assets/javascripts/codemirror-modes/sql-hint.min.js +1 -0
  30. data/vendor/assets/javascripts/codemirror-modes/sql.min.js +1 -0
  31. data/vendor/assets/javascripts/codemirror-modes/wollok-autocomplete.js +3 -0
  32. data/vendor/assets/javascripts/codemirror-modes/wollok.js +1035 -0
  33. data/vendor/assets/javascripts/codemirror-modes/xml-hint.min.js +1 -0
  34. data/vendor/assets/javascripts/codemirror-modes/xml.min.js +1 -0
  35. data/vendor/assets/javascripts/codemirror.min.js +1 -0
  36. data/vendor/assets/javascripts/hotjar.js +8 -0
  37. data/vendor/assets/javascripts/jquery-console.js +845 -0
  38. data/vendor/assets/javascripts/webcomponents-lite.js +12 -0
  39. data/vendor/assets/stylesheets/codemirror/codemirror.min.css +2 -0
  40. data/vendor/assets/stylesheets/codemirror/show-hint.min.css +2 -0
  41. 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, "&#38;").replace(/"/g, "&#34;").replace(/'/g, "&#39;").replace(/</g, "&#60;");
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");