| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 | // CodeMirror, copyright (c) by Marijn Haverbeke and others// Distributed under an MIT license: https://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("solr", function() {  "use strict";  var isStringChar = /[^\s\|\!\+\-\*\?\~\^\&\:\(\)\[\]\{\}\"\\]/;  var isOperatorChar = /[\|\!\+\-\*\?\~\^\&]/;  var isOperatorString = /^(OR|AND|NOT|TO)$/i;  function isNumber(word) {    return parseFloat(word).toString() === word;  }  function tokenString(quote) {    return function(stream, state) {      var escaped = false, next;      while ((next = stream.next()) != null) {        if (next == quote && !escaped) break;        escaped = !escaped && next == "\\";      }      if (!escaped) state.tokenize = tokenBase;      return "string";    };  }  function tokenOperator(operator) {    return function(stream, state) {      var style = "operator";      if (operator == "+")        style += " positive";      else if (operator == "-")        style += " negative";      else if (operator == "|")        stream.eat(/\|/);      else if (operator == "&")        stream.eat(/\&/);      else if (operator == "^")        style += " boost";      state.tokenize = tokenBase;      return style;    };  }  function tokenWord(ch) {    return function(stream, state) {      var word = ch;      while ((ch = stream.peek()) && ch.match(isStringChar) != null) {        word += stream.next();      }      state.tokenize = tokenBase;      if (isOperatorString.test(word))        return "operator";      else if (isNumber(word))        return "number";      else if (stream.peek() == ":")        return "field";      else        return "string";    };  }  function tokenBase(stream, state) {    var ch = stream.next();    if (ch == '"')      state.tokenize = tokenString(ch);    else if (isOperatorChar.test(ch))      state.tokenize = tokenOperator(ch);    else if (isStringChar.test(ch))      state.tokenize = tokenWord(ch);    return (state.tokenize != tokenBase) ? state.tokenize(stream, state) : null;  }  return {    startState: function() {      return {        tokenize: tokenBase      };    },    token: function(stream, state) {      if (stream.eatSpace()) return null;      return state.tokenize(stream, state);    }  };});CodeMirror.defineMIME("text/x-solr", "solr");});
 |