|
@@ -1,136 +0,0 @@
|
|
|
-YUI.add('ui-code-editor', function (Y) {
|
|
|
-
|
|
|
- CodeMirror.defineMode("oberon07", function () {
|
|
|
- function words(str) {
|
|
|
- var obj = {}, words = str.split(" ");
|
|
|
-
|
|
|
- for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
|
|
|
- return obj;
|
|
|
- }
|
|
|
-
|
|
|
- var keywords = words("ARRAY IMPORT THEN BEGIN IN TO BY IS TRUE CASE MOD TYPE " +
|
|
|
- "CONST MODULE UNTIL DIV NIL VAR DO OF WHILE ELSE OR " +
|
|
|
- "ELSIF POINTER END PROCEDURE FALSE RECORD FOR REPEAT IF RETURN");
|
|
|
-
|
|
|
- var atoms = {'null': true};
|
|
|
-
|
|
|
- var isOperatorChar = /[+\-*&%=<>^~#!?\|\/]/;
|
|
|
-
|
|
|
- function tokenBase(stream, state) {
|
|
|
- var ch = stream.next();
|
|
|
-
|
|
|
- if (ch == "#" && state.startOfLine) {
|
|
|
- stream.skipToEnd();
|
|
|
- return "meta";
|
|
|
- }
|
|
|
-
|
|
|
- if (ch == '"' || ch == "'") {
|
|
|
- state.tokenize = tokenString(ch);
|
|
|
- return state.tokenize(stream, state);
|
|
|
- }
|
|
|
-
|
|
|
- if (ch == "(" && stream.eat("*")) {
|
|
|
- state.tokenize = tokenComment;
|
|
|
- return tokenComment(stream, state);
|
|
|
- }
|
|
|
-
|
|
|
- if (/[\[\]{}\(\),;\:\.]/.test(ch)) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- if (/\d/.test(ch)) {
|
|
|
- stream.eatWhile(/[\w\.]/);
|
|
|
- return "number";
|
|
|
- }
|
|
|
-
|
|
|
- if (ch == "/") {
|
|
|
- if (stream.eat("/")) {
|
|
|
- stream.skipToEnd();
|
|
|
- return "comment";
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (isOperatorChar.test(ch)) {
|
|
|
- stream.eatWhile(isOperatorChar);
|
|
|
- return "operator";
|
|
|
- }
|
|
|
-
|
|
|
- stream.eatWhile(/[\w\$_]/);
|
|
|
-
|
|
|
- var cur = stream.current();
|
|
|
-
|
|
|
- if (keywords.propertyIsEnumerable(cur)) return "keyword";
|
|
|
- if (atoms.propertyIsEnumerable(cur)) return "atom";
|
|
|
- return "variable";
|
|
|
- }
|
|
|
-
|
|
|
- function tokenString(quote) {
|
|
|
- return function(stream, state) {
|
|
|
- var escaped = false, next, end = false;
|
|
|
-
|
|
|
- while ((next = stream.next()) != null) {
|
|
|
- if (next == quote && !escaped) {end = true; break;}
|
|
|
- escaped = !escaped && next == "\\";
|
|
|
- }
|
|
|
-
|
|
|
- if (end || !escaped) state.tokenize = null;
|
|
|
- return "string";
|
|
|
- };
|
|
|
- }
|
|
|
-
|
|
|
- function tokenComment(stream, state) {
|
|
|
- var maybeEnd = false, ch;
|
|
|
-
|
|
|
- while (ch = stream.next()) {
|
|
|
- if (ch == ")" && maybeEnd) {
|
|
|
- state.tokenize = null;
|
|
|
- break;
|
|
|
- }
|
|
|
- maybeEnd = (ch == "*");
|
|
|
- }
|
|
|
- return "comment";
|
|
|
- }
|
|
|
-
|
|
|
- // Interface
|
|
|
-
|
|
|
- return {
|
|
|
- startState: function() {
|
|
|
- return {tokenize: null};
|
|
|
- },
|
|
|
-
|
|
|
- token: function(stream, state) {
|
|
|
- if (stream.eatSpace()) return null;
|
|
|
-
|
|
|
- var style = (state.tokenize || tokenBase)(stream, state);
|
|
|
-
|
|
|
- if (style == "comment" || style == "meta") return style;
|
|
|
-
|
|
|
- return style;
|
|
|
- },
|
|
|
-
|
|
|
- electricChars: "{}"
|
|
|
- };
|
|
|
- });
|
|
|
-
|
|
|
- CodeMirror.defineMIME("text/x-oberon07", "oberon07");
|
|
|
-
|
|
|
- /** Wrapper for CodeMirror Editor */
|
|
|
- Y.namespace('UI.Code').Editor = Y.Base.create('editorCodeUI', Y.View, {
|
|
|
- render: function (srcNode) {
|
|
|
- var editor,
|
|
|
- node = srcNode instanceof Y.Node ? srcNode : Y.one(srcNode);
|
|
|
-
|
|
|
- if (node) {
|
|
|
- editor = CodeMirror.fromTextArea(node._node, {
|
|
|
- lineNumbers: true,
|
|
|
- mode: 'text/x-oberon07'
|
|
|
- });
|
|
|
- }
|
|
|
- }
|
|
|
- }, {});
|
|
|
-
|
|
|
-}, '1.0', {
|
|
|
- requires: [
|
|
|
- 'view'
|
|
|
- ]
|
|
|
-});
|