(function(mod){if("object"==typeof exports&&"object"==typeof module)mod(require("../../lib/codemirror"));else if("function"==typeof define&&define.amd)define(["../../lib/codemirror"],mod);else mod(CodeMirror)})(function(CodeMirror){"use strict";CodeMirror.defineMode("solr",function(){var isStringChar=/[^\s\|\!\+\-\*\?\~\^\&\:\(\)\[\]\{\}\"\\]/,isOperatorChar=/[\|\!\+\-\*\?\~\^\&]/,isOperatorString=/^(OR|AND|NOT|TO)$/i;function isNumber(word){return parseFloat(word).toString()===word}function tokenString(quote){return function(stream,state){var escaped=!1,next;while(null!=(next=stream.next())){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())&&null!=ch.match(isStringChar)){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")});