diff options
Diffstat (limited to 'public/vendor/codemirror/mode/sparql')
| -rwxr-xr-x | public/vendor/codemirror/mode/sparql/index.html | 61 | ||||
| -rwxr-xr-x | public/vendor/codemirror/mode/sparql/sparql.js | 174 | 
2 files changed, 235 insertions, 0 deletions
diff --git a/public/vendor/codemirror/mode/sparql/index.html b/public/vendor/codemirror/mode/sparql/index.html new file mode 100755 index 00000000..84ef4d36 --- /dev/null +++ b/public/vendor/codemirror/mode/sparql/index.html @@ -0,0 +1,61 @@ +<!doctype html> + +<title>CodeMirror: SPARQL mode</title> +<meta charset="utf-8"/> +<link rel=stylesheet href="../../doc/docs.css"> + +<link rel="stylesheet" href="../../lib/codemirror.css"> +<script src="../../lib/codemirror.js"></script> +<script src="../../addon/edit/matchbrackets.js"></script> +<script src="sparql.js"></script> +<style>.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style> +<div id=nav> +  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> + +  <ul> +    <li><a href="../../index.html">Home</a> +    <li><a href="../../doc/manual.html">Manual</a> +    <li><a href="https://github.com/codemirror/codemirror">Code</a> +  </ul> +  <ul> +    <li><a href="../index.html">Language modes</a> +    <li><a class=active href="#">SPARQL</a> +  </ul> +</div> + +<article> +<h2>SPARQL mode</h2> +<form><textarea id="code" name="code"> +PREFIX a: <http://www.w3.org/2000/10/annotation-ns#> +PREFIX dc: <http://purl.org/dc/elements/1.1/> +PREFIX foaf: <http://xmlns.com/foaf/0.1/> +PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> + +# Comment! + +SELECT ?given ?family +WHERE { +  { +    ?annot a:annotates <http://www.w3.org/TR/rdf-sparql-query/> . +    ?annot dc:creator ?c . +    OPTIONAL {?c foaf:givenName ?given ; +                 foaf:familyName ?family } +  } UNION { +    ?c !foaf:knows/foaf:knows? ?thing. +    ?thing rdfs +  } MINUS { +    ?thing rdfs:label "剛柔流"@jp +  } +  FILTER isBlank(?c) +} +</textarea></form> +    <script> +      var editor = CodeMirror.fromTextArea(document.getElementById("code"), { +        mode: "application/sparql-query", +        matchBrackets: true +      }); +    </script> + +    <p><strong>MIME types defined:</strong> <code>application/sparql-query</code>.</p> + +  </article> diff --git a/public/vendor/codemirror/mode/sparql/sparql.js b/public/vendor/codemirror/mode/sparql/sparql.js new file mode 100755 index 00000000..bbf8a76a --- /dev/null +++ b/public/vendor/codemirror/mode/sparql/sparql.js @@ -0,0 +1,174 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://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"; + +CodeMirror.defineMode("sparql", function(config) { +  var indentUnit = config.indentUnit; +  var curPunc; + +  function wordRegexp(words) { +    return new RegExp("^(?:" + words.join("|") + ")$", "i"); +  } +  var ops = wordRegexp(["str", "lang", "langmatches", "datatype", "bound", "sameterm", "isiri", "isuri", +                        "iri", "uri", "bnode", "count", "sum", "min", "max", "avg", "sample", +                        "group_concat", "rand", "abs", "ceil", "floor", "round", "concat", "substr", "strlen", +                        "replace", "ucase", "lcase", "encode_for_uri", "contains", "strstarts", "strends", +                        "strbefore", "strafter", "year", "month", "day", "hours", "minutes", "seconds", +                        "timezone", "tz", "now", "uuid", "struuid", "md5", "sha1", "sha256", "sha384", +                        "sha512", "coalesce", "if", "strlang", "strdt", "isnumeric", "regex", "exists", +                        "isblank", "isliteral", "a"]); +  var keywords = wordRegexp(["base", "prefix", "select", "distinct", "reduced", "construct", "describe", +                             "ask", "from", "named", "where", "order", "limit", "offset", "filter", "optional", +                             "graph", "by", "asc", "desc", "as", "having", "undef", "values", "group", +                             "minus", "in", "not", "service", "silent", "using", "insert", "delete", "union", +                             "true", "false", "with", +                             "data", "copy", "to", "move", "add", "create", "drop", "clear", "load"]); +  var operatorChars = /[*+\-<>=&|\^\/!\?]/; + +  function tokenBase(stream, state) { +    var ch = stream.next(); +    curPunc = null; +    if (ch == "$" || ch == "?") { +      if(ch == "?" && stream.match(/\s/, false)){ +        return "operator"; +      } +      stream.match(/^[\w\d]*/); +      return "variable-2"; +    } +    else if (ch == "<" && !stream.match(/^[\s\u00a0=]/, false)) { +      stream.match(/^[^\s\u00a0>]*>?/); +      return "atom"; +    } +    else if (ch == "\"" || ch == "'") { +      state.tokenize = tokenLiteral(ch); +      return state.tokenize(stream, state); +    } +    else if (/[{}\(\),\.;\[\]]/.test(ch)) { +      curPunc = ch; +      return "bracket"; +    } +    else if (ch == "#") { +      stream.skipToEnd(); +      return "comment"; +    } +    else if (operatorChars.test(ch)) { +      stream.eatWhile(operatorChars); +      return "operator"; +    } +    else if (ch == ":") { +      stream.eatWhile(/[\w\d\._\-]/); +      return "atom"; +    } +    else if (ch == "@") { +      stream.eatWhile(/[a-z\d\-]/i); +      return "meta"; +    } +    else { +      stream.eatWhile(/[_\w\d]/); +      if (stream.eat(":")) { +        stream.eatWhile(/[\w\d_\-]/); +        return "atom"; +      } +      var word = stream.current(); +      if (ops.test(word)) +        return "builtin"; +      else if (keywords.test(word)) +        return "keyword"; +      else +        return "variable"; +    } +  } + +  function tokenLiteral(quote) { +    return function(stream, state) { +      var escaped = false, ch; +      while ((ch = stream.next()) != null) { +        if (ch == quote && !escaped) { +          state.tokenize = tokenBase; +          break; +        } +        escaped = !escaped && ch == "\\"; +      } +      return "string"; +    }; +  } + +  function pushContext(state, type, col) { +    state.context = {prev: state.context, indent: state.indent, col: col, type: type}; +  } +  function popContext(state) { +    state.indent = state.context.indent; +    state.context = state.context.prev; +  } + +  return { +    startState: function() { +      return {tokenize: tokenBase, +              context: null, +              indent: 0, +              col: 0}; +    }, + +    token: function(stream, state) { +      if (stream.sol()) { +        if (state.context && state.context.align == null) state.context.align = false; +        state.indent = stream.indentation(); +      } +      if (stream.eatSpace()) return null; +      var style = state.tokenize(stream, state); + +      if (style != "comment" && state.context && state.context.align == null && state.context.type != "pattern") { +        state.context.align = true; +      } + +      if (curPunc == "(") pushContext(state, ")", stream.column()); +      else if (curPunc == "[") pushContext(state, "]", stream.column()); +      else if (curPunc == "{") pushContext(state, "}", stream.column()); +      else if (/[\]\}\)]/.test(curPunc)) { +        while (state.context && state.context.type == "pattern") popContext(state); +        if (state.context && curPunc == state.context.type) popContext(state); +      } +      else if (curPunc == "." && state.context && state.context.type == "pattern") popContext(state); +      else if (/atom|string|variable/.test(style) && state.context) { +        if (/[\}\]]/.test(state.context.type)) +          pushContext(state, "pattern", stream.column()); +        else if (state.context.type == "pattern" && !state.context.align) { +          state.context.align = true; +          state.context.col = stream.column(); +        } +      } + +      return style; +    }, + +    indent: function(state, textAfter) { +      var firstChar = textAfter && textAfter.charAt(0); +      var context = state.context; +      if (/[\]\}]/.test(firstChar)) +        while (context && context.type == "pattern") context = context.prev; + +      var closing = context && firstChar == context.type; +      if (!context) +        return 0; +      else if (context.type == "pattern") +        return context.col; +      else if (context.align) +        return context.col + (closing ? 0 : 1); +      else +        return context.indent + (closing ? 0 : indentUnit); +    } +  }; +}); + +CodeMirror.defineMIME("application/sparql-query", "sparql"); + +});  | 
