corrade-nucleus-nucleons – Blame information for rev 20

Subversion Repositories:
Rev:
Rev Author Line No. Line
20 office 1 ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) {
2 "use strict";
3  
4 var oop = require("../lib/oop");
5 var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
6  
7 var DocCommentHighlightRules = function() {
8 this.$rules = {
9 "start" : [ {
10 token : "comment.doc.tag",
11 regex : "@[\\w\\d_]+" // TODO: fix email addresses
12 },
13 DocCommentHighlightRules.getTagRule(),
14 {
15 defaultToken : "comment.doc",
16 caseInsensitive: true
17 }]
18 };
19 };
20  
21 oop.inherits(DocCommentHighlightRules, TextHighlightRules);
22  
23 DocCommentHighlightRules.getTagRule = function(start) {
24 return {
25 token : "comment.doc.tag.storage.type",
26 regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b"
27 };
28 }
29  
30 DocCommentHighlightRules.getStartRule = function(start) {
31 return {
32 token : "comment.doc", // doc comment
33 regex : "\\/\\*(?=\\*)",
34 next : start
35 };
36 };
37  
38 DocCommentHighlightRules.getEndRule = function (start) {
39 return {
40 token : "comment.doc", // closing comment
41 regex : "\\*\\/",
42 next : start
43 };
44 };
45  
46  
47 exports.DocCommentHighlightRules = DocCommentHighlightRules;
48  
49 });
50  
51 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) {
52 "use strict";
53  
54 var oop = require("../lib/oop");
55 var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules;
56 var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
57  
58 var SqlServerHighlightRules = function() {
59 var logicalOperators = "ALL|AND|ANY|BETWEEN|EXISTS|IN|LIKE|NOT|OR|SOME";
60 logicalOperators += "|NULL|IS|APPLY|INNER|OUTER|LEFT|RIGHT|JOIN|CROSS"; //SSMS colors these gray too
61  
62  
63 var builtinFunctions = (
64 "OPENDATASOURCE|OPENQUERY|OPENROWSET|OPENXML|" +
65 "AVG|CHECKSUM_AGG|COUNT|COUNT_BIG|GROUPING|GROUPING_ID|MAX|MIN|STDEV|STDEVP|SUM|VAR|VARP|" +
66 "DENSE_RANK|NTILE|RANK|ROW_NUMBER" +
67 "@@DATEFIRST|@@DBTS|@@LANGID|@@LANGUAGE|@@LOCK_TIMEOUT|@@MAX_CONNECTIONS|@@MAX_PRECISION|@@NESTLEVEL|@@OPTIONS|@@REMSERVER|@@SERVERNAME|@@SERVICENAME|@@SPID|@@TEXTSIZE|@@VERSION|" +
68 "CAST|CONVERT|PARSE|TRY_CAST|TRY_CONVERT|TRY_PARSE" +
69 "@@CURSOR_ROWS|@@FETCH_STATUS|CURSOR_STATUS|" +
70 "@@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|" +
71 "CHOOSE|IIF|" +
72 "ABS|ACOS|ASIN|ATAN|ATN2|CEILING|COS|COT|DEGREES|EXP|FLOOR|LOG|LOG10|PI|POWER|RADIANS|RAND|ROUND|SIGN|SIN|SQRT|SQUARE|TAN|" +
73 "@@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|" +
74 "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|" +
75 "ASCII|CHAR|CHARINDEX|CONCAT|DIFFERENCE|FORMAT|LEN|LOWER|LTRIM|NCHAR|PATINDEX|QUOTENAME|REPLACE|REPLICATE|REVERSE|RTRIM|SOUNDEX|SPACE|STR|STUFF|SUBSTRING|UNICODE|UPPER|" +
76 "$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|" +
77 "@@CONNECTIONS|@@CPU_BUSY|@@IDLE|@@IO_BUSY|@@PACKET_ERRORS|@@PACK_RECEIVED|@@PACK_SENT|@@TIMETICKS|@@TOTAL_ERRORS|@@TOTAL_READ|@@TOTAL_WRITE|FN_VIRTUALFILESTATS|" +
78 "PATINDEX|TEXTPTR|TEXTVALID|" +
79 "COALESCE|NULLIF"
80 );
81 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");
82 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";
83 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|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";
84 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";
85 keywords += "|LOOP|HASH|MERGE|REMOTE";
86 keywords += "|TRY|CATCH|THROW";
87 keywords += "|TYPE";
88 keywords = keywords.split('|');
89 keywords = keywords.filter(function(value, index, self) {
90 return logicalOperators.split('|').indexOf(value) === -1 && builtinFunctions.split('|').indexOf(value) === -1 && dataTypes.split('|').indexOf(value) === -1;
91 });
92 keywords = keywords.sort().join('|');
93  
94  
95 var keywordMapper = this.createKeywordMapper({
96 "constant.language": logicalOperators,
97 "storage.type": dataTypes,
98 "support.function": builtinFunctions,
99 "support.storedprocedure": builtInStoredProcedures,
100 "keyword": keywords
101 }, "identifier", true);
102 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('|');
103 var isolationLevels = "READ UNCOMMITTED|READ COMMITTED|REPEATABLE READ|SNAPSHOP|SERIALIZABLE".split('|');
104 for (var i = 0; i < isolationLevels.length; i++) {
105 setStatements.push('SET TRANSACTION ISOLATION LEVEL ' + isolationLevels[i]);
106 }
107  
108  
109 this.$rules = {
110 start: [{
111 token: "string.start",
112 regex: "'",
113 next: [{
114 token: "constant.language.escape",
115 regex: /''/
116 }, {
117 token: "string.end",
118 next: "start",
119 regex: "'"
120 }, {
121 defaultToken: "string"
122 }]
123 },
124 DocCommentHighlightRules.getStartRule("doc-start"), {
125 token: "comment",
126 regex: "--.*$"
127 }, {
128 token: "comment",
129 start: "/\\*",
130 end: "\\*/"
131 }, {
132 token: "constant.numeric", // float
133 regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
134 }, {
135 token: keywordMapper,
136 regex: "@{0,2}[a-zA-Z_$][a-zA-Z0-9_$]*\\b(?!])" //up to 2 @symbols for some built in functions
137 }, {
138 token: "constant.class",
139 regex: "@@?[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
140 }, {
141 token: "keyword.operator",
142 regex: "\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=|\\*"
143 }, {
144 token: "paren.lparen",
145 regex: "[\\(]"
146 }, {
147 token: "paren.rparen",
148 regex: "[\\)]"
149 }, {
150 token: "punctuation",
151 regex: ",|;"
152 }, {
153 token: "text",
154 regex: "\\s+"
155 }],
156 comment: [
157 DocCommentHighlightRules.getTagRule(), {
158 token: "comment",
159 regex: "\\*\\/",
160 next: "no_regex"
161 }, {
162 defaultToken: "comment",
163 caseInsensitive: true
164 }]
165 };
166 for (var i = 0; i < setStatements.length; i++) {
167 this.$rules.start.unshift({
168 token: "set.statement",
169 regex: setStatements[i]
170 });
171 }
172  
173 this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]);
174 this.normalizeRules();
175 var completions = [];
176 var addCompletions = function(arr, meta) {
177 arr.forEach(function(v) {
178 completions.push({
179 name: v,
180 value: v,
181 score: 0,
182 meta: meta
183 });
184 });
185 };
186 addCompletions(builtInStoredProcedures.split('|'), 'procedure');
187 addCompletions(logicalOperators.split('|'), 'operator');
188 addCompletions(builtinFunctions.split('|'), 'function');
189 addCompletions(dataTypes.split('|'), 'type');
190 addCompletions(setStatements, 'statement');
191 addCompletions(keywords.split('|'), 'keyword');
192  
193 this.completions = completions;
194 };
195  
196 oop.inherits(SqlServerHighlightRules, TextHighlightRules);
197  
198 exports.SqlHighlightRules = SqlServerHighlightRules;
199 });
200  
201 ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) {
202 "use strict";
203  
204 var oop = require("../../lib/oop");
205 var Range = require("../../range").Range;
206 var BaseFoldMode = require("./fold_mode").FoldMode;
207  
208 var FoldMode = exports.FoldMode = function(commentRegex) {
209 if (commentRegex) {
210 this.foldingStartMarker = new RegExp(
211 this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)
212 );
213 this.foldingStopMarker = new RegExp(
214 this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)
215 );
216 }
217 };
218 oop.inherits(FoldMode, BaseFoldMode);
219  
220 (function() {
221  
222 this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/;
223 this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/;
224 this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/;
225 this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/;
226 this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/;
227 this._getFoldWidgetBase = this.getFoldWidget;
228 this.getFoldWidget = function(session, foldStyle, row) {
229 var line = session.getLine(row);
230  
231 if (this.singleLineBlockCommentRe.test(line)) {
232 if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))
233 return "";
234 }
235  
236 var fw = this._getFoldWidgetBase(session, foldStyle, row);
237  
238 if (!fw && this.startRegionRe.test(line))
239 return "start"; // lineCommentRegionStart
240  
241 return fw;
242 };
243  
244 this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {
245 var line = session.getLine(row);
246  
247 if (this.startRegionRe.test(line))
248 return this.getCommentRegionBlock(session, line, row);
249  
250 var match = line.match(this.foldingStartMarker);
251 if (match) {
252 var i = match.index;
253  
254 if (match[1])
255 return this.openingBracketBlock(session, match[1], row, i);
256  
257 var range = session.getCommentFoldRange(row, i + match[0].length, 1);
258  
259 if (range && !range.isMultiLine()) {
260 if (forceMultiline) {
261 range = this.getSectionRange(session, row);
262 } else if (foldStyle != "all")
263 range = null;
264 }
265  
266 return range;
267 }
268  
269 if (foldStyle === "markbegin")
270 return;
271  
272 var match = line.match(this.foldingStopMarker);
273 if (match) {
274 var i = match.index + match[0].length;
275  
276 if (match[1])
277 return this.closingBracketBlock(session, match[1], row, i);
278  
279 return session.getCommentFoldRange(row, i, -1);
280 }
281 };
282  
283 this.getSectionRange = function(session, row) {
284 var line = session.getLine(row);
285 var startIndent = line.search(/\S/);
286 var startRow = row;
287 var startColumn = line.length;
288 row = row + 1;
289 var endRow = row;
290 var maxRow = session.getLength();
291 while (++row < maxRow) {
292 line = session.getLine(row);
293 var indent = line.search(/\S/);
294 if (indent === -1)
295 continue;
296 if (startIndent > indent)
297 break;
298 var subRange = this.getFoldWidgetRange(session, "all", row);
299  
300 if (subRange) {
301 if (subRange.start.row <= startRow) {
302 break;
303 } else if (subRange.isMultiLine()) {
304 row = subRange.end.row;
305 } else if (startIndent == indent) {
306 break;
307 }
308 }
309 endRow = row;
310 }
311  
312 return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);
313 };
314 this.getCommentRegionBlock = function(session, line, row) {
315 var startColumn = line.search(/\s*$/);
316 var maxRow = session.getLength();
317 var startRow = row;
318  
319 var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/;
320 var depth = 1;
321 while (++row < maxRow) {
322 line = session.getLine(row);
323 var m = re.exec(line);
324 if (!m) continue;
325 if (m[1]) depth--;
326 else depth++;
327  
328 if (!depth) break;
329 }
330  
331 var endRow = row;
332 if (endRow > startRow) {
333 return new Range(startRow, startColumn, endRow, line.length);
334 }
335 };
336  
337 }).call(FoldMode.prototype);
338  
339 });
340  
341 ace.define("ace/mode/folding/sqlserver",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/cstyle"], function(require, exports, module) {
342 "use strict";
343  
344 var oop = require("../../lib/oop");
345 var Range = require("../../range").Range;
346 var BaseFoldMode = require("./cstyle").FoldMode;
347  
348 var FoldMode = exports.FoldMode = function() {};
349  
350 oop.inherits(FoldMode, BaseFoldMode);
351  
352 (function() {
353  
354 this.foldingStartMarker = /(\bCASE\b|\bBEGIN\b)|^\s*(\/\*)/i;
355 this.startRegionRe = /^\s*(\/\*|--)#?region\b/;
356  
357 this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {
358 var line = session.getLine(row);
359  
360 if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row);
361  
362 var match = line.match(this.foldingStartMarker);
363 if (match) {
364 var i = match.index;
365 if (match[1]) return this.getBeginEndBlock(session, row, i, match[1]);
366  
367 var range = session.getCommentFoldRange(row, i + match[0].length, 1);
368 if (range && !range.isMultiLine()) {
369 if (forceMultiline) {
370 range = this.getSectionRange(session, row);
371 }
372 else if (foldStyle != "all") range = null;
373 }
374  
375 return range;
376 }
377  
378 if (foldStyle === "markbegin") return;
379 return;
380 };
381 this.getBeginEndBlock = function(session, row, column, matchSequence) {
382 var start = {
383 row: row,
384 column: column + matchSequence.length
385 };
386 var maxRow = session.getLength();
387 var line;
388  
389 var depth = 1;
390 var re = /(\bCASE\b|\bBEGIN\b)|(\bEND\b)/i;
391 while (++row < maxRow) {
392 line = session.getLine(row);
393 var m = re.exec(line);
394 if (!m) continue;
395 if (m[1]) depth++;
396 else depth--;
397  
398 if (!depth) break;
399 }
400 var endRow = row;
401 if (endRow > start.row) {
402 return new Range(start.row, start.column, endRow, line.length);
403 }
404 };
405  
406 }).call(FoldMode.prototype);
407  
408 });
409  
410 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) {
411 "use strict";
412  
413 var oop = require("../lib/oop");
414 var TextMode = require("./text").Mode;
415 var SqlServerHighlightRules = require("./sqlserver_highlight_rules").SqlHighlightRules;
416 var SqlServerFoldMode = require("./folding/sqlserver").FoldMode;
417  
418 var Mode = function() {
419 this.HighlightRules = SqlServerHighlightRules;
420 this.foldingRules = new SqlServerFoldMode();
421 this.$behaviour = this.$defaultBehaviour;
422 };
423 oop.inherits(Mode, TextMode);
424  
425 (function() {
426 this.lineCommentStart = "--";
427 this.blockComment = {start: "/*", end: "*/"};
428 this.getCompletions = function(state, session, pos, prefix) {
429 return session.$mode.$highlightRules.completions;
430 };
431  
432 this.$id = "ace/mode/sql";
433 }).call(Mode.prototype);
434  
435 exports.Mode = Mode;
436  
437 });