1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- (function (Prism) {
- Prism.languages.sass = Prism.languages.extend('css', {
- // Sass comments don't need to be closed, only indented
- 'comment': {
- pattern: /^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t].+)*/m,
- lookbehind: true,
- greedy: true
- }
- });
- Prism.languages.insertBefore('sass', 'atrule', {
- // We want to consume the whole line
- 'atrule-line': {
- // Includes support for = and + shortcuts
- pattern: /^(?:[ \t]*)[@+=].+/m,
- greedy: true,
- inside: {
- 'atrule': /(?:@[\w-]+|[+=])/
- }
- }
- });
- delete Prism.languages.sass.atrule;
- var variable = /\$[-\w]+|#\{\$[-\w]+\}/;
- var operator = [
- /[+*\/%]|[=!]=|<=?|>=?|\b(?:and|not|or)\b/,
- {
- pattern: /(\s)-(?=\s)/,
- lookbehind: true
- }
- ];
- Prism.languages.insertBefore('sass', 'property', {
- // We want to consume the whole line
- 'variable-line': {
- pattern: /^[ \t]*\$.+/m,
- greedy: true,
- inside: {
- 'punctuation': /:/,
- 'variable': variable,
- 'operator': operator
- }
- },
- // We want to consume the whole line
- 'property-line': {
- pattern: /^[ \t]*(?:[^:\s]+ *:.*|:[^:\s].*)/m,
- greedy: true,
- inside: {
- 'property': [
- /[^:\s]+(?=\s*:)/,
- {
- pattern: /(:)[^:\s]+/,
- lookbehind: true
- }
- ],
- 'punctuation': /:/,
- 'variable': variable,
- 'operator': operator,
- 'important': Prism.languages.sass.important
- }
- }
- });
- delete Prism.languages.sass.property;
- delete Prism.languages.sass.important;
- // Now that whole lines for other patterns are consumed,
- // what's left should be selectors
- Prism.languages.insertBefore('sass', 'punctuation', {
- 'selector': {
- pattern: /^([ \t]*)\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*)*/m,
- lookbehind: true,
- greedy: true
- }
- });
- }(Prism));
|