You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2 lines
36 KiB

5 months ago
function s(a){var c=a.client||{},h=a.atoms||{false:!0,true:!0,null:!0},p=a.builtin||e(z),S=a.keywords||e(d),_=a.operatorChars||/^[*+\-%<>!=&|~^\/]/,o=a.support||{},y=a.hooks||{},C=a.dateSQL||{date:!0,time:!0,timestamp:!0},Q=a.backslashStringEscapes!==!1,j=a.brackets||/^[\{}\(\)\[\]]/,v=a.punctuation||/^[;.,:]/;function g(t,i){var r=t.next();if(y[r]){var n=y[r](t,i);if(n!==!1)return n}if(o.hexNumber&&(r=="0"&&t.match(/^[xX][0-9a-fA-F]+/)||(r=="x"||r=="X")&&t.match(/^'[0-9a-fA-F]*'/)))return"number";if(o.binaryNumber&&((r=="b"||r=="B")&&t.match(/^'[01]+'/)||r=="0"&&t.match(/^b[01]*/)))return"number";if(r.charCodeAt(0)>47&&r.charCodeAt(0)<58)return t.match(/^[0-9]*(\.[0-9]+)?([eE][-+]?[0-9]+)?/),o.decimallessFloat&&t.match(/^\.(?!\.)/),"number";if(r=="?"&&(t.eatSpace()||t.eol()||t.eat(";")))return"macroName";if(r=="'"||r=='"'&&o.doubleQuote)return i.tokenize=x(r),i.tokenize(t,i);if((o.nCharCast&&(r=="n"||r=="N")||o.charsetCast&&r=="_"&&t.match(/[a-z][a-z0-9]*/i))&&(t.peek()=="'"||t.peek()=='"'))return"keyword";if(o.escapeConstant&&(r=="e"||r=="E")&&(t.peek()=="'"||t.peek()=='"'&&o.doubleQuote))return i.tokenize=function(m,k){return(k.tokenize=x(m.next(),!0))(m,k)},"keyword";if(o.commentSlashSlash&&r=="/"&&t.eat("/"))return t.skipToEnd(),"comment";if(o.commentHash&&r=="#"||r=="-"&&t.eat("-")&&(!o.commentSpaceRequired||t.eat(" ")))return t.skipToEnd(),"comment";if(r=="/"&&t.eat("*"))return i.tokenize=b(1),i.tokenize(t,i);if(r=="."){if(o.zerolessFloat&&t.match(/^(?:\d+(?:e[+-]?\d+)?)/i))return"number";if(t.match(/^\.+/))return null;if(o.ODBCdotTable&&t.match(/^[\w\d_$#]+/))return"type"}else{if(_.test(r))return t.eatWhile(_),"operator";if(j.test(r))return"bracket";if(v.test(r))return t.eatWhile(v),"punctuation";if(r=="{"&&(t.match(/^( )*(d|D|t|T|ts|TS)( )*'[^']*'( )*}/)||t.match(/^( )*(d|D|t|T|ts|TS)( )*"[^"]*"( )*}/)))return"number";t.eatWhile(/^[_\w\d]/);var l=t.current().toLowerCase();return C.hasOwnProperty(l)&&(t.match(/^( )+'[^']*'/)||t.match(/^( )+"[^"]*"/))?"number":h.hasOwnProperty(l)?"atom":p.hasOwnProperty(l)?"type":S.hasOwnProperty(l)?"keyword":c.hasOwnProperty(l)?"builtin":null}}function x(t,i){return function(r,n){for(var l=!1,m;(m=r.next())!=null;){if(m==t&&!l){n.tokenize=g;break}l=(Q||i)&&!l&&m=="\\"}return"string"}}function b(t){return function(i,r){var n=i.match(/^.*?(\/\*|\*\/)/);return n?n[1]=="/*"?r.tokenize=b(t+1):t>1?r.tokenize=b(t-1):r.tokenize=g:i.skipToEnd(),"comment"}}function w(t,i,r){i.context={prev:i.context,indent:t.indentation(),col:t.column(),type:r}}function L(t){t.indent=t.context.indent,t.context=t.context.prev}return{name:"sql",startState:function(){return{tokenize:g,context:null}},token:function(t,i){if(t.sol()&&i.context&&i.context.align==null&&(i.context.align=!1),i.tokenize==g&&t.eatSpace())return null;var r=i.tokenize(t,i);if(r=="comment")return r;i.context&&i.context.align==null&&(i.context.align=!0);var n=t.current();return n=="("?w(t,i,")"):n=="["?w(t,i,"]"):i.context&&i.context.type==n&&L(i),r},indent:function(t,i,r){var n=t.context;if(!n)return null;var l=i.charAt(0)==n.type;return n.align?n.col+(l?0:1):n.indent+(l?0:r.unit)},languageData:{commentTokens:{line:o.commentSlashSlash?"//":o.commentHash?"#":"--",block:{open:"/*",close:"*/"}},closeBrackets:{brackets:["(","[","{","'",'"',"`"]}}}}function f(a){for(var c;(c=a.next())!=null;)if(c=="`"&&!a.eat("`"))return"string.special";return a.backUp(a.current().length-1),a.eatWhile(/\w/)?"string.special":null}function N(a){for(var c;(c=a.next())!=null;)if(c=='"'&&!a.eat('"'))return"string.special";return a.backUp(a.current().length-1),a.eatWhile(/\w/)?"string.special":null}function u(a){return a.eat("@")&&(a.match("session."),a.match("local."),a.match("global.")),a.eat("'")?(a.match(/^.*'/),"string.special"):a.eat('"')?(a.match(/^.*"/),"string.special"):a.eat("`")?(a.match(/^.*`/),"string.special"):a.match(/^[0-9a-zA-Z$\.\_]+/)?"string.special":null}function q(a){return a.eat("N")?"atom":a.match(/^[a-zA-Z.#!?]/)?"string.special":null}var d="alter and as asc between by count create delete desc distinct drop from group having in insert into