| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 | 
							- // CodeMirror, copyright (c) by Marijn Haverbeke and others
 
- // Distributed under an MIT license: https://codemirror.net/LICENSE
 
- (function(mod) {
 
-   if (typeof exports == "object" && typeof module == "object") // CommonJS
 
-     mod(require("../../lib/codemirror"));
 
-   else if (typeof define == "function" && define.amd) // AMD
 
-     define(["../../lib/codemirror"], mod);
 
-   else // Plain browser env
 
-     mod(CodeMirror);
 
- })(function(CodeMirror) {
 
- "use strict";
 
- function wordRegexp(words) {
 
-   return new RegExp("^((" + words.join(")|(") + "))\\b");
 
- };
 
- var builtinArray = [
 
-   "Clamp",
 
-   "Constructor",
 
-   "EnforceRange",
 
-   "Exposed",
 
-   "ImplicitThis",
 
-   "Global", "PrimaryGlobal",
 
-   "LegacyArrayClass",
 
-   "LegacyUnenumerableNamedProperties",
 
-   "LenientThis",
 
-   "NamedConstructor",
 
-   "NewObject",
 
-   "NoInterfaceObject",
 
-   "OverrideBuiltins",
 
-   "PutForwards",
 
-   "Replaceable",
 
-   "SameObject",
 
-   "TreatNonObjectAsNull",
 
-   "TreatNullAs",
 
-     "EmptyString",
 
-   "Unforgeable",
 
-   "Unscopeable"
 
- ];
 
- var builtins = wordRegexp(builtinArray);
 
- var typeArray = [
 
-   "unsigned", "short", "long",                  // UnsignedIntegerType
 
-   "unrestricted", "float", "double",            // UnrestrictedFloatType
 
-   "boolean", "byte", "octet",                   // Rest of PrimitiveType
 
-   "Promise",                                    // PromiseType
 
-   "ArrayBuffer", "DataView", "Int8Array", "Int16Array", "Int32Array",
 
-   "Uint8Array", "Uint16Array", "Uint32Array", "Uint8ClampedArray",
 
-   "Float32Array", "Float64Array",               // BufferRelatedType
 
-   "ByteString", "DOMString", "USVString", "sequence", "object", "RegExp",
 
-   "Error", "DOMException", "FrozenArray",       // Rest of NonAnyType
 
-   "any",                                        // Rest of SingleType
 
-   "void"                                        // Rest of ReturnType
 
- ];
 
- var types = wordRegexp(typeArray);
 
- var keywordArray = [
 
-   "attribute", "callback", "const", "deleter", "dictionary", "enum", "getter",
 
-   "implements", "inherit", "interface", "iterable", "legacycaller", "maplike",
 
-   "partial", "required", "serializer", "setlike", "setter", "static",
 
-   "stringifier", "typedef",                     // ArgumentNameKeyword except
 
-                                                 // "unrestricted"
 
-   "optional", "readonly", "or"
 
- ];
 
- var keywords = wordRegexp(keywordArray);
 
- var atomArray = [
 
-   "true", "false",                              // BooleanLiteral
 
-   "Infinity", "NaN",                            // FloatLiteral
 
-   "null"                                        // Rest of ConstValue
 
- ];
 
- var atoms = wordRegexp(atomArray);
 
- CodeMirror.registerHelper("hintWords", "webidl",
 
-     builtinArray.concat(typeArray).concat(keywordArray).concat(atomArray));
 
- var startDefArray = ["callback", "dictionary", "enum", "interface"];
 
- var startDefs = wordRegexp(startDefArray);
 
- var endDefArray = ["typedef"];
 
- var endDefs = wordRegexp(endDefArray);
 
- var singleOperators = /^[:<=>?]/;
 
- var integers = /^-?([1-9][0-9]*|0[Xx][0-9A-Fa-f]+|0[0-7]*)/;
 
- var floats = /^-?(([0-9]+\.[0-9]*|[0-9]*\.[0-9]+)([Ee][+-]?[0-9]+)?|[0-9]+[Ee][+-]?[0-9]+)/;
 
- var identifiers = /^_?[A-Za-z][0-9A-Z_a-z-]*/;
 
- var identifiersEnd = /^_?[A-Za-z][0-9A-Z_a-z-]*(?=\s*;)/;
 
- var strings = /^"[^"]*"/;
 
- var multilineComments = /^\/\*.*?\*\//;
 
- var multilineCommentsStart = /^\/\*.*/;
 
- var multilineCommentsEnd = /^.*?\*\//;
 
- function readToken(stream, state) {
 
-   // whitespace
 
-   if (stream.eatSpace()) return null;
 
-   // comment
 
-   if (state.inComment) {
 
-     if (stream.match(multilineCommentsEnd)) {
 
-       state.inComment = false;
 
-       return "comment";
 
-     }
 
-     stream.skipToEnd();
 
-     return "comment";
 
-   }
 
-   if (stream.match("//")) {
 
-     stream.skipToEnd();
 
-     return "comment";
 
-   }
 
-   if (stream.match(multilineComments)) return "comment";
 
-   if (stream.match(multilineCommentsStart)) {
 
-     state.inComment = true;
 
-     return "comment";
 
-   }
 
-   // integer and float
 
-   if (stream.match(/^-?[0-9\.]/, false)) {
 
-     if (stream.match(integers) || stream.match(floats)) return "number";
 
-   }
 
-   // string
 
-   if (stream.match(strings)) return "string";
 
-   // identifier
 
-   if (state.startDef && stream.match(identifiers)) return "def";
 
-   if (state.endDef && stream.match(identifiersEnd)) {
 
-     state.endDef = false;
 
-     return "def";
 
-   }
 
-   if (stream.match(keywords)) return "keyword";
 
-   if (stream.match(types)) {
 
-     var lastToken = state.lastToken;
 
-     var nextToken = (stream.match(/^\s*(.+?)\b/, false) || [])[1];
 
-     if (lastToken === ":" || lastToken === "implements" ||
 
-         nextToken === "implements" || nextToken === "=") {
 
-       // Used as identifier
 
-       return "builtin";
 
-     } else {
 
-       // Used as type
 
-       return "variable-3";
 
-     }
 
-   }
 
-   if (stream.match(builtins)) return "builtin";
 
-   if (stream.match(atoms)) return "atom";
 
-   if (stream.match(identifiers)) return "variable";
 
-   // other
 
-   if (stream.match(singleOperators)) return "operator";
 
-   // unrecognized
 
-   stream.next();
 
-   return null;
 
- };
 
- CodeMirror.defineMode("webidl", function() {
 
-   return {
 
-     startState: function() {
 
-       return {
 
-         // Is in multiline comment
 
-         inComment: false,
 
-         // Last non-whitespace, matched token
 
-         lastToken: "",
 
-         // Next token is a definition
 
-         startDef: false,
 
-         // Last token of the statement is a definition
 
-         endDef: false
 
-       };
 
-     },
 
-     token: function(stream, state) {
 
-       var style = readToken(stream, state);
 
-       if (style) {
 
-         var cur = stream.current();
 
-         state.lastToken = cur;
 
-         if (style === "keyword") {
 
-           state.startDef = startDefs.test(cur);
 
-           state.endDef = state.endDef || endDefs.test(cur);
 
-         } else {
 
-           state.startDef = false;
 
-         }
 
-       }
 
-       return style;
 
-     }
 
-   };
 
- });
 
- CodeMirror.defineMIME("text/x-webidl", "webidl");
 
- });
 
 
  |