Path: blob/master/web-gui/buildyourownbotnet/assets/js/codemirror/mode/clike/clike.js
1293 views
CodeMirror.defineMode("clike", function(config, parserConfig) {1var indentUnit = config.indentUnit,2statementIndentUnit = parserConfig.statementIndentUnit || indentUnit,3dontAlignCalls = parserConfig.dontAlignCalls,4keywords = parserConfig.keywords || {},5builtin = parserConfig.builtin || {},6blockKeywords = parserConfig.blockKeywords || {},7atoms = parserConfig.atoms || {},8hooks = parserConfig.hooks || {},9multiLineStrings = parserConfig.multiLineStrings;10var isOperatorChar = /[+\-*&%=<>!?|\/]/;1112var curPunc;1314function tokenBase(stream, state) {15var ch = stream.next();16if (hooks[ch]) {17var result = hooks[ch](stream, state);18if (result !== false) return result;19}20if (ch == '"' || ch == "'") {21state.tokenize = tokenString(ch);22return state.tokenize(stream, state);23}24if (/[\[\]{}\(\),;\:\.]/.test(ch)) {25curPunc = ch;26return null;27}28if (/\d/.test(ch)) {29stream.eatWhile(/[\w\.]/);30return "number";31}32if (ch == "/") {33if (stream.eat("*")) {34state.tokenize = tokenComment;35return tokenComment(stream, state);36}37if (stream.eat("/")) {38stream.skipToEnd();39return "comment";40}41}42if (isOperatorChar.test(ch)) {43stream.eatWhile(isOperatorChar);44return "operator";45}46stream.eatWhile(/[\w\$_]/);47var cur = stream.current();48if (keywords.propertyIsEnumerable(cur)) {49if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement";50return "keyword";51}52if (builtin.propertyIsEnumerable(cur)) {53if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement";54return "builtin";55}56if (atoms.propertyIsEnumerable(cur)) return "atom";57return "variable";58}5960function tokenString(quote) {61return function(stream, state) {62var escaped = false, next, end = false;63while ((next = stream.next()) != null) {64if (next == quote && !escaped) {end = true; break;}65escaped = !escaped && next == "\\";66}67if (end || !(escaped || multiLineStrings))68state.tokenize = null;69return "string";70};71}7273function tokenComment(stream, state) {74var maybeEnd = false, ch;75while (ch = stream.next()) {76if (ch == "/" && maybeEnd) {77state.tokenize = null;78break;79}80maybeEnd = (ch == "*");81}82return "comment";83}8485function Context(indented, column, type, align, prev) {86this.indented = indented;87this.column = column;88this.type = type;89this.align = align;90this.prev = prev;91}92function pushContext(state, col, type) {93var indent = state.indented;94if (state.context && state.context.type == "statement")95indent = state.context.indented;96return state.context = new Context(indent, col, type, null, state.context);97}98function popContext(state) {99var t = state.context.type;100if (t == ")" || t == "]" || t == "}")101state.indented = state.context.indented;102return state.context = state.context.prev;103}104105// Interface106107return {108startState: function(basecolumn) {109return {110tokenize: null,111context: new Context((basecolumn || 0) - indentUnit, 0, "top", false),112indented: 0,113startOfLine: true114};115},116117token: function(stream, state) {118var ctx = state.context;119if (stream.sol()) {120if (ctx.align == null) ctx.align = false;121state.indented = stream.indentation();122state.startOfLine = true;123}124if (stream.eatSpace()) return null;125curPunc = null;126var style = (state.tokenize || tokenBase)(stream, state);127if (style == "comment" || style == "meta") return style;128if (ctx.align == null) ctx.align = true;129130if ((curPunc == ";" || curPunc == ":" || curPunc == ",") && ctx.type == "statement") popContext(state);131else if (curPunc == "{") pushContext(state, stream.column(), "}");132else if (curPunc == "[") pushContext(state, stream.column(), "]");133else if (curPunc == "(") pushContext(state, stream.column(), ")");134else if (curPunc == "}") {135while (ctx.type == "statement") ctx = popContext(state);136if (ctx.type == "}") ctx = popContext(state);137while (ctx.type == "statement") ctx = popContext(state);138}139else if (curPunc == ctx.type) popContext(state);140else if (((ctx.type == "}" || ctx.type == "top") && curPunc != ';') || (ctx.type == "statement" && curPunc == "newstatement"))141pushContext(state, stream.column(), "statement");142state.startOfLine = false;143return style;144},145146indent: function(state, textAfter) {147if (state.tokenize != tokenBase && state.tokenize != null) return CodeMirror.Pass;148var ctx = state.context, firstChar = textAfter && textAfter.charAt(0);149if (ctx.type == "statement" && firstChar == "}") ctx = ctx.prev;150var closing = firstChar == ctx.type;151if (ctx.type == "statement") return ctx.indented + (firstChar == "{" ? 0 : statementIndentUnit);152else if (ctx.align && (!dontAlignCalls || ctx.type != ")")) return ctx.column + (closing ? 0 : 1);153else if (ctx.type == ")" && !closing) return ctx.indented + statementIndentUnit;154else return ctx.indented + (closing ? 0 : indentUnit);155},156157electricChars: "{}",158blockCommentStart: "/*",159blockCommentEnd: "*/",160lineComment: "//",161fold: "brace"162};163});164165(function() {166function words(str) {167var obj = {}, words = str.split(" ");168for (var i = 0; i < words.length; ++i) obj[words[i]] = true;169return obj;170}171var cKeywords = "auto if break int case long char register continue return default short do sizeof " +172"double static else struct entry switch extern typedef float union for unsigned " +173"goto while enum void const signed volatile";174175function cppHook(stream, state) {176if (!state.startOfLine) return false;177for (;;) {178if (stream.skipTo("\\")) {179stream.next();180if (stream.eol()) {181state.tokenize = cppHook;182break;183}184} else {185stream.skipToEnd();186state.tokenize = null;187break;188}189}190return "meta";191}192193// C#-style strings where "" escapes a quote.194function tokenAtString(stream, state) {195var next;196while ((next = stream.next()) != null) {197if (next == '"' && !stream.eat('"')) {198state.tokenize = null;199break;200}201}202return "string";203}204205function def(mimes, mode) {206var words = [];207function add(obj) {208if (obj) for (var prop in obj) if (obj.hasOwnProperty(prop))209words.push(prop);210}211add(mode.keywords);212add(mode.builtin);213add(mode.atoms);214if (words.length) {215mode.helperType = mimes[0];216CodeMirror.registerHelper("hintWords", mimes[0], words);217}218219for (var i = 0; i < mimes.length; ++i)220CodeMirror.defineMIME(mimes[i], mode);221}222223def(["text/x-csrc", "text/x-c", "text/x-chdr"], {224name: "clike",225keywords: words(cKeywords),226blockKeywords: words("case do else for if switch while struct"),227atoms: words("null"),228hooks: {"#": cppHook},229modeProps: {fold: ["brace", "include"]}230});231232def(["text/x-c++src", "text/x-c++hdr"], {233name: "clike",234keywords: words(cKeywords + " asm dynamic_cast namespace reinterpret_cast try bool explicit new " +235"static_cast typeid catch operator template typename class friend private " +236"this using const_cast inline public throw virtual delete mutable protected " +237"wchar_t"),238blockKeywords: words("catch class do else finally for if struct switch try while"),239atoms: words("true false null"),240hooks: {"#": cppHook},241modeProps: {fold: ["brace", "include"]}242});243CodeMirror.defineMIME("text/x-java", {244name: "clike",245keywords: words("abstract assert boolean break byte case catch char class const continue default " +246"do double else enum extends final finally float for goto if implements import " +247"instanceof int interface long native new package private protected public " +248"return short static strictfp super switch synchronized this throw throws transient " +249"try void volatile while"),250blockKeywords: words("catch class do else finally for if switch try while"),251atoms: words("true false null"),252hooks: {253"@": function(stream) {254stream.eatWhile(/[\w\$_]/);255return "meta";256}257},258modeProps: {fold: ["brace", "import"]}259});260CodeMirror.defineMIME("text/x-csharp", {261name: "clike",262keywords: words("abstract as base break case catch checked class const continue" +263" default delegate do else enum event explicit extern finally fixed for" +264" foreach goto if implicit in interface internal is lock namespace new" +265" operator out override params private protected public readonly ref return sealed" +266" sizeof stackalloc static struct switch this throw try typeof unchecked" +267" unsafe using virtual void volatile while add alias ascending descending dynamic from get" +268" global group into join let orderby partial remove select set value var yield"),269blockKeywords: words("catch class do else finally for foreach if struct switch try while"),270builtin: words("Boolean Byte Char DateTime DateTimeOffset Decimal Double" +271" Guid Int16 Int32 Int64 Object SByte Single String TimeSpan UInt16 UInt32" +272" UInt64 bool byte char decimal double short int long object" +273" sbyte float string ushort uint ulong"),274atoms: words("true false null"),275hooks: {276"@": function(stream, state) {277if (stream.eat('"')) {278state.tokenize = tokenAtString;279return tokenAtString(stream, state);280}281stream.eatWhile(/[\w\$_]/);282return "meta";283}284}285});286CodeMirror.defineMIME("text/x-scala", {287name: "clike",288keywords: words(289290/* scala */291"abstract case catch class def do else extends false final finally for forSome if " +292"implicit import lazy match new null object override package private protected return " +293"sealed super this throw trait try trye type val var while with yield _ : = => <- <: " +294"<% >: # @ " +295296/* package scala */297"assert assume require print println printf readLine readBoolean readByte readShort " +298"readChar readInt readLong readFloat readDouble " +299300"AnyVal App Application Array BufferedIterator BigDecimal BigInt Char Console Either " +301"Enumeration Equiv Error Exception Fractional Function IndexedSeq Integral Iterable " +302"Iterator List Map Numeric Nil NotNull Option Ordered Ordering PartialFunction PartialOrdering " +303"Product Proxy Range Responder Seq Serializable Set Specializable Stream StringBuilder " +304"StringContext Symbol Throwable Traversable TraversableOnce Tuple Unit Vector :: #:: " +305306/* package java.lang */307"Boolean Byte Character CharSequence Class ClassLoader Cloneable Comparable " +308"Compiler Double Exception Float Integer Long Math Number Object Package Pair Process " +309"Runtime Runnable SecurityManager Short StackTraceElement StrictMath String " +310"StringBuffer System Thread ThreadGroup ThreadLocal Throwable Triple Void"311312313),314blockKeywords: words("catch class do else finally for forSome if match switch try while"),315atoms: words("true false null"),316hooks: {317"@": function(stream) {318stream.eatWhile(/[\w\$_]/);319return "meta";320}321}322});323def(["x-shader/x-vertex", "x-shader/x-fragment"], {324name: "clike",325keywords: words("float int bool void " +326"vec2 vec3 vec4 ivec2 ivec3 ivec4 bvec2 bvec3 bvec4 " +327"mat2 mat3 mat4 " +328"sampler1D sampler2D sampler3D samplerCube " +329"sampler1DShadow sampler2DShadow" +330"const attribute uniform varying " +331"break continue discard return " +332"for while do if else struct " +333"in out inout"),334blockKeywords: words("for while do if else struct"),335builtin: words("radians degrees sin cos tan asin acos atan " +336"pow exp log exp2 sqrt inversesqrt " +337"abs sign floor ceil fract mod min max clamp mix step smootstep " +338"length distance dot cross normalize ftransform faceforward " +339"reflect refract matrixCompMult " +340"lessThan lessThanEqual greaterThan greaterThanEqual " +341"equal notEqual any all not " +342"texture1D texture1DProj texture1DLod texture1DProjLod " +343"texture2D texture2DProj texture2DLod texture2DProjLod " +344"texture3D texture3DProj texture3DLod texture3DProjLod " +345"textureCube textureCubeLod " +346"shadow1D shadow2D shadow1DProj shadow2DProj " +347"shadow1DLod shadow2DLod shadow1DProjLod shadow2DProjLod " +348"dFdx dFdy fwidth " +349"noise1 noise2 noise3 noise4"),350atoms: words("true false " +351"gl_FragColor gl_SecondaryColor gl_Normal gl_Vertex " +352"gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2 gl_MultiTexCoord3 " +353"gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 " +354"gl_FogCoord " +355"gl_Position gl_PointSize gl_ClipVertex " +356"gl_FrontColor gl_BackColor gl_FrontSecondaryColor gl_BackSecondaryColor " +357"gl_TexCoord gl_FogFragCoord " +358"gl_FragCoord gl_FrontFacing " +359"gl_FragColor gl_FragData gl_FragDepth " +360"gl_ModelViewMatrix gl_ProjectionMatrix gl_ModelViewProjectionMatrix " +361"gl_TextureMatrix gl_NormalMatrix gl_ModelViewMatrixInverse " +362"gl_ProjectionMatrixInverse gl_ModelViewProjectionMatrixInverse " +363"gl_TexureMatrixTranspose gl_ModelViewMatrixInverseTranspose " +364"gl_ProjectionMatrixInverseTranspose " +365"gl_ModelViewProjectionMatrixInverseTranspose " +366"gl_TextureMatrixInverseTranspose " +367"gl_NormalScale gl_DepthRange gl_ClipPlane " +368"gl_Point gl_FrontMaterial gl_BackMaterial gl_LightSource gl_LightModel " +369"gl_FrontLightModelProduct gl_BackLightModelProduct " +370"gl_TextureColor gl_EyePlaneS gl_EyePlaneT gl_EyePlaneR gl_EyePlaneQ " +371"gl_FogParameters " +372"gl_MaxLights gl_MaxClipPlanes gl_MaxTextureUnits gl_MaxTextureCoords " +373"gl_MaxVertexAttribs gl_MaxVertexUniformComponents gl_MaxVaryingFloats " +374"gl_MaxVertexTextureImageUnits gl_MaxTextureImageUnits " +375"gl_MaxFragmentUniformComponents gl_MaxCombineTextureImageUnits " +376"gl_MaxDrawBuffers"),377hooks: {"#": cppHook},378modeProps: {fold: ["brace", "include"]}379});380}());381382383