mirror of
https://github.com/renbaoshuo/S2OJ.git
synced 2024-12-29 00:51:52 +00:00
96d4a3ecf7
Due to historical reasons, the code is in subfolder "1". With SVN removal, we place the code back and remove the annoying "1" folder.
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%]",
|
|
" );",
|
|
"}");
|
|
})();
|