3c2688e4b9137acb04affdd5e0c154fa.js 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391
  1. ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict";
  2. var oop = require("../lib/oop");
  3. var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
  4. var DocCommentHighlightRules = function () {
  5. this.$rules = {
  6. "start": [
  7. {
  8. token: "comment.doc.tag",
  9. regex: "@\\w+(?=\\s|$)"
  10. }, DocCommentHighlightRules.getTagRule(), {
  11. defaultToken: "comment.doc.body",
  12. caseInsensitive: true
  13. }
  14. ]
  15. };
  16. };
  17. oop.inherits(DocCommentHighlightRules, TextHighlightRules);
  18. DocCommentHighlightRules.getTagRule = function (start) {
  19. return {
  20. token: "comment.doc.tag.storage.type",
  21. regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b"
  22. };
  23. };
  24. DocCommentHighlightRules.getStartRule = function (start) {
  25. return {
  26. token: "comment.doc", // doc comment
  27. regex: /\/\*\*(?!\/)/,
  28. next: start
  29. };
  30. };
  31. DocCommentHighlightRules.getEndRule = function (start) {
  32. return {
  33. token: "comment.doc", // closing comment
  34. regex: "\\*\\/",
  35. next: start
  36. };
  37. };
  38. exports.DocCommentHighlightRules = DocCommentHighlightRules;
  39. });
  40. ace.define("ace/mode/sqlserver_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict";
  41. var oop = require("../lib/oop");
  42. var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules;
  43. var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
  44. var SqlServerHighlightRules = function () {
  45. var logicalOperators = "ALL|AND|ANY|BETWEEN|EXISTS|IN|LIKE|NOT|OR|SOME";
  46. logicalOperators += "|NULL|IS|APPLY|INNER|OUTER|LEFT|RIGHT|JOIN|CROSS"; //SSMS colors these gray too
  47. var builtinFunctions = (
  48. "OPENDATASOURCE|OPENQUERY|OPENROWSET|OPENXML|" +
  49. "AVG|CHECKSUM_AGG|COUNT|COUNT_BIG|GROUPING|GROUPING_ID|MAX|MIN|STDEV|STDEVP|SUM|VAR|VARP|" +
  50. "DENSE_RANK|NTILE|RANK|ROW_NUMBER" +
  51. "@@DATEFIRST|@@DBTS|@@LANGID|@@LANGUAGE|@@LOCK_TIMEOUT|@@MAX_CONNECTIONS|@@MAX_PRECISION|@@NESTLEVEL|@@OPTIONS|@@REMSERVER|@@SERVERNAME|@@SERVICENAME|@@SPID|@@TEXTSIZE|@@VERSION|" +
  52. "CAST|CONVERT|PARSE|TRY_CAST|TRY_CONVERT|TRY_PARSE" +
  53. "@@CURSOR_ROWS|@@FETCH_STATUS|CURSOR_STATUS|" +
  54. "@@DATEFIRST|@@LANGUAGE|CURRENT_TIMESTAMP|DATEADD|DATEDIFF|DATEFROMPARTS|DATENAME|DATEPART|DATETIME2FROMPARTS|DATETIMEFROMPARTS|DATETIMEOFFSETFROMPARTS|DAY|EOMONTH|GETDATE|GETUTCDATE|ISDATE|MONTH|SET DATEFIRST|SET DATEFORMAT|SET LANGUAGE|SMALLDATETIMEFROMPARTS|SP_HELPLANGUAGE|SWITCHOFFSET|SYSDATETIME|SYSDATETIMEOFFSET|SYSUTCDATETIME|TIMEFROMPARTS|TODATETIMEOFFSET|YEAR|DATETRUNC|" +
  55. "CHOOSE|IIF|" +
  56. "ABS|ACOS|ASIN|ATAN|ATN2|CEILING|COS|COT|DEGREES|EXP|FLOOR|LOG|LOG10|PI|POWER|RADIANS|RAND|ROUND|SIGN|SIN|SQRT|SQUARE|TAN|" +
  57. "@@PROCID|APPLOCK_MODE|APPLOCK_TEST|APP_NAME|ASSEMBLYPROPERTY|COLUMNPROPERTY|COL_LENGTH|COL_NAME|DATABASEPROPERTYEX|DATABASE_PRINCIPAL_ID|DB_ID|DB_NAME|FILEGROUPPROPERTY|FILEGROUP_ID|FILEGROUP_NAME|FILEPROPERTY|FILE_ID|FILE_IDEX|FILE_NAME|FULLTEXTCATALOGPROPERTY|FULLTEXTSERVICEPROPERTY|INDEXKEY_PROPERTY|INDEXPROPERTY|INDEX_COL|OBJECTPROPERTY|OBJECTPROPERTYEX|OBJECT_DEFINITION|OBJECT_ID|OBJECT_NAME|OBJECT_SCHEMA_NAME|ORIGINAL_DB_NAME|PARSENAME|SCHEMA_ID|SCHEMA_NAME|SCOPE_IDENTITY|SERVERPROPERTY|STATS_DATE|TYPEPROPERTY|TYPE_ID|TYPE_NAME|" +
  58. "CERTENCODED|CERTPRIVATEKEY|CURRENT_USER|DATABASE_PRINCIPAL_ID|HAS_PERMS_BY_NAME|IS_MEMBER|IS_ROLEMEMBER|IS_SRVROLEMEMBER|ORIGINAL_LOGIN|PERMISSIONS|PWDCOMPARE|PWDENCRYPT|SCHEMA_ID|SCHEMA_NAME|SESSION_USER|SUSER_ID|SUSER_NAME|SUSER_SID|SUSER_SNAME|SYS.FN_BUILTIN_PERMISSIONS|SYS.FN_GET_AUDIT_FILE|SYS.FN_MY_PERMISSIONS|SYSTEM_USER|USER_ID|USER_NAME|" +
  59. "ASCII|CHAR|CHARINDEX|CONCAT|DIFFERENCE|FORMAT|LEN|LOWER|LTRIM|NCHAR|PATINDEX|QUOTENAME|REPLACE|REPLICATE|REVERSE|RTRIM|SOUNDEX|SPACE|STR|STUFF|SUBSTRING|UNICODE|UPPER|" +
  60. "$PARTITION|@@ERROR|@@IDENTITY|@@PACK_RECEIVED|@@ROWCOUNT|@@TRANCOUNT|BINARY_CHECKSUM|CHECKSUM|CONNECTIONPROPERTY|CONTEXT_INFO|CURRENT_REQUEST_ID|ERROR_LINE|ERROR_MESSAGE|ERROR_NUMBER|ERROR_PROCEDURE|ERROR_SEVERITY|ERROR_STATE|FORMATMESSAGE|GETANSINULL|GET_FILESTREAM_TRANSACTION_CONTEXT|HOST_ID|HOST_NAME|ISNULL|ISNUMERIC|MIN_ACTIVE_ROWVERSION|NEWID|NEWSEQUENTIALID|ROWCOUNT_BIG|XACT_STATE|" +
  61. "@@CONNECTIONS|@@CPU_BUSY|@@IDLE|@@IO_BUSY|@@PACKET_ERRORS|@@PACK_RECEIVED|@@PACK_SENT|@@TIMETICKS|@@TOTAL_ERRORS|@@TOTAL_READ|@@TOTAL_WRITE|FN_VIRTUALFILESTATS|" +
  62. "PATINDEX|TEXTPTR|TEXTVALID|" +
  63. "GREATEST|LEAST|" +
  64. "GENERATE_SERIES|DATE_BUCKET|" +
  65. "JSON_ARRAY|JSON_OBJECT|JSON_PATH_EXISTS|ISJSON|" +
  66. "FIRST_VALUE|LAST_VALUE|" +
  67. "COALESCE|NULLIF");
  68. var dataTypes = ("BIGINT|BINARY|BIT|CHAR|CURSOR|DATE|DATETIME|DATETIME2|DATETIMEOFFSET|DECIMAL|FLOAT|HIERARCHYID|IMAGE|INTEGER|INT|MONEY|NCHAR|NTEXT|NUMERIC|NVARCHAR|REAL|SMALLDATETIME|SMALLINT|SMALLMONEY|SQL_VARIANT|TABLE|TEXT|TIME|TIMESTAMP|TINYINT|UNIQUEIDENTIFIER|VARBINARY|VARCHAR|XML");
  69. var builtInStoredProcedures = "sp_addextendedproc|sp_addextendedproperty|sp_addmessage|sp_addtype|sp_addumpdevice|sp_add_data_file_recover_suspect_db|sp_add_log_file_recover_suspect_db|sp_altermessage|sp_attach_db|sp_attach_single_file_db|sp_autostats|sp_bindefault|sp_bindrule|sp_bindsession|sp_certify_removable|sp_clean_db_file_free_space|sp_clean_db_free_space|sp_configure|sp_control_plan_guide|sp_createstats|sp_create_plan_guide|sp_create_plan_guide_from_handle|sp_create_removable|sp_cycle_errorlog|sp_datatype_info|sp_dbcmptlevel|sp_dbmmonitoraddmonitoring|sp_dbmmonitorchangealert|sp_dbmmonitorchangemonitoring|sp_dbmmonitordropalert|sp_dbmmonitordropmonitoring|sp_dbmmonitorhelpalert|sp_dbmmonitorhelpmonitoring|sp_dbmmonitorresults|sp_db_increased_partitions|sp_delete_backuphistory|sp_depends|sp_describe_first_result_set|sp_describe_undeclared_parameters|sp_detach_db|sp_dropdevice|sp_dropextendedproc|sp_dropextendedproperty|sp_dropmessage|sp_droptype|sp_execute|sp_executesql|sp_getapplock|sp_getbindtoken|sp_help|sp_helpconstraint|sp_helpdb|sp_helpdevice|sp_helpextendedproc|sp_helpfile|sp_helpfilegroup|sp_helpindex|sp_helplanguage|sp_helpserver|sp_helpsort|sp_helpstats|sp_helptext|sp_helptrigger|sp_indexoption|sp_invalidate_textptr|sp_lock|sp_monitor|sp_prepare|sp_prepexec|sp_prepexecrpc|sp_procoption|sp_recompile|sp_refreshview|sp_releaseapplock|sp_rename|sp_renamedb|sp_resetstatus|sp_sequence_get_range|sp_serveroption|sp_setnetname|sp_settriggerorder|sp_spaceused|sp_tableoption|sp_unbindefault|sp_unbindrule|sp_unprepare|sp_updateextendedproperty|sp_updatestats|sp_validname|sp_who|sys.sp_merge_xtp_checkpoint_files|sys.sp_xtp_bind_db_resource_pool|sys.sp_xtp_checkpoint_force_garbage_collection|sys.sp_xtp_control_proc_exec_stats|sys.sp_xtp_control_query_exec_stats|sys.sp_xtp_unbind_db_resource_pool";
  70. var keywords = "ABSOLUTE|ACTION|ADA|ADD|ADMIN|AFTER|AGGREGATE|ALIAS|ALL|ALLOCATE|ALTER|AND|ANY|ARE|ARRAY|AS|ASC|ASENSITIVE|ASSERTION|ASYMMETRIC|AT|ATOMIC|AUTHORIZATION|BACKUP|BEFORE|BEGIN|BETWEEN|BIT_LENGTH|BLOB|BOOLEAN|BOTH|BREADTH|BREAK|BROWSE|BULK|BY|CALL|CALLED|CARDINALITY|CASCADE|CASCADED|CASE|CATALOG|CHARACTER|CHARACTER_LENGTH|CHAR_LENGTH|CHECK|CHECKPOINT|CLASS|CLOB|CLOSE|CLUSTERED|COALESCE|COLLATE|COLLATION|COLLECT|COLUMN|COMMIT|COMPLETION|COMPUTE|CONDITION|CONNECT|CONNECTION|CONSTRAINT|CONSTRAINTS|CONSTRUCTOR|CONTAINS|CONTAINSTABLE|CONTINUE|CORR|CORRESPONDING|COVAR_POP|COVAR_SAMP|CREATE|CROSS|CUBE|CUME_DIST|CURRENT|CURRENT_CATALOG|CURRENT_DATE|CURRENT_DEFAULT_TRANSFORM_GROUP|CURRENT_PATH|CURRENT_ROLE|CURRENT_SCHEMA|CURRENT_TIME|CURRENT_TRANSFORM_GROUP_FOR_TYPE|CYCLE|DATA|DATABASE|DBCC|DEALLOCATE|DEC|DECLARE|DEFAULT|DEFERRABLE|DEFERRED|DELETE|DENY|DEPTH|DEREF|DESC|DESCRIBE|DESCRIPTOR|DESTROY|DESTRUCTOR|DETERMINISTIC|DIAGNOSTICS|DICTIONARY|DISCONNECT|DISK|DISTINCT|DISTRIBUTED|DOMAIN|DOUBLE|DROP|DUMP|DYNAMIC|EACH|ELEMENT|ELSE|END|END-EXEC|EQUALS|ERRLVL|ESCAPE|EVERY|EXCEPT|EXCEPTION|EXEC|EXECUTE|EXISTS|EXIT|EXTERNAL|EXTRACT|FETCH|FILE|FILLFACTOR|FILTER|FIRST|FOR|FOREIGN|FORTRAN|FOUND|FREE|FREETEXT|FREETEXTTABLE|FROM|FULL|FULLTEXTTABLE|FUNCTION|FUSION|GENERAL|GET|GLOBAL|GO|GOTO|GRANT|GROUP|HAVING|HOLD|HOLDLOCK|HOST|HOUR|IDENTITY|IDENTITYCOL|IDENTITY_INSERT|IF|IGNORE|IMMEDIATE|IN|INCLUDE|INDEX|INDICATOR|INITIALIZE|INITIALLY|INNER|INOUT|INPUT|INSENSITIVE|INSERT|INTEGER|INTERSECT|INTERSECTION|INTERVAL|INTO|IS|ISOLATION|ITERATE|JOIN|KEY|KILL|LANGUAGE|LARGE|LAST|LATERAL|LEADING|LESS|LEVEL|LIKE|LIKE_REGEX|LIMIT|LINENO|LN|LOAD|LOCAL|LOCALTIME|LOCALTIMESTAMP|LOCATOR|MAP|MATCH|MEMBER|MERGE|METHOD|MINUTE|MOD|MODIFIES|MODIFY|MODULE|MULTISET|NAMES|NATIONAL|NATURAL|NCLOB|NEW|NEXT|NO|NOCHECK|NONCLUSTERED|NONE|NORMALIZE|NOT|NULL|NULLIF|OBJECT|OCCURRENCES_REGEX|OCTET_LENGTH|OF|OFF|OFFSETS|OLD|ON|ONLY|OPEN|OPERATION|OPTION|OR|ORDER|ORDINALITY|OUT|OUTER|OUTPUT|OVER|OVERLAPS|OVERLAY|PAD|PARAMETER|PARAMETERS|PARTIAL|PARTITION|PASCAL|PATH|PERCENT|PERCENTILE_CONT|PERCENTILE_DISC|PERCENT_RANK|PIVOT|PLAN|POSITION|POSITION_REGEX|POSTFIX|PRECISION|PREFIX|PREORDER|PREPARE|PRESERVE|PRIMARY|PRINT|PRIOR|PRIVILEGES|PROC|PROCEDURE|PUBLIC|RAISERROR|RANGE|READ|READS|READTEXT|RECONFIGURE|RECURSIVE|REF|REFERENCES|REFERENCING|REGR_AVGX|REGR_AVGY|REGR_COUNT|REGR_INTERCEPT|REGR_R2|REGR_SLOPE|REGR_SXX|REGR_SXY|REGR_SYY|RELATIVE|RELEASE|REPLICATION|RESTORE|RESTRICT|RESULT|RETURN|RETURNS|REVERT|REVOKE|ROLE|ROLLBACK|ROLLUP|ROUTINE|ROW|ROWCOUNT|ROWGUIDCOL|ROWS|RULE|SAVE|SAVEPOINT|SCHEMA|SCOPE|SCROLL|SEARCH|SECOND|SECTION|SECURITYAUDIT|SELECT|SEMANTICKEYPHRASETABLE|SEMANTICSIMILARITYDETAILSTABLE|SEMANTICSIMILARITYTABLE|SENSITIVE|SEQUENCE|SESSION|SET|SETS|SETUSER|SHUTDOWN|SIMILAR|SIZE|SOME|SPECIFIC|SPECIFICTYPE|SQL|SQLCA|SQLCODE|SQLERROR|SQLEXCEPTION|SQLSTATE|SQLWARNING|START|STATE|STATEMENT|STATIC|STATISTICS|STDDEV_POP|STDDEV_SAMP|STRUCTURE|SUBMULTISET|SUBSTRING_REGEX|STRING_SPLIT|SYMMETRIC|SYSTEM|TABLESAMPLE|TEMPORARY|TERMINATE|TEXTSIZE|THAN|THEN|TIMEZONE_HOUR|TIMEZONE_MINUTE|TO|TOP|TRAILING|TRAN|TRANSACTION|TRANSLATE|TRANSLATE_REGEX|TRANSLATION|TREAT|TRIGGER|TRIM|TRUNCATE|TSEQUAL|UESCAPE|UNDER|UNION|UNIQUE|UNKNOWN|UNNEST|UNPIVOT|UPDATE|UPDATETEXT|USAGE|USE|USER|USING|VALUE|VALUES|VARIABLE|VARYING|VAR_POP|VAR_SAMP|VIEW|WAITFOR|WHEN|WHENEVER|WHERE|WHILE|WIDTH_BUCKET|WINDOW|WITH|WITHIN|WITHIN GROUP|WITHOUT|WORK|WRITE|WRITETEXT|XMLAGG|XMLATTRIBUTES|XMLBINARY|XMLCAST|XMLCOMMENT|XMLCONCAT|XMLDOCUMENT|XMLELEMENT|XMLEXISTS|XMLFOREST|XMLITERATE|XMLNAMESPACES|XMLPARSE|XMLPI|XMLQUERY|XMLSERIALIZE|XMLTABLE|XMLTEXT|XMLVALIDATE|ZONE";
  71. keywords += "|KEEPIDENTITY|KEEPDEFAULTS|IGNORE_CONSTRAINTS|IGNORE_TRIGGERS|XLOCK|FORCESCAN|FORCESEEK|HOLDLOCK|NOLOCK|NOWAIT|PAGLOCK|READCOMMITTED|READCOMMITTEDLOCK|READPAST|READUNCOMMITTED|REPEATABLEREAD|ROWLOCK|SERIALIZABLE|SNAPSHOT|SPATIAL_WINDOW_MAX_CELLS|TABLOCK|TABLOCKX|UPDLOCK|XLOCK|IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX|EXPAND|VIEWS|FAST|FORCE|KEEP|KEEPFIXED|MAXDOP|MAXRECURSION|OPTIMIZE|PARAMETERIZATION|SIMPLE|FORCED|RECOMPILE|ROBUST|PLAN|SPATIAL_WINDOW_MAX_CELLS|NOEXPAND|HINT";
  72. keywords += "|LOOP|HASH|MERGE|REMOTE";
  73. keywords += "|TRY|CATCH|THROW";
  74. keywords += "|TYPE";
  75. keywords = keywords.split('|');
  76. keywords = keywords.filter(function (value, index, self) {
  77. return logicalOperators.split('|').indexOf(value) === -1 && builtinFunctions.split('|').indexOf(value) === -1 && dataTypes.split('|').indexOf(value) === -1;
  78. });
  79. keywords = keywords.sort().join('|');
  80. var keywordMapper = this.createKeywordMapper({
  81. "constant.language": logicalOperators,
  82. "storage.type": dataTypes,
  83. "support.function": builtinFunctions,
  84. "support.storedprocedure": builtInStoredProcedures,
  85. "keyword": keywords
  86. }, "identifier", true);
  87. var setStatements = "SET ANSI_DEFAULTS|SET ANSI_NULLS|SET ANSI_NULL_DFLT_OFF|SET ANSI_NULL_DFLT_ON|SET ANSI_PADDING|SET ANSI_WARNINGS|SET ARITHABORT|SET ARITHIGNORE|SET CONCAT_NULL_YIELDS_NULL|SET CURSOR_CLOSE_ON_COMMIT|SET DATEFIRST|SET DATEFORMAT|SET DEADLOCK_PRIORITY|SET FIPS_FLAGGER|SET FMTONLY|SET FORCEPLAN|SET IDENTITY_INSERT|SET IMPLICIT_TRANSACTIONS|SET LANGUAGE|SET LOCK_TIMEOUT|SET NOCOUNT|SET NOEXEC|SET NUMERIC_ROUNDABORT|SET OFFSETS|SET PARSEONLY|SET QUERY_GOVERNOR_COST_LIMIT|SET QUOTED_IDENTIFIER|SET REMOTE_PROC_TRANSACTIONS|SET ROWCOUNT|SET SHOWPLAN_ALL|SET SHOWPLAN_TEXT|SET SHOWPLAN_XML|SET STATISTICS IO|SET STATISTICS PROFILE|SET STATISTICS TIME|SET STATISTICS XML|SET TEXTSIZE|SET XACT_ABORT".split('|');
  88. var isolationLevels = "READ UNCOMMITTED|READ COMMITTED|REPEATABLE READ|SNAPSHOP|SERIALIZABLE".split('|');
  89. for (var i = 0; i < isolationLevels.length; i++) {
  90. setStatements.push('SET TRANSACTION ISOLATION LEVEL ' + isolationLevels[i]);
  91. }
  92. this.$rules = {
  93. start: [{
  94. token: "string.start",
  95. regex: "'",
  96. next: [{
  97. token: "constant.language.escape",
  98. regex: /''/
  99. }, {
  100. token: "string.end",
  101. next: "start",
  102. regex: "'"
  103. }, {
  104. defaultToken: "string"
  105. }]
  106. },
  107. DocCommentHighlightRules.getStartRule("doc-start"), {
  108. token: "comment",
  109. regex: "--.*$"
  110. }, {
  111. token: "comment",
  112. start: "/\\*",
  113. end: "\\*/"
  114. }, {
  115. token: "constant.numeric", // float
  116. regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
  117. }, {
  118. token: keywordMapper,
  119. regex: "@{0,2}[a-zA-Z_$][a-zA-Z0-9_$]*\\b(?!])" //up to 2 @symbols for some built in functions
  120. }, {
  121. token: "constant.class",
  122. regex: "@@?[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
  123. }, {
  124. token: "keyword.operator",
  125. regex: "\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=|\\*"
  126. }, {
  127. token: "paren.lparen",
  128. regex: "[\\(]"
  129. }, {
  130. token: "paren.rparen",
  131. regex: "[\\)]"
  132. }, {
  133. token: "punctuation",
  134. regex: ",|;"
  135. }, {
  136. token: "text",
  137. regex: "\\s+"
  138. }],
  139. comment: [
  140. DocCommentHighlightRules.getTagRule(), {
  141. token: "comment",
  142. regex: "\\*\\/",
  143. next: "start"
  144. }, {
  145. defaultToken: "comment",
  146. caseInsensitive: true
  147. }
  148. ]
  149. };
  150. for (var i = 0; i < setStatements.length; i++) {
  151. this.$rules.start.unshift({
  152. token: "set.statement",
  153. regex: setStatements[i]
  154. });
  155. }
  156. this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]);
  157. this.normalizeRules();
  158. var completions = [];
  159. var addCompletions = function (arr, meta) {
  160. arr.forEach(function (v) {
  161. completions.push({
  162. name: v,
  163. value: v,
  164. score: 0,
  165. meta: meta
  166. });
  167. });
  168. };
  169. addCompletions(builtInStoredProcedures.split('|'), 'procedure');
  170. addCompletions(logicalOperators.split('|'), 'operator');
  171. addCompletions(builtinFunctions.split('|'), 'function');
  172. addCompletions(dataTypes.split('|'), 'type');
  173. addCompletions(setStatements, 'statement');
  174. addCompletions(keywords.split('|'), 'keyword');
  175. this.completions = completions;
  176. };
  177. oop.inherits(SqlServerHighlightRules, TextHighlightRules);
  178. exports.SqlHighlightRules = SqlServerHighlightRules;
  179. });
  180. ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict";
  181. var oop = require("../../lib/oop");
  182. var Range = require("../../range").Range;
  183. var BaseFoldMode = require("./fold_mode").FoldMode;
  184. var FoldMode = exports.FoldMode = function (commentRegex) {
  185. if (commentRegex) {
  186. this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start));
  187. this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end));
  188. }
  189. };
  190. oop.inherits(FoldMode, BaseFoldMode);
  191. (function () {
  192. this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/;
  193. this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/;
  194. this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/;
  195. this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/;
  196. this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/;
  197. this._getFoldWidgetBase = this.getFoldWidget;
  198. this.getFoldWidget = function (session, foldStyle, row) {
  199. var line = session.getLine(row);
  200. if (this.singleLineBlockCommentRe.test(line)) {
  201. if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))
  202. return "";
  203. }
  204. var fw = this._getFoldWidgetBase(session, foldStyle, row);
  205. if (!fw && this.startRegionRe.test(line))
  206. return "start"; // lineCommentRegionStart
  207. return fw;
  208. };
  209. this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {
  210. var line = session.getLine(row);
  211. if (this.startRegionRe.test(line))
  212. return this.getCommentRegionBlock(session, line, row);
  213. var match = line.match(this.foldingStartMarker);
  214. if (match) {
  215. var i = match.index;
  216. if (match[1])
  217. return this.openingBracketBlock(session, match[1], row, i);
  218. var range = session.getCommentFoldRange(row, i + match[0].length, 1);
  219. if (range && !range.isMultiLine()) {
  220. if (forceMultiline) {
  221. range = this.getSectionRange(session, row);
  222. }
  223. else if (foldStyle != "all")
  224. range = null;
  225. }
  226. return range;
  227. }
  228. if (foldStyle === "markbegin")
  229. return;
  230. var match = line.match(this.foldingStopMarker);
  231. if (match) {
  232. var i = match.index + match[0].length;
  233. if (match[1])
  234. return this.closingBracketBlock(session, match[1], row, i);
  235. return session.getCommentFoldRange(row, i, -1);
  236. }
  237. };
  238. this.getSectionRange = function (session, row) {
  239. var line = session.getLine(row);
  240. var startIndent = line.search(/\S/);
  241. var startRow = row;
  242. var startColumn = line.length;
  243. row = row + 1;
  244. var endRow = row;
  245. var maxRow = session.getLength();
  246. while (++row < maxRow) {
  247. line = session.getLine(row);
  248. var indent = line.search(/\S/);
  249. if (indent === -1)
  250. continue;
  251. if (startIndent > indent)
  252. break;
  253. var subRange = this.getFoldWidgetRange(session, "all", row);
  254. if (subRange) {
  255. if (subRange.start.row <= startRow) {
  256. break;
  257. }
  258. else if (subRange.isMultiLine()) {
  259. row = subRange.end.row;
  260. }
  261. else if (startIndent == indent) {
  262. break;
  263. }
  264. }
  265. endRow = row;
  266. }
  267. return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);
  268. };
  269. this.getCommentRegionBlock = function (session, line, row) {
  270. var startColumn = line.search(/\s*$/);
  271. var maxRow = session.getLength();
  272. var startRow = row;
  273. var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/;
  274. var depth = 1;
  275. while (++row < maxRow) {
  276. line = session.getLine(row);
  277. var m = re.exec(line);
  278. if (!m)
  279. continue;
  280. if (m[1])
  281. depth--;
  282. else
  283. depth++;
  284. if (!depth)
  285. break;
  286. }
  287. var endRow = row;
  288. if (endRow > startRow) {
  289. return new Range(startRow, startColumn, endRow, line.length);
  290. }
  291. };
  292. }).call(FoldMode.prototype);
  293. });
  294. ace.define("ace/mode/folding/sqlserver",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/cstyle"], function(require, exports, module){"use strict";
  295. var oop = require("../../lib/oop");
  296. var Range = require("../../range").Range;
  297. var BaseFoldMode = require("./cstyle").FoldMode;
  298. var FoldMode = exports.FoldMode = function () { };
  299. oop.inherits(FoldMode, BaseFoldMode);
  300. (function () {
  301. this.foldingStartMarker = /(\bCASE\b|\bBEGIN\b)|^\s*(\/\*)/i;
  302. this.startRegionRe = /^\s*(\/\*|--)#?region\b/;
  303. this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {
  304. var line = session.getLine(row);
  305. if (this.startRegionRe.test(line))
  306. return this.getCommentRegionBlock(session, line, row);
  307. var match = line.match(this.foldingStartMarker);
  308. if (match) {
  309. var i = match.index;
  310. if (match[1])
  311. return this.getBeginEndBlock(session, row, i, match[1]);
  312. var range = session.getCommentFoldRange(row, i + match[0].length, 1);
  313. if (range && !range.isMultiLine()) {
  314. if (forceMultiline) {
  315. range = this.getSectionRange(session, row);
  316. }
  317. else if (foldStyle != "all")
  318. range = null;
  319. }
  320. return range;
  321. }
  322. if (foldStyle === "markbegin")
  323. return;
  324. return;
  325. };
  326. this.getBeginEndBlock = function (session, row, column, matchSequence) {
  327. var start = {
  328. row: row,
  329. column: column + matchSequence.length
  330. };
  331. var maxRow = session.getLength();
  332. var line;
  333. var depth = 1;
  334. var re = /(\bCASE\b|\bBEGIN\b)|(\bEND\b)/i;
  335. while (++row < maxRow) {
  336. line = session.getLine(row);
  337. var m = re.exec(line);
  338. if (!m)
  339. continue;
  340. if (m[1])
  341. depth++;
  342. else
  343. depth--;
  344. if (!depth)
  345. break;
  346. }
  347. var endRow = row;
  348. if (endRow > start.row) {
  349. return new Range(start.row, start.column, endRow, line.length);
  350. }
  351. };
  352. }).call(FoldMode.prototype);
  353. });
  354. ace.define("ace/mode/sqlserver",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sqlserver_highlight_rules","ace/mode/folding/sqlserver"], function(require, exports, module){"use strict";
  355. var oop = require("../lib/oop");
  356. var TextMode = require("./text").Mode;
  357. var SqlServerHighlightRules = require("./sqlserver_highlight_rules").SqlHighlightRules;
  358. var SqlServerFoldMode = require("./folding/sqlserver").FoldMode;
  359. var Mode = function () {
  360. this.HighlightRules = SqlServerHighlightRules;
  361. this.foldingRules = new SqlServerFoldMode();
  362. this.$behaviour = this.$defaultBehaviour;
  363. };
  364. oop.inherits(Mode, TextMode);
  365. (function () {
  366. this.lineCommentStart = "--";
  367. this.blockComment = { start: "/*", end: "*/" };
  368. this.getCompletions = function (state, session, pos, prefix) {
  369. return session.$mode.$highlightRules.completions;
  370. };
  371. this.$id = "ace/mode/sqlserver";
  372. this.snippetFileId = "ace/snippets/sqlserver";
  373. }).call(Mode.prototype);
  374. exports.Mode = Mode;
  375. }); (function() {
  376. ace.require(["ace/mode/sqlserver"], function(m) {
  377. if (typeof module == "object" && typeof exports == "object" && module) {
  378. module.exports = m;
  379. }
  380. });
  381. })();