mirror of
https://github.com/renbaoshuo/S2OJ.git
synced 2024-12-26 01:51:51 +00:00
136 lines
4.1 KiB
JavaScript
136 lines
4.1 KiB
JavaScript
|
// 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 parenthese.
|
||
|
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("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("tagColorHex6",
|
||
|
"[tag foo] { [property background]: [atom #ffffff]; }");
|
||
|
|
||
|
MT("tagColorHex4",
|
||
|
"[tag foo] { [property background]: [atom&error #ffff]; }");
|
||
|
|
||
|
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("commentSGML",
|
||
|
"[comment <!--comment-->]");
|
||
|
|
||
|
MT("commentSGML2",
|
||
|
"[comment <!--comment]",
|
||
|
"[comment -->] [tag div] {}");
|
||
|
|
||
|
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] [tag url]() [tag screen];");
|
||
|
|
||
|
MT("parens",
|
||
|
"[qualifier .foo] {",
|
||
|
" [property background-image]: [variable fade]([atom #000], [number 20%]);",
|
||
|
" [property border-image]: [variable linear-gradient](",
|
||
|
" [atom to] [atom bottom],",
|
||
|
" [variable fade]([atom #000], [number 20%]) [number 0%],",
|
||
|
" [variable fade]([atom #000], [number 20%]) [number 100%]",
|
||
|
" );",
|
||
|
"}");
|
||
|
})();
|