css.js
1.71 KB
CodeMirror.defineMode("css",function(e){function t(e,t){return o=t,e}function n(e,n){var o=e.next();return"@"==o?(e.eatWhile(/[\w\\\-]/),t("meta",e.current())):"/"==o&&e.eat("*")?(n.tokenize=r,r(e,n)):"<"==o&&e.eat("!")?(n.tokenize=a,a(e,n)):"="!=o?"~"!=o&&"|"!=o||!e.eat("=")?'"'==o||"'"==o?(n.tokenize=i(o),n.tokenize(e,n)):"#"==o?(e.eatWhile(/[\w\\\-]/),t("atom","hash")):"!"==o?(e.match(/^\s*\w*/),t("keyword","important")):/\d/.test(o)?(e.eatWhile(/[\w.%]/),t("number","unit")):/[,.+>*\/]/.test(o)?t(null,"select-op"):/[;{}:\[\]]/.test(o)?t(null,o):(e.eatWhile(/[\w\\\-]/),t("variable","variable")):t(null,"compare"):void t(null,"compare")}function r(e,r){for(var a,i=!1;null!=(a=e.next());){if(i&&"/"==a){r.tokenize=n;break}i="*"==a}return t("comment","comment")}function a(e,r){for(var a,i=0;null!=(a=e.next());){if(i>=2&&">"==a){r.tokenize=n;break}i="-"==a?i+1:0}return t("comment","comment")}function i(e){return function(r,a){for(var i,o=!1;null!=(i=r.next())&&(i!=e||o);)o=!o&&"\\"==i;return o||(a.tokenize=n),t("string","string")}}var o,u=e.indentUnit;return{startState:function(e){return{tokenize:n,baseIndent:e||0,stack:[]}},token:function(e,t){if(e.eatSpace())return null;var n=t.tokenize(e,t),r=t.stack[t.stack.length-1];return"hash"==o&&"rule"!=r?n="string-2":"variable"==n&&("rule"==r?n="number":r&&"@media{"!=r||(n="tag")),"rule"==r&&/^[\{\};]$/.test(o)&&t.stack.pop(),"{"==o?"@media"==r?t.stack[t.stack.length-1]="@media{":t.stack.push("{"):"}"==o?t.stack.pop():"@media"==o?t.stack.push("@media"):"{"==r&&"comment"!=o&&t.stack.push("rule"),n},indent:function(e,t){var n=e.stack.length;return/^\}/.test(t)&&(n-="rule"==e.stack[e.stack.length-1]?2:1),e.baseIndent+n*u},electricChars:"}"}}),CodeMirror.defineMIME("text/css","css");