| OLD | NEW |
| 1 (function(Prism) { | 1 (function(Prism) { |
| 2 Prism.languages.sass = Prism.languages.extend('css', { | 2 Prism.languages.sass = Prism.languages.extend('css', { |
| 3 // Sass comments don't need to be closed, only indented | 3 // Sass comments don't need to be closed, only indented |
| 4 » » 'comment': /^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t]+.+)*/m | 4 » » 'comment': { |
| 5 » » » pattern: /^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t]+.+)*/
m, |
| 6 » » » lookbehind: true |
| 7 » » } |
| 5 }); | 8 }); |
| 6 | 9 |
| 7 Prism.languages.insertBefore('sass', 'atrule', { | 10 Prism.languages.insertBefore('sass', 'atrule', { |
| 8 // We want to consume the whole line | 11 // We want to consume the whole line |
| 9 'atrule-line': { | 12 'atrule-line': { |
| 10 // Includes support for = and + shortcuts | 13 // Includes support for = and + shortcuts |
| 11 pattern: /^(?:[ \t]*)[@+=].+/m, | 14 pattern: /^(?:[ \t]*)[@+=].+/m, |
| 12 inside: { | 15 inside: { |
| 13 » » » » 'atrule': /^(?:[ \t]*)(?:@[\w-]+|[+=])/m | 16 » » » » 'atrule': /(?:@[\w-]+|[+=])/m |
| 14 } | 17 } |
| 15 } | 18 } |
| 16 }); | 19 }); |
| 17 delete Prism.languages.sass.atrule; | 20 delete Prism.languages.sass.atrule; |
| 18 | 21 |
| 19 | 22 |
| 20 var variable = /((\$[-_\w]+)|(#\{\$[-_\w]+\}))/i; | 23 var variable = /((\$[-_\w]+)|(#\{\$[-_\w]+\}))/i; |
| 21 » var operator = /[-+]{1,2}|==?|!=|\|?\||\?|\*|\/|%/; | 24 » var operator = [ |
| 25 » » /[+*\/%]|[=!]=|<=?|>=?|\b(?:and|or|not)\b/, |
| 26 » » { |
| 27 » » » pattern: /(\s+)-(?=\s)/, |
| 28 » » » lookbehind: true |
| 29 » » } |
| 30 » ]; |
| 22 | 31 |
| 23 Prism.languages.insertBefore('sass', 'property', { | 32 Prism.languages.insertBefore('sass', 'property', { |
| 24 // We want to consume the whole line | 33 // We want to consume the whole line |
| 25 'variable-line': { | 34 'variable-line': { |
| 26 » » » pattern: /(^|(?:\r?\n|\r))[ \t]*\$.+/, | 35 » » » pattern: /^[ \t]*\$.+/m, |
| 27 » » » lookbehind: true, | |
| 28 inside: { | 36 inside: { |
| 29 'punctuation': /:/, | 37 'punctuation': /:/, |
| 30 'variable': variable, | 38 'variable': variable, |
| 31 'operator': operator | 39 'operator': operator |
| 32 } | 40 } |
| 33 }, | 41 }, |
| 34 // We want to consume the whole line | 42 // We want to consume the whole line |
| 35 'property-line': { | 43 'property-line': { |
| 36 » » » pattern: /(^|(?:\r?\n|\r))[ \t]*(?:[^:\s]+[ ]*:.*|:[^:\s
]+.*)/i, | 44 » » » pattern: /^[ \t]*(?:[^:\s]+ *:.*|:[^:\s]+.*)/m, |
| 37 » » » lookbehind: true, | |
| 38 inside: { | 45 inside: { |
| 39 'property': [ | 46 'property': [ |
| 40 /[^:\s]+(?=\s*:)/, | 47 /[^:\s]+(?=\s*:)/, |
| 41 { | 48 { |
| 42 pattern: /(:)[^:\s]+/, | 49 pattern: /(:)[^:\s]+/, |
| 43 lookbehind: true | 50 lookbehind: true |
| 44 } | 51 } |
| 45 ], | 52 ], |
| 46 'punctuation': /:/, | 53 'punctuation': /:/, |
| 47 'variable': variable, | 54 'variable': variable, |
| 48 'operator': operator, | 55 'operator': operator, |
| 49 'important': Prism.languages.sass.important | 56 'important': Prism.languages.sass.important |
| 50 } | 57 } |
| 51 } | 58 } |
| 52 }); | 59 }); |
| 53 delete Prism.languages.sass.property; | 60 delete Prism.languages.sass.property; |
| 54 delete Prism.languages.sass.important; | 61 delete Prism.languages.sass.important; |
| 55 | 62 |
| 56 // Now that whole lines for other patterns are consumed, | 63 // Now that whole lines for other patterns are consumed, |
| 57 // what's left should be selectors | 64 // what's left should be selectors |
| 58 delete Prism.languages.sass.selector; | 65 delete Prism.languages.sass.selector; |
| 59 Prism.languages.insertBefore('sass', 'punctuation', { | 66 Prism.languages.insertBefore('sass', 'punctuation', { |
| 60 'selector': { | 67 'selector': { |
| 61 » » » pattern: /([ \t]*).+(?:,(?:\r?\n|\r)\1[ \t]+.+)*/, | 68 » » » pattern: /([ \t]*)\S(?:,?[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[
\t]+\S(?:,?[^,\r\n]+)*)*/, |
| 62 lookbehind: true | 69 lookbehind: true |
| 63 } | 70 } |
| 64 }); | 71 }); |
| 65 | 72 |
| 66 }(Prism)); | 73 }(Prism)); |
| OLD | NEW |