1define("ace/mode/scss_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { 2"use strict"; 3 4var oop = require("../lib/oop"); 5var lang = require("../lib/lang"); 6var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; 7 8var ScssHighlightRules = function() { 9 10 var properties = lang.arrayToMap( (function () { 11 12 var browserPrefix = ("-webkit-|-moz-|-o-|-ms-|-svg-|-pie-|-khtml-").split("|"); 13 14 var prefixProperties = ("appearance|background-clip|background-inline-policy|background-origin|" + 15 "background-size|binding|border-bottom-colors|border-left-colors|" + 16 "border-right-colors|border-top-colors|border-end|border-end-color|" + 17 "border-end-style|border-end-width|border-image|border-start|" + 18 "border-start-color|border-start-style|border-start-width|box-align|" + 19 "box-direction|box-flex|box-flexgroup|box-ordinal-group|box-orient|" + 20 "box-pack|box-sizing|column-count|column-gap|column-width|column-rule|" + 21 "column-rule-width|column-rule-style|column-rule-color|float-edge|" + 22 "font-feature-settings|font-language-override|force-broken-image-icon|" + 23 "image-region|margin-end|margin-start|opacity|outline|outline-color|" + 24 "outline-offset|outline-radius|outline-radius-bottomleft|" + 25 "outline-radius-bottomright|outline-radius-topleft|outline-radius-topright|" + 26 "outline-style|outline-width|padding-end|padding-start|stack-sizing|" + 27 "tab-size|text-blink|text-decoration-color|text-decoration-line|" + 28 "text-decoration-style|transform|transform-origin|transition|" + 29 "transition-delay|transition-duration|transition-property|" + 30 "transition-timing-function|user-focus|user-input|user-modify|user-select|" + 31 "window-shadow|border-radius").split("|"); 32 33 var properties = ("azimuth|background-attachment|background-color|background-image|" + 34 "background-position|background-repeat|background|border-bottom-color|" + 35 "border-bottom-style|border-bottom-width|border-bottom|border-collapse|" + 36 "border-color|border-left-color|border-left-style|border-left-width|" + 37 "border-left|border-right-color|border-right-style|border-right-width|" + 38 "border-right|border-spacing|border-style|border-top-color|" + 39 "border-top-style|border-top-width|border-top|border-width|border|bottom|" + 40 "box-shadow|box-sizing|caption-side|clear|clip|color|content|counter-increment|" + 41 "counter-reset|cue-after|cue-before|cue|cursor|direction|display|" + 42 "elevation|empty-cells|float|font-family|font-size-adjust|font-size|" + 43 "font-stretch|font-style|font-variant|font-weight|font|height|left|" + 44 "letter-spacing|line-height|list-style-image|list-style-position|" + 45 "list-style-type|list-style|margin-bottom|margin-left|margin-right|" + 46 "margin-top|marker-offset|margin|marks|max-height|max-width|min-height|" + 47 "min-width|opacity|orphans|outline-color|" + 48 "outline-style|outline-width|outline|overflow|overflow-x|overflow-y|padding-bottom|" + 49 "padding-left|padding-right|padding-top|padding|page-break-after|" + 50 "page-break-before|page-break-inside|page|pause-after|pause-before|" + 51 "pause|pitch-range|pitch|play-during|position|quotes|richness|right|" + 52 "size|speak-header|speak-numeral|speak-punctuation|speech-rate|speak|" + 53 "stress|table-layout|text-align|text-decoration|text-indent|" + 54 "text-shadow|text-transform|top|unicode-bidi|vertical-align|" + 55 "visibility|voice-family|volume|white-space|widows|width|word-spacing|" + 56 "z-index").split("|"); 57 var ret = []; 58 for (var i=0, ln=browserPrefix.length; i<ln; i++) { 59 Array.prototype.push.apply( 60 ret, 61 (( browserPrefix[i] + prefixProperties.join("|" + browserPrefix[i]) ).split("|")) 62 ); 63 } 64 Array.prototype.push.apply(ret, prefixProperties); 65 Array.prototype.push.apply(ret, properties); 66 67 return ret; 68 69 })() ); 70 71 72 73 var functions = lang.arrayToMap( 74 ("hsl|hsla|rgb|rgba|url|attr|counter|counters|abs|adjust_color|adjust_hue|" + 75 "alpha|join|blue|ceil|change_color|comparable|complement|darken|desaturate|" + 76 "floor|grayscale|green|hue|if|invert|join|length|lighten|lightness|mix|" + 77 "nth|opacify|opacity|percentage|quote|red|round|saturate|saturation|" + 78 "scale_color|transparentize|type_of|unit|unitless|unquote").split("|") 79 ); 80 81 var constants = lang.arrayToMap( 82 ("absolute|all-scroll|always|armenian|auto|baseline|below|bidi-override|" + 83 "block|bold|bolder|border-box|both|bottom|break-all|break-word|capitalize|center|" + 84 "char|circle|cjk-ideographic|col-resize|collapse|content-box|crosshair|dashed|" + 85 "decimal-leading-zero|decimal|default|disabled|disc|" + 86 "distribute-all-lines|distribute-letter|distribute-space|" + 87 "distribute|dotted|double|e-resize|ellipsis|fixed|georgian|groove|" + 88 "hand|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|" + 89 "ideograph-alpha|ideograph-numeric|ideograph-parenthesis|" + 90 "ideograph-space|inactive|inherit|inline-block|inline|inset|inside|" + 91 "inter-ideograph|inter-word|italic|justify|katakana-iroha|katakana|" + 92 "keep-all|left|lighter|line-edge|line-through|line|list-item|loose|" +
93 "lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|" + 94 "medium|middle|move|n-resize|ne-resize|newspaper|no-drop|no-repeat|" + 95 "nw-resize|none|normal|not-allowed|nowrap|oblique|outset|outside|" + 96 "overline|pointer|progress|relative|repeat-x|repeat-y|repeat|right|" + 97 "ridge|row-resize|rtl|s-resize|scroll|se-resize|separate|small-caps|" + 98 "solid|square|static|strict|super|sw-resize|table-footer-group|" + 99 "table-header-group|tb-rl|text-bottom|text-top|text|thick|thin|top|" + 100 "transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|" + 101 "vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|" + 102 "zero").split("|") 103 ); 104 105 var colors = lang.arrayToMap( 106 ("aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|" + 107 "blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|" + 108 "chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|" + 109 "darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|" + 110 "darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|" + 111 "darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|" + 112 "darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|" + 113 "dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|" + 114 "ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|" + 115 "hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|" + 116 "lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|" + 117 "lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|" + 118 "lightsalmon|lightseagreen|lightskyblue|lightslategray|" + 119 "lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|" + 120 "magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|" + 121 "mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|" + 122 "mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|" + 123 "moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|" + 124 "orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|" + 125 "papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|" + 126 "red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|" + 127 "seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|" + 128 "springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|" + 129 "wheat|white|whitesmoke|yellow|yellowgreen").split("|") 130 ); 131 132 var keywords = lang.arrayToMap( 133 ("@mixin|@extend|@include|@import|@media|@debug|@warn|@if|@for|@each|@while|@else|@font-face|@-webkit-keyframes|if|and|!default|module|def|end|declare").split("|") 134 ); 135 136 var tags = lang.arrayToMap( 137 ("a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdo|" + 138 "big|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|" + 139 "command|datalist|dd|del|details|dfn|dir|div|dl|dt|em|embed|fieldset|" + 140 "figcaption|figure|font|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|" + 141 "header|hgroup|hr|html|i|iframe|img|input|ins|keygen|kbd|label|legend|li|" + 142 "link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|" + 143 "option|output|p|param|pre|progress|q|rp|rt|ruby|s|samp|script|section|select|" + 144 "small|source|span|strike|strong|style|sub|summary|sup|table|tbody|td|" + 145 "textarea|tfoot|th|thead|time|title|tr|tt|u|ul|var|video|wbr|xmp").split("|") 146 ); 147 148 var numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; 149 150 this.$rules = { 151 "start" : [ 152 { 153 token : "comment", 154 regex : "\\/\\/.*$" 155 }, 156 { 157 token : "comment", // multi line comment 158 regex : "\\/\\*", 159 next : "comment" 160 }, { 161 token : "string", // single line 162 regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' 163 }, { 164 token : "string", // multi line string start 165 regex : '["].*\\\\$', 166 next : "qqstring" 167 }, { 168 token : "string", // single line 169 regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" 170 }, { 171 token : "string", // multi line string start 172 regex : "['].*\\\\$", 173 next : "qstring" 174 }, { 175 token : "constant.numeric", 176 regex : numRe + "(?:em|ex|px|cm|mm|in|pt|pc|deg|rad|grad|ms|s|hz|khz|%)" 177 }, { 178 token : "constant.numeric", // hex6 color 179 regex : "#[a-f0-9]{6}" 180 }, { 181 token : "constant.numeric", // hex3 color 182 regex : "#[a-f0-9]{3}" 183 }, { 184 token : "constant.numeric", 185 regex : numRe 186 }, { 187 token : ["support.function", "string", "support.function"], 188 regex : "(url\\()(.*)(\\))" 189 }, { 190 token : function(value) { 191 if (properties.hasOwnProperty(value.toLowerCase())) 192 return "support.type"; 193 if (keywords.hasOwnProperty(value)) 194 return "keyword"; 195 else if (constants.hasOwnProperty(value)) 196 return "constant.language"; 197 else if (functions.hasOwnProperty(value)) 198 return "support.function"; 199 else if (colors.hasOwnProperty(value.toLowerCase())) 200 return "support.constant.color"; 201 else if (tags.hasOwnProperty(value.toLowerCase())) 202 return "variable.language"; 203 else 204 return "text"; 205 }, 206 regex : "\\-?[@a-z_][@a-z0-9_\\-]*" 207 }, { 208 token : "variable", 209 regex : "[a-z_\\-$][a-z0-9_\\-$]*\\b" 210 }, { 211 token: "variable.language", 212 regex: "#[a-z0-9-_]+" 213 }, { 214 token: "variable.language", 215 regex: "\\.[a-z0-9-_]+" 216 }, { 217 token: "variable.language", 218 regex: ":[a-z0-9-_]+" 219 }, { 220 token: "constant", 221 regex: "[a-z0-9-_]+" 222 }, { 223 token : "keyword.operator", 224 regex : "<|>|<=|>=|==|!=|-|%|#|\\+|\\$|\\+|\\*" 225 }, { 226 token : "paren.lparen", 227 regex : "[[({]" 228 }, { 229 token : "paren.rparen", 230 regex : "[\\])}]" 231 }, { 232 token : "text", 233 regex : "\\s+" 234 }, { 235 caseInsensitive: true 236 } 237 ], 238 "comment" : [ 239 { 240 token : "comment", // closing comment 241 regex : "\\*\\/", 242 next : "start" 243 }, { 244 defaultToken : "comment" 245 } 246 ], 247 "qqstring" : [ 248 { 249 token : "string", 250 regex : '(?:(?:\\\\.)|(?:[^"\\\\]))*?"', 251 next : "start" 252 }, { 253 token : "string", 254 regex : '.+' 255 } 256 ], 257 "qstring" : [ 258 { 259 token : "string", 260 regex : "(?:(?:\\\\.)|(?:[^'\\\\]))*?'", 261 next : "start" 262 }, { 263 token : "string", 264 regex : '.+' 265 } 266 ] 267 }; 268}; 269 270oop.inherits(ScssHighlightRules, TextHighlightRules); 271 272exports.ScssHighlightRules = ScssHighlightRules; 273 274}); 275 276define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { 277"use strict"; 278 279var Range = require("../range").Range; 280 281var MatchingBraceOutdent = function() {}; 282 283(function() { 284 285 this.checkOutdent = function(line, input) { 286 if (! /^\s+$/.test(line)) 287 return false;
288 289 return /^\s*\}/.test(input); 290 }; 291 292 this.autoOutdent = function(doc, row) { 293 var line = doc.getLine(row); 294 var match = line.match(/^(\s*\})/); 295 296 if (!match) return 0; 297 298 var column = match[1].length; 299 var openBracePos = doc.findMatchingBracket({row: row, column: column}); 300 301 if (!openBracePos || openBracePos.row == row) return 0; 302 303 var indent = this.$getIndent(doc.getLine(openBracePos.row)); 304 doc.replace(new Range(row, 0, row, column-1), indent); 305 }; 306 307 this.$getIndent = function(line) { 308 return line.match(/^\s*/)[0]; 309 }; 310 311}).call(MatchingBraceOutdent.prototype); 312 313exports.MatchingBraceOutdent = MatchingBraceOutdent; 314}); 315 316define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { 317"use strict"; 318 319var oop = require("../../lib/oop"); 320var Behaviour = require("../behaviour").Behaviour; 321var CstyleBehaviour = require("./cstyle").CstyleBehaviour; 322var TokenIterator = require("../../token_iterator").TokenIterator; 323 324var CssBehaviour = function () { 325 326 this.inherit(CstyleBehaviour); 327 328 this.add("colon", "insertion", function (state, action, editor, session, text) { 329 if (text === ':') { 330 var cursor = editor.getCursorPosition(); 331 var iterator = new TokenIterator(session, cursor.row, cursor.column); 332 var token = iterator.getCurrentToken(); 333 if (token && token.value.match(/\s+/)) { 334 token = iterator.stepBackward(); 335 } 336 if (token && token.type === 'support.type') { 337 var line = session.doc.getLine(cursor.row); 338 var rightChar = line.substring(cursor.column, cursor.column + 1); 339 if (rightChar === ':') { 340 return { 341 text: '', 342 selection: [1, 1] 343 }; 344 } 345 if (!line.substring(cursor.column).match(/^\s*;/)) { 346 return { 347 text: ':;', 348 selection: [1, 1] 349 }; 350 } 351 } 352 } 353 }); 354 355 this.add("colon", "deletion", function (state, action, editor, session, range) { 356 var selected = session.doc.getTextRange(range); 357 if (!range.isMultiLine() && selected === ':') { 358 var cursor = editor.getCursorPosition(); 359 var iterator = new TokenIterator(session, cursor.row, cursor.column); 360 var token = iterator.getCurrentToken(); 361 if (token && token.value.match(/\s+/)) { 362 token = iterator.stepBackward(); 363 } 364 if (token && token.type === 'support.type') { 365 var line = session.doc.getLine(range.start.row); 366 var rightChar = line.substring(range.end.column, range.end.column + 1); 367 if (rightChar === ';') { 368 range.end.column ++; 369 return range; 370 } 371 } 372 } 373 }); 374 375 this.add("semicolon", "insertion", function (state, action, editor, session, text) { 376 if (text === ';') { 377 var cursor = editor.getCursorPosition(); 378 var line = session.doc.getLine(cursor.row); 379 var rightChar = line.substring(cursor.column, cursor.column + 1); 380 if (rightChar === ';') { 381 return { 382 text: '', 383 selection: [1, 1] 384 }; 385 } 386 } 387 }); 388 389}; 390oop.inherits(CssBehaviour, CstyleBehaviour); 391 392exports.CssBehaviour = CssBehaviour; 393}); 394 395define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { 396"use strict"; 397 398var oop = require("../../lib/oop"); 399var Range = require("../../range").Range; 400var BaseFoldMode = require("./fold_mode").FoldMode; 401 402var FoldMode = exports.FoldMode = function(commentRegex) { 403 if (commentRegex) { 404 this.foldingStartMarker = new RegExp( 405 this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) 406 ); 407 this.foldingStopMarker = new RegExp( 408 this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) 409 ); 410 } 411}; 412oop.inherits(FoldMode, BaseFoldMode); 413 414(function() { 415 416 this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; 417 this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; 418 this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; 419 this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; 420 this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; 421 this._getFoldWidgetBase = this.getFoldWidget; 422 this.getFoldWidget = function(session, foldStyle, row) { 423 var line = session.getLine(row); 424 425 if (this.singleLineBlockCommentRe.test(line)) { 426 if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) 427 return ""; 428 } 429 430 var fw = this._getFoldWidgetBase(session, foldStyle, row); 431 432 if (!fw && this.startRegionRe.test(line)) 433 return "start"; // lineCommentRegionStart 434 435 return fw; 436 }; 437 438 this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { 439 var line = session.getLine(row); 440 441 if (this.startRegionRe.test(line)) 442 return this.getCommentRegionBlock(session, line, row); 443 444 var match = line.match(this.foldingStartMarker); 445 if (match) { 446 var i = match.index; 447 448 if (match[1]) 449 return this.openingBracketBlock(session, match[1], row, i); 450 451 var range = session.getCommentFoldRange(row, i + match[0].length, 1); 452 453 if (range && !range.isMultiLine()) { 454 if (forceMultiline) {
455 range = this.getSectionRange(session, row); 456 } else if (foldStyle != "all") 457 range = null; 458 } 459 460 return range; 461 } 462 463 if (foldStyle === "markbegin") 464 return; 465 466 var match = line.match(this.foldingStopMarker); 467 if (match) { 468 var i = match.index + match[0].length; 469 470 if (match[1]) 471 return this.closingBracketBlock(session, match[1], row, i); 472 473 return session.getCommentFoldRange(row, i, -1); 474 } 475 }; 476 477 this.getSectionRange = function(session, row) { 478 var line = session.getLine(row); 479 var startIndent = line.search(/\S/); 480 var startRow = row; 481 var startColumn = line.length; 482 row = row + 1; 483 var endRow = row; 484 var maxRow = session.getLength(); 485 while (++row < maxRow) { 486 line = session.getLine(row); 487 var indent = line.search(/\S/); 488 if (indent === -1) 489 continue; 490 if (startIndent > indent) 491 break; 492 var subRange = this.getFoldWidgetRange(session, "all", row); 493 494 if (subRange) { 495 if (subRange.start.row <= startRow) { 496 break; 497 } else if (subRange.isMultiLine()) { 498 row = subRange.end.row; 499 } else if (startIndent == indent) { 500 break; 501 } 502 } 503 endRow = row; 504 } 505 506 return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); 507 }; 508 this.getCommentRegionBlock = function(session, line, row) { 509 var startColumn = line.search(/\s*$/); 510 var maxRow = session.getLength(); 511 var startRow = row; 512 513 var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; 514 var depth = 1; 515 while (++row < maxRow) { 516 line = session.getLine(row); 517 var m = re.exec(line); 518 if (!m) continue; 519 if (m[1]) depth--; 520 else depth++; 521 522 if (!depth) break; 523 } 524 525 var endRow = row; 526 if (endRow > startRow) { 527 return new Range(startRow, startColumn, endRow, line.length); 528 } 529 }; 530 531}).call(FoldMode.prototype); 532 533}); 534 535define("ace/mode/scss",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/scss_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module) { 536"use strict"; 537 538var oop = require("../lib/oop"); 539var TextMode = require("./text").Mode; 540var ScssHighlightRules = require("./scss_highlight_rules").ScssHighlightRules; 541var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; 542var CssBehaviour = require("./behaviour/css").CssBehaviour; 543var CStyleFoldMode = require("./folding/cstyle").FoldMode; 544 545var Mode = function() { 546 this.HighlightRules = ScssHighlightRules; 547 this.$outdent = new MatchingBraceOutdent(); 548 this.$behaviour = new CssBehaviour(); 549 this.foldingRules = new CStyleFoldMode(); 550}; 551oop.inherits(Mode, TextMode); 552 553(function() { 554 555 this.lineCommentStart = "//"; 556 this.blockComment = {start: "/*", end: "*/"}; 557 558 this.getNextLineIndent = function(state, line, tab) { 559 var indent = this.$getIndent(line); 560 var tokens = this.getTokenizer().getLineTokens(line, state).tokens; 561 if (tokens.length && tokens[tokens.length-1].type == "comment") { 562 return indent; 563 } 564 565 var match = line.match(/^.*\{\s*$/); 566 if (match) { 567 indent += tab; 568 } 569 570 return indent; 571 }; 572 573 this.checkOutdent = function(state, line, input) { 574 return this.$outdent.checkOutdent(line, input); 575 }; 576 577 this.autoOutdent = function(state, doc, row) { 578 this.$outdent.autoOutdent(doc, row); 579 }; 580 581 this.$id = "ace/mode/scss"; 582}).call(Mode.prototype); 583 584exports.Mode = Mode; 585 586});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.