diff options
Diffstat (limited to 'codemirror_ui/lib/CodeMirror-2.3/mode/pascal')
| -rw-r--r-- | codemirror_ui/lib/CodeMirror-2.3/mode/pascal/index.html | 48 | ||||
| -rw-r--r-- | codemirror_ui/lib/CodeMirror-2.3/mode/pascal/pascal.js | 94 | 
2 files changed, 142 insertions, 0 deletions
diff --git a/codemirror_ui/lib/CodeMirror-2.3/mode/pascal/index.html b/codemirror_ui/lib/CodeMirror-2.3/mode/pascal/index.html new file mode 100644 index 0000000..6af6b46 --- /dev/null +++ b/codemirror_ui/lib/CodeMirror-2.3/mode/pascal/index.html @@ -0,0 +1,48 @@ +<!doctype html> +<html> +  <head> +    <title>CodeMirror: Pascal mode</title> +    <link rel="stylesheet" href="../../lib/codemirror.css"> +    <script src="../../lib/codemirror.js"></script> +    <script src="pascal.js"></script> +    <link rel="stylesheet" href="../../doc/docs.css"> +    <style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style> +  </head> +  <body> +    <h1>CodeMirror: Pascal mode</h1> + +<div><textarea id="code" name="code"> +(* Example Pascal code *) + +while a <> b do writeln('Waiting'); +  +if a > b then  +  writeln('Condition met') +else  +  writeln('Condition not met'); +  +for i := 1 to 10 do  +  writeln('Iteration: ', i:1); +  +repeat +  a := a + 1 +until a = 10; +  +case i of +  0: write('zero'); +  1: write('one'); +  2: write('two') +end; +</textarea></div> + +    <script> +      var editor = CodeMirror.fromTextArea(document.getElementById("code"), { +        lineNumbers: true, +        matchBrackets: true, +        mode: "text/x-pascal" +      }); +    </script> + +    <p><strong>MIME types defined:</strong> <code>text/x-pascal</code>.</p> +  </body> +</html> diff --git a/codemirror_ui/lib/CodeMirror-2.3/mode/pascal/pascal.js b/codemirror_ui/lib/CodeMirror-2.3/mode/pascal/pascal.js new file mode 100644 index 0000000..9ac522f --- /dev/null +++ b/codemirror_ui/lib/CodeMirror-2.3/mode/pascal/pascal.js @@ -0,0 +1,94 @@ +CodeMirror.defineMode("pascal", function(config) { +  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("and array begin case const div do downto else end file for forward integer " + +                       "boolean char function goto if in label mod nil not of or packed procedure " + +                       "program record repeat set string then to type until var while with"); +  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 "word"; +  } + +  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(basecolumn) { +      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-pascal", "pascal");  | 
