OLD | NEW |
1 Prism.languages.scss = Prism.languages.extend('css', { | 1 Prism.languages.scss = Prism.languages.extend('css', { |
2 'comment': { | 2 'comment': { |
3 » » pattern: /(^|[^\\])(\/\*[\w\W]*?\*\/|\/\/.*?(\r?\n|$))/, | 3 » » pattern: /(^|[^\\])(?:\/\*[\w\W]*?\*\/|\/\/.*)/, |
4 lookbehind: true | 4 lookbehind: true |
5 }, | 5 }, |
6 'atrule': { | 6 'atrule': { |
7 » » pattern: /@[\w-]+(?:\([^()]+\)|[^(])*?(?=\s+(\{|;))/i, | 7 » » pattern: /@[\w-]+(?:\([^()]+\)|[^(])*?(?=\s+[{;])/, |
8 inside: { | 8 inside: { |
9 'rule': /@[\w-]+/ | 9 'rule': /@[\w-]+/ |
10 // See rest below | 10 // See rest below |
11 } | 11 } |
12 }, | 12 }, |
13 // url, compassified | 13 // url, compassified |
14 » 'url': /([-a-z]+-)*url(?=\()/i, | 14 » 'url': /(?:[-a-z]+-)*url(?=\()/i, |
15 // CSS selector regex is not appropriate for Sass | 15 // CSS selector regex is not appropriate for Sass |
16 // since there can be lot more things (var, @ directive, nesting..) | 16 // since there can be lot more things (var, @ directive, nesting..) |
17 // a selector must start at the end of a property or after a brace (end
of other rules or nesting) | 17 // a selector must start at the end of a property or after a brace (end
of other rules or nesting) |
18 » // it can contain some caracters that aren't used for defining rules or
end of selector, & (parent selector), or interpolated variable | 18 » // it can contain some characters that aren't used for defining rules or
end of selector, & (parent selector), or interpolated variable |
19 // the end of a selector is found when there is no rules in it ( {} or {
\s}) or if there is a property (because an interpolated var | 19 // the end of a selector is found when there is no rules in it ( {} or {
\s}) or if there is a property (because an interpolated var |
20 // can "pass" as a selector- e.g: proper#{$erty}) | 20 // can "pass" as a selector- e.g: proper#{$erty}) |
21 » // this one was ard to do, so please be careful if you edit this one :) | 21 » // this one was hard to do, so please be careful if you edit this one :) |
22 'selector': { | 22 'selector': { |
23 » » pattern: /([^@;\{\}\(\)]?([^@;\{\}\(\)]|&|#\{\$[-_\w]+\})+)(?=\s
*\{(\}|\s|[^\}]+(:|\{)[^\}]+))/m, | 23 » » // Initial look-ahead is used to prevent matching of blank selec
tors |
| 24 » » pattern: /(?=\S)[^@;\{\}\(\)]?([^@;\{\}\(\)]|&|#\{\$[-_\w]+\})+(
?=\s*\{(\}|\s|[^\}]+(:|\{)[^\}]+))/m, |
24 inside: { | 25 inside: { |
25 » » » 'placeholder': /%[-_\w]+/i | 26 » » » 'placeholder': /%[-_\w]+/ |
26 } | 27 } |
27 } | 28 } |
28 }); | 29 }); |
29 | 30 |
30 Prism.languages.insertBefore('scss', 'atrule', { | 31 Prism.languages.insertBefore('scss', 'atrule', { |
31 » 'keyword': /@(if|else if|else|for|each|while|import|extend|debug|warn|mi
xin|include|function|return|content)|(?=@for\s+\$[-_\w]+\s)+from/i | 32 » 'keyword': [ |
| 33 » » /@(?:if|else(?: if)?|for|each|while|import|extend|debug|warn|mix
in|include|function|return|content)/i, |
| 34 » » { |
| 35 » » » pattern: /( +)(?:from|through)(?= )/, |
| 36 » » » lookbehind: true |
| 37 » » } |
| 38 » ] |
32 }); | 39 }); |
33 | 40 |
34 Prism.languages.insertBefore('scss', 'property', { | 41 Prism.languages.insertBefore('scss', 'property', { |
35 // var and interpolated vars | 42 // var and interpolated vars |
36 » 'variable': /((\$[-_\w]+)|(#\{\$[-_\w]+\}))/i | 43 » 'variable': /\$[-_\w]+|#\{\$[-_\w]+\}/ |
37 }); | 44 }); |
38 | 45 |
39 Prism.languages.insertBefore('scss', 'function', { | 46 Prism.languages.insertBefore('scss', 'function', { |
40 'placeholder': { | 47 'placeholder': { |
41 » » pattern: /%[-_\w]+/i, | 48 » » pattern: /%[-_\w]+/, |
42 alias: 'selector' | 49 alias: 'selector' |
43 }, | 50 }, |
44 » 'statement': /\B!(default|optional)\b/i, | 51 » 'statement': /\B!(?:default|optional)\b/i, |
45 » 'boolean': /\b(true|false)\b/, | 52 » 'boolean': /\b(?:true|false)\b/, |
46 » 'null': /\b(null)\b/, | 53 » 'null': /\bnull\b/, |
47 » 'operator': /\s+([-+]{1,2}|={1,2}|!=|\|?\||\?|\*|\/|%)\s+/ | 54 » 'operator': { |
| 55 » » pattern: /(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|or|not)(?=\s)/, |
| 56 » » lookbehind: true |
| 57 » } |
48 }); | 58 }); |
49 | 59 |
50 Prism.languages.scss['atrule'].inside.rest = Prism.util.clone(Prism.languages.sc
ss); | 60 Prism.languages.scss['atrule'].inside.rest = Prism.util.clone(Prism.languages.sc
ss); |
OLD | NEW |