| OLD | NEW | 
 |    1 // CodeMirror, copyright (c) by Marijn Haverbeke and others | 
 |    2 // Distributed under an MIT license: http://codemirror.net/LICENSE | 
 |    3  | 
|    1 /** |    4 /** | 
|    2  * Link to the project's GitHub page: |    5  * Link to the project's GitHub page: | 
|    3  * https://github.com/pickhardt/coffeescript-codemirror-mode |    6  * https://github.com/pickhardt/coffeescript-codemirror-mode | 
|    4  */ |    7  */ | 
 |    8 (function(mod) { | 
 |    9   if (typeof exports == "object" && typeof module == "object") // CommonJS | 
 |   10     mod(require("../../lib/codemirror")); | 
 |   11   else if (typeof define == "function" && define.amd) // AMD | 
 |   12     define(["../../lib/codemirror"], mod); | 
 |   13   else // Plain browser env | 
 |   14     mod(CodeMirror); | 
 |   15 })(function(CodeMirror) { | 
 |   16 "use strict"; | 
 |   17  | 
|    5 CodeMirror.defineMode("coffeescript", function(conf) { |   18 CodeMirror.defineMode("coffeescript", function(conf) { | 
|    6   var ERRORCLASS = "error"; |   19   var ERRORCLASS = "error"; | 
|    7  |   20  | 
|    8   function wordRegexp(words) { |   21   function wordRegexp(words) { | 
|    9     return new RegExp("^((" + words.join(")|(") + "))\\b"); |   22     return new RegExp("^((" + words.join(")|(") + "))\\b"); | 
|   10   } |   23   } | 
|   11  |   24  | 
|   12   var operators = /^(?:->|=>|\+[+=]?|-[\-=]?|\*[\*=]?|\/[\/=]?|[=!]=|<[><]?=?|>>
     ?=?|%=?|&=?|\|=?|\^=?|\~|!|\?)/; |   25   var operators = /^(?:->|=>|\+[+=]?|-[\-=]?|\*[\*=]?|\/[\/=]?|[=!]=|<[><]?=?|>>
     ?=?|%=?|&=?|\|=?|\^=?|\~|!|\?)/; | 
|   13   var delimiters = /^(?:[()\[\]{},:`=;]|\.\.?\.?)/; |   26   var delimiters = /^(?:[()\[\]{},:`=;]|\.\.?\.?)/; | 
|   14   var identifiers = /^[_A-Za-z$][_A-Za-z$0-9]*/; |   27   var identifiers = /^[_A-Za-z$][_A-Za-z$0-9]*/; | 
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  112       if (stream.match(/^-?0(?![\dx])/i)) { |  125       if (stream.match(/^-?0(?![\dx])/i)) { | 
|  113         intLiteral = true; |  126         intLiteral = true; | 
|  114       } |  127       } | 
|  115       if (intLiteral) { |  128       if (intLiteral) { | 
|  116         return "number"; |  129         return "number"; | 
|  117       } |  130       } | 
|  118     } |  131     } | 
|  119  |  132  | 
|  120     // Handle strings |  133     // Handle strings | 
|  121     if (stream.match(stringPrefixes)) { |  134     if (stream.match(stringPrefixes)) { | 
|  122       state.tokenize = tokenFactory(stream.current(), "string"); |  135       state.tokenize = tokenFactory(stream.current(), false, "string"); | 
|  123       return state.tokenize(stream, state); |  136       return state.tokenize(stream, state); | 
|  124     } |  137     } | 
|  125     // Handle regex literals |  138     // Handle regex literals | 
|  126     if (stream.match(regexPrefixes)) { |  139     if (stream.match(regexPrefixes)) { | 
|  127       if (stream.current() != "/" || stream.match(/^.*\//, false)) { // prevent 
     highlight of division |  140       if (stream.current() != "/" || stream.match(/^.*\//, false)) { // prevent 
     highlight of division | 
|  128         state.tokenize = tokenFactory(stream.current(), "string-2"); |  141         state.tokenize = tokenFactory(stream.current(), true, "string-2"); | 
|  129         return state.tokenize(stream, state); |  142         return state.tokenize(stream, state); | 
|  130       } else { |  143       } else { | 
|  131         stream.backUp(1); |  144         stream.backUp(1); | 
|  132       } |  145       } | 
|  133     } |  146     } | 
|  134  |  147  | 
|  135     // Handle operators and delimiters |  148     // Handle operators and delimiters | 
|  136     if (stream.match(operators) || stream.match(wordOperators)) { |  149     if (stream.match(operators) || stream.match(wordOperators)) { | 
|  137       return "operator"; |  150       return "operator"; | 
|  138     } |  151     } | 
| (...skipping 15 matching lines...) Expand all  Loading... | 
|  154  |  167  | 
|  155     if (stream.match(properties)) { |  168     if (stream.match(properties)) { | 
|  156       return "property"; |  169       return "property"; | 
|  157     } |  170     } | 
|  158  |  171  | 
|  159     // Handle non-detected items |  172     // Handle non-detected items | 
|  160     stream.next(); |  173     stream.next(); | 
|  161     return ERRORCLASS; |  174     return ERRORCLASS; | 
|  162   } |  175   } | 
|  163  |  176  | 
|  164   function tokenFactory(delimiter, outclass) { |  177   function tokenFactory(delimiter, singleline, outclass) { | 
|  165     var singleline = delimiter.length == 1; |  | 
|  166     return function(stream, state) { |  178     return function(stream, state) { | 
|  167       while (!stream.eol()) { |  179       while (!stream.eol()) { | 
|  168         stream.eatWhile(/[^'"\/\\]/); |  180         stream.eatWhile(/[^'"\/\\]/); | 
|  169         if (stream.eat("\\")) { |  181         if (stream.eat("\\")) { | 
|  170           stream.next(); |  182           stream.next(); | 
|  171           if (singleline && stream.eol()) { |  183           if (singleline && stream.eol()) { | 
|  172             return outclass; |  184             return outclass; | 
|  173           } |  185           } | 
|  174         } else if (stream.match(delimiter)) { |  186         } else if (stream.match(delimiter)) { | 
|  175           state.tokenize = tokenBase; |  187           state.tokenize = tokenBase; | 
| (...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  345         return (closes ? scope.prev : scope).offset; |  357         return (closes ? scope.prev : scope).offset; | 
|  346     }, |  358     }, | 
|  347  |  359  | 
|  348     lineComment: "#", |  360     lineComment: "#", | 
|  349     fold: "indent" |  361     fold: "indent" | 
|  350   }; |  362   }; | 
|  351   return external; |  363   return external; | 
|  352 }); |  364 }); | 
|  353  |  365  | 
|  354 CodeMirror.defineMIME("text/x-coffeescript", "coffeescript"); |  366 CodeMirror.defineMIME("text/x-coffeescript", "coffeescript"); | 
 |  367  | 
 |  368 }); | 
| OLD | NEW |