codemirror-ipython.js
39 lines
| 1.5 KiB
| application/javascript
|
JavascriptLexer
|
r11242 | // IPython mode is just a slightly altered Python Mode with `?` beeing a extra | ||
// single operator. Here we define `ipython` mode in the require `python` | ||||
// callback to auto-load python mode, which is more likely not the best things | ||||
// to do, but at least the simple one for now. | ||||
|
r10416 | |||
|
r18280 | (function(mod) { | ||
if (typeof exports == "object" && typeof module == "object"){ // CommonJS | ||||
mod(require("codemirror/lib/codemirror"), | ||||
require("codemirror/mode/python/python") | ||||
); | ||||
} else if (typeof define == "function" && define.amd){ // AMD | ||||
define(["codemirror/lib/codemirror", | ||||
"codemirror/mode/python/python"], mod); | ||||
} else {// Plain browser env | ||||
mod(CodeMirror); | ||||
} | ||||
})(function(CodeMirror) { | ||||
|
r12103 | "use strict"; | ||
|
r18280 | |||
|
r11242 | CodeMirror.defineMode("ipython", function(conf, parserConf) { | ||
|
r17543 | var pythonConf = {}; | ||
for (var prop in parserConf) { | ||||
if (parserConf.hasOwnProperty(prop)) { | ||||
pythonConf[prop] = parserConf[prop]; | ||||
} | ||||
} | ||||
pythonConf.name = 'python'; | ||||
pythonConf.singleOperators = new RegExp("^[\\+\\-\\*/%&|\\^~<>!\\?]"); | ||||
|
r17742 | if (pythonConf.version === 3) { | ||
pythonConf.identifiers = new RegExp("^[_A-Za-z\u00A1-\uFFFF][_A-Za-z0-9\u00A1-\uFFFF]*"); | ||||
} else if (pythonConf.version === 2) { | ||||
pythonConf.identifiers = new RegExp("^[_A-Za-z][_A-Za-z0-9]*"); | ||||
} | ||||
|
r17543 | return CodeMirror.getMode(conf, pythonConf); | ||
|
r11242 | }, 'python'); | ||
|
r10415 | |||
|
r11242 | CodeMirror.defineMIME("text/x-ipython", "ipython"); | ||
}) | ||||
|
r18280 | |||