add sass mode
This commit is contained in:
parent
0c318fa8c0
commit
b4f799770a
7 changed files with 181 additions and 3 deletions
|
|
@ -113,6 +113,7 @@ var docs = {
|
||||||
"docs/abap.abap": "SAP - ABAP",
|
"docs/abap.abap": "SAP - ABAP",
|
||||||
"docs/scala.scala": "Scala",
|
"docs/scala.scala": "Scala",
|
||||||
"docs/scss.scss": "SCSS",
|
"docs/scss.scss": "SCSS",
|
||||||
|
"docs/sass.sass": "SASS",
|
||||||
"docs/sh.sh": "SH",
|
"docs/sh.sh": "SH",
|
||||||
"docs/stylus.styl": "Stylus",
|
"docs/stylus.styl": "Stylus",
|
||||||
"docs/sql.sql": {name: "SQL", wrapped: true},
|
"docs/sql.sql": {name: "SQL", wrapped: true},
|
||||||
|
|
|
||||||
39
demo/kitchen-sink/docs/sass.sass
Normal file
39
demo/kitchen-sink/docs/sass.sass
Normal file
|
|
@ -0,0 +1,39 @@
|
||||||
|
// sass ace mode;
|
||||||
|
|
||||||
|
@import url(http://fonts.googleapis.com/css?family=Ace:700)
|
||||||
|
|
||||||
|
html, body
|
||||||
|
:background-color #ace
|
||||||
|
text-align: center
|
||||||
|
height: 100%
|
||||||
|
/*;*********;
|
||||||
|
;comment ;
|
||||||
|
;*********;
|
||||||
|
|
||||||
|
.toggle
|
||||||
|
$size: 14px
|
||||||
|
|
||||||
|
:background url(http://subtlepatterns.com/patterns/dark_stripes.png)
|
||||||
|
border-radius: 8px
|
||||||
|
height: $size
|
||||||
|
|
||||||
|
&:before
|
||||||
|
$radius: $size * 0.845
|
||||||
|
$glow: $size * 0.125
|
||||||
|
|
||||||
|
box-shadow: 0 0 $glow $glow / 2 #fff
|
||||||
|
border-radius: $radius
|
||||||
|
|
||||||
|
&:active
|
||||||
|
~ .button
|
||||||
|
box-shadow: 0 15px 25px -4px rgba(0,0,0,0.4)
|
||||||
|
~ .label
|
||||||
|
font-size: 40px
|
||||||
|
color: rgba(0,0,0,0.45)
|
||||||
|
|
||||||
|
&:checked
|
||||||
|
~ .button
|
||||||
|
box-shadow: 0 15px 25px -4px #ace
|
||||||
|
~ .label
|
||||||
|
font-size: 40px
|
||||||
|
color: #c9c9c9
|
||||||
|
|
@ -83,7 +83,8 @@ var modesByName = {
|
||||||
ruby: ["Ruby" , "ru|gemspec|rake|rb"],
|
ruby: ["Ruby" , "ru|gemspec|rake|rb"],
|
||||||
scad: ["OpenSCAD" , "scad"],
|
scad: ["OpenSCAD" , "scad"],
|
||||||
scala: ["Scala" , "scala"],
|
scala: ["Scala" , "scala"],
|
||||||
scss: ["SCSS" , "scss|sass"],
|
scss: ["SCSS" , "scss"],
|
||||||
|
sass: ["SASS" , "sass"],
|
||||||
sh: ["SH" , "sh|bash|bat"],
|
sh: ["SH" , "sh|bash|bat"],
|
||||||
sql: ["SQL" , "sql"],
|
sql: ["SQL" , "sql"],
|
||||||
stylus: ["Stylus" , "styl|stylus"],
|
stylus: ["Stylus" , "styl|stylus"],
|
||||||
|
|
|
||||||
|
|
@ -89,6 +89,9 @@ var CssHighlightRules = function() {
|
||||||
}, {
|
}, {
|
||||||
token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
|
token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"],
|
||||||
regex : pseudoClasses
|
regex : pseudoClasses
|
||||||
|
}, {
|
||||||
|
token : ["support.function", "string", "support.function"],
|
||||||
|
regex : "(url\\()(.*)(\\))"
|
||||||
}, {
|
}, {
|
||||||
token : keywordMapper,
|
token : keywordMapper,
|
||||||
regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
|
regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"
|
||||||
|
|
|
||||||
52
lib/ace/mode/sass.js
Normal file
52
lib/ace/mode/sass.js
Normal file
|
|
@ -0,0 +1,52 @@
|
||||||
|
/* ***** BEGIN LICENSE BLOCK *****
|
||||||
|
* Distributed under the BSD license:
|
||||||
|
*
|
||||||
|
* Copyright (c) 2010, Ajax.org B.V.
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions are met:
|
||||||
|
* * Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* * Neither the name of Ajax.org B.V. nor the
|
||||||
|
* names of its contributors may be used to endorse or promote products
|
||||||
|
* derived from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
|
||||||
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* ***** END LICENSE BLOCK ***** */
|
||||||
|
|
||||||
|
define(function(require, exports, module) {
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
var oop = require("../lib/oop");
|
||||||
|
var TextMode = require("./text").Mode;
|
||||||
|
var Tokenizer = require("../tokenizer").Tokenizer;
|
||||||
|
var SassHighlightRules = require("./sass_highlight_rules").SassHighlightRules;
|
||||||
|
var FoldMode = require("./folding/coffee").FoldMode;
|
||||||
|
|
||||||
|
var Mode = function() {
|
||||||
|
this.$tokenizer = new Tokenizer(new SassHighlightRules().getRules());
|
||||||
|
this.foldingRules = new FoldMode();
|
||||||
|
};
|
||||||
|
oop.inherits(Mode, TextMode);
|
||||||
|
|
||||||
|
(function() {
|
||||||
|
|
||||||
|
}).call(Mode.prototype);
|
||||||
|
|
||||||
|
exports.Mode = Mode;
|
||||||
|
|
||||||
|
});
|
||||||
79
lib/ace/mode/sass_highlight_rules.js
Normal file
79
lib/ace/mode/sass_highlight_rules.js
Normal file
|
|
@ -0,0 +1,79 @@
|
||||||
|
/* ***** BEGIN LICENSE BLOCK *****
|
||||||
|
* Distributed under the BSD license:
|
||||||
|
*
|
||||||
|
* Copyright (c) 2010, Ajax.org B.V.
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions are met:
|
||||||
|
* * Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* * Neither the name of Ajax.org B.V. nor the
|
||||||
|
* names of its contributors may be used to endorse or promote products
|
||||||
|
* derived from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
|
||||||
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* ***** END LICENSE BLOCK ***** */
|
||||||
|
|
||||||
|
define(function(require, exports, module) {
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
var oop = require("../lib/oop");
|
||||||
|
var lang = require("../lib/lang");
|
||||||
|
var ScssHighlightRules = require("./scss_highlight_rules").ScssHighlightRules;
|
||||||
|
|
||||||
|
var SassHighlightRules = function() {
|
||||||
|
ScssHighlightRules.call(this);
|
||||||
|
var start = this.$rules.start;
|
||||||
|
if (start[1].token == "comment") {
|
||||||
|
start.splice(1, 1, {
|
||||||
|
token: function(value, currentState, stack) {
|
||||||
|
stack.unshift(this.next, value.length - 2, currentState);
|
||||||
|
return "comment";
|
||||||
|
},
|
||||||
|
regex: /^\s*\/\*/,
|
||||||
|
next: "comment"
|
||||||
|
}, {
|
||||||
|
token: "error.invalid",
|
||||||
|
regex: "/\\*|[{;}]"
|
||||||
|
}, {
|
||||||
|
token: "support.type",
|
||||||
|
regex: /^\s*:[\w\-]+\s/,
|
||||||
|
});
|
||||||
|
|
||||||
|
this.$rules.comment = [
|
||||||
|
{regex: /^\s*/, token: function(value, currentState, stack) {
|
||||||
|
if (value.length < stack[1]) {
|
||||||
|
stack.shift();
|
||||||
|
stack.shift();
|
||||||
|
this.next = stack.shift();
|
||||||
|
return "text";
|
||||||
|
} else {
|
||||||
|
stack[1] = value.length;
|
||||||
|
this.next = "";
|
||||||
|
return "comment";
|
||||||
|
}
|
||||||
|
}, next: "start"},
|
||||||
|
{defaultToken: "comment"}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
oop.inherits(SassHighlightRules, ScssHighlightRules);
|
||||||
|
|
||||||
|
exports.SassHighlightRules = SassHighlightRules;
|
||||||
|
|
||||||
|
});
|
||||||
|
|
@ -66,8 +66,8 @@ var ScssHighlightRules = function() {
|
||||||
"border-color|border-left-color|border-left-style|border-left-width|" +
|
"border-color|border-left-color|border-left-style|border-left-width|" +
|
||||||
"border-left|border-right-color|border-right-style|border-right-width|" +
|
"border-left|border-right-color|border-right-style|border-right-width|" +
|
||||||
"border-right|border-spacing|border-style|border-top-color|" +
|
"border-right|border-spacing|border-style|border-top-color|" +
|
||||||
"border-top-style|border-top-width|border-top|border-width|border|" +
|
"border-top-style|border-top-width|border-top|border-width|border|bottom|" +
|
||||||
"bottom|box-sizing|caption-side|clear|clip|color|content|counter-increment|" +
|
"box-shadow|box-sizing|caption-side|clear|clip|color|content|counter-increment|" +
|
||||||
"counter-reset|cue-after|cue-before|cue|cursor|direction|display|" +
|
"counter-reset|cue-after|cue-before|cue|cursor|direction|display|" +
|
||||||
"elevation|empty-cells|float|font-family|font-size-adjust|font-size|" +
|
"elevation|empty-cells|float|font-family|font-size-adjust|font-size|" +
|
||||||
"font-stretch|font-style|font-variant|font-weight|font|height|left|" +
|
"font-stretch|font-style|font-variant|font-weight|font|height|left|" +
|
||||||
|
|
@ -204,6 +204,9 @@ var ScssHighlightRules = function() {
|
||||||
}, {
|
}, {
|
||||||
token : "constant.numeric",
|
token : "constant.numeric",
|
||||||
regex : numRe
|
regex : numRe
|
||||||
|
}, {
|
||||||
|
token : ["support.function", "string", "support.function"],
|
||||||
|
regex : "(url\\()(.*)(\\))"
|
||||||
}, {
|
}, {
|
||||||
token : function(value) {
|
token : function(value) {
|
||||||
if (properties.hasOwnProperty(value.toLowerCase()))
|
if (properties.hasOwnProperty(value.toLowerCase()))
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue