mirror of https://github.com/avecms/AVE.cms.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
200 lines
6.6 KiB
200 lines
6.6 KiB
// CodeMirror, copyright (c) by Marijn Haverbeke and others |
|
// Distributed under an MIT license: http://codemirror.net/LICENSE |
|
|
|
(function() { |
|
var mode = CodeMirror.getMode({indentUnit: 2}, "css"); |
|
function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } |
|
|
|
// Error, because "foobarhello" is neither a known type or property, but |
|
// property was expected (after "and"), and it should be in parentheses. |
|
MT("atMediaUnknownType", |
|
"[def @media] [attribute screen] [keyword and] [error foobarhello] { }"); |
|
|
|
// Soft error, because "foobarhello" is not a known property or type. |
|
MT("atMediaUnknownProperty", |
|
"[def @media] [attribute screen] [keyword and] ([error foobarhello]) { }"); |
|
|
|
// Make sure nesting works with media queries |
|
MT("atMediaMaxWidthNested", |
|
"[def @media] [attribute screen] [keyword and] ([property max-width]: [number 25px]) { [tag foo] { } }"); |
|
|
|
MT("atMediaFeatureValueKeyword", |
|
"[def @media] ([property orientation]: [keyword landscape]) { }"); |
|
|
|
MT("atMediaUnknownFeatureValueKeyword", |
|
"[def @media] ([property orientation]: [error upsidedown]) { }"); |
|
|
|
MT("tagSelector", |
|
"[tag foo] { }"); |
|
|
|
MT("classSelector", |
|
"[qualifier .foo-bar_hello] { }"); |
|
|
|
MT("idSelector", |
|
"[builtin #foo] { [error #foo] }"); |
|
|
|
MT("tagSelectorUnclosed", |
|
"[tag foo] { [property margin]: [number 0] } [tag bar] { }"); |
|
|
|
MT("tagStringNoQuotes", |
|
"[tag foo] { [property font-family]: [variable hello] [variable world]; }"); |
|
|
|
MT("tagStringDouble", |
|
"[tag foo] { [property font-family]: [string \"hello world\"]; }"); |
|
|
|
MT("tagStringSingle", |
|
"[tag foo] { [property font-family]: [string 'hello world']; }"); |
|
|
|
MT("tagColorKeyword", |
|
"[tag foo] {", |
|
" [property color]: [keyword black];", |
|
" [property color]: [keyword navy];", |
|
" [property color]: [keyword yellow];", |
|
"}"); |
|
|
|
MT("tagColorHex3", |
|
"[tag foo] { [property background]: [atom #fff]; }"); |
|
|
|
MT("tagColorHex4", |
|
"[tag foo] { [property background]: [atom #ffff]; }"); |
|
|
|
MT("tagColorHex6", |
|
"[tag foo] { [property background]: [atom #ffffff]; }"); |
|
|
|
MT("tagColorHex8", |
|
"[tag foo] { [property background]: [atom #ffffffff]; }"); |
|
|
|
MT("tagColorHex5Invalid", |
|
"[tag foo] { [property background]: [atom&error #fffff]; }"); |
|
|
|
MT("tagColorHexInvalid", |
|
"[tag foo] { [property background]: [atom&error #ffg]; }"); |
|
|
|
MT("tagNegativeNumber", |
|
"[tag foo] { [property margin]: [number -5px]; }"); |
|
|
|
MT("tagPositiveNumber", |
|
"[tag foo] { [property padding]: [number 5px]; }"); |
|
|
|
MT("tagVendor", |
|
"[tag foo] { [meta -foo-][property box-sizing]: [meta -foo-][atom border-box]; }"); |
|
|
|
MT("tagBogusProperty", |
|
"[tag foo] { [property&error barhelloworld]: [number 0]; }"); |
|
|
|
MT("tagTwoProperties", |
|
"[tag foo] { [property margin]: [number 0]; [property padding]: [number 0]; }"); |
|
|
|
MT("tagTwoPropertiesURL", |
|
"[tag foo] { [property background]: [atom url]([string //example.com/foo.png]); [property padding]: [number 0]; }"); |
|
|
|
MT("indent_tagSelector", |
|
"[tag strong], [tag em] {", |
|
" [property background]: [atom rgba](", |
|
" [number 255], [number 255], [number 0], [number .2]", |
|
" );", |
|
"}"); |
|
|
|
MT("indent_atMedia", |
|
"[def @media] {", |
|
" [tag foo] {", |
|
" [property color]:", |
|
" [keyword yellow];", |
|
" }", |
|
"}"); |
|
|
|
MT("indent_comma", |
|
"[tag foo] {", |
|
" [property font-family]: [variable verdana],", |
|
" [atom sans-serif];", |
|
"}"); |
|
|
|
MT("indent_parentheses", |
|
"[tag foo]:[variable-3 before] {", |
|
" [property background]: [atom url](", |
|
"[string blahblah]", |
|
"[string etc]", |
|
"[string ]) [keyword !important];", |
|
"}"); |
|
|
|
MT("font_face", |
|
"[def @font-face] {", |
|
" [property font-family]: [string 'myfont'];", |
|
" [error nonsense]: [string 'abc'];", |
|
" [property src]: [atom url]([string http://blah]),", |
|
" [atom url]([string http://foo]);", |
|
"}"); |
|
|
|
MT("empty_url", |
|
"[def @import] [atom url]() [attribute screen];"); |
|
|
|
MT("parens", |
|
"[qualifier .foo] {", |
|
" [property background-image]: [variable fade]([atom #000], [number 20%]);", |
|
" [property border-image]: [atom linear-gradient](", |
|
" [atom to] [atom bottom],", |
|
" [variable fade]([atom #000], [number 20%]) [number 0%],", |
|
" [variable fade]([atom #000], [number 20%]) [number 100%]", |
|
" );", |
|
"}"); |
|
|
|
MT("css_variable", |
|
":[variable-3 root] {", |
|
" [variable-2 --main-color]: [atom #06c];", |
|
"}", |
|
"[tag h1][builtin #foo] {", |
|
" [property color]: [atom var]([variable-2 --main-color]);", |
|
"}"); |
|
|
|
MT("supports", |
|
"[def @supports] ([keyword not] (([property text-align-last]: [atom justify]) [keyword or] ([meta -moz-][property text-align-last]: [atom justify])) {", |
|
" [property text-align-last]: [atom justify];", |
|
"}"); |
|
|
|
MT("document", |
|
"[def @document] [tag url]([string http://blah]),", |
|
" [tag url-prefix]([string https://]),", |
|
" [tag domain]([string blah.com]),", |
|
" [tag regexp]([string \".*blah.+\"]) {", |
|
" [builtin #id] {", |
|
" [property background-color]: [keyword white];", |
|
" }", |
|
" [tag foo] {", |
|
" [property font-family]: [variable Verdana], [atom sans-serif];", |
|
" }", |
|
"}"); |
|
|
|
MT("document_url", |
|
"[def @document] [tag url]([string http://blah]) { [qualifier .class] { } }"); |
|
|
|
MT("document_urlPrefix", |
|
"[def @document] [tag url-prefix]([string https://]) { [builtin #id] { } }"); |
|
|
|
MT("document_domain", |
|
"[def @document] [tag domain]([string blah.com]) { [tag foo] { } }"); |
|
|
|
MT("document_regexp", |
|
"[def @document] [tag regexp]([string \".*blah.+\"]) { [builtin #id] { } }"); |
|
|
|
MT("counter-style", |
|
"[def @counter-style] [variable binary] {", |
|
" [property system]: [atom numeric];", |
|
" [property symbols]: [number 0] [number 1];", |
|
" [property suffix]: [string \".\"];", |
|
" [property range]: [atom infinite];", |
|
" [property speak-as]: [atom numeric];", |
|
"}"); |
|
|
|
MT("counter-style-additive-symbols", |
|
"[def @counter-style] [variable simple-roman] {", |
|
" [property system]: [atom additive];", |
|
" [property additive-symbols]: [number 10] [variable X], [number 5] [variable V], [number 1] [variable I];", |
|
" [property range]: [number 1] [number 49];", |
|
"}"); |
|
|
|
MT("counter-style-use", |
|
"[tag ol][qualifier .roman] { [property list-style]: [variable simple-roman]; }"); |
|
|
|
MT("counter-style-symbols", |
|
"[tag ol] { [property list-style]: [atom symbols]([atom cyclic] [string \"*\"] [string \"\\2020\"] [string \"\\2021\"] [string \"\\A7\"]); }"); |
|
})();
|
|
|