aboutsummaryrefslogtreecommitdiff
path: root/node_modules/prismjs/components/prism-sass.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/prismjs/components/prism-sass.js')
-rw-r--r--node_modules/prismjs/components/prism-sass.js73
1 files changed, 73 insertions, 0 deletions
diff --git a/node_modules/prismjs/components/prism-sass.js b/node_modules/prismjs/components/prism-sass.js
new file mode 100644
index 00000000..f1708304
--- /dev/null
+++ b/node_modules/prismjs/components/prism-sass.js
@@ -0,0 +1,73 @@
+(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
+ }
+ });
+
+ Prism.languages.insertBefore('sass', 'atrule', {
+ // We want to consume the whole line
+ 'atrule-line': {
+ // Includes support for = and + shortcuts
+ pattern: /^(?:[ \t]*)[@+=].+/m,
+ inside: {
+ 'atrule': /(?:@[\w-]+|[+=])/m
+ }
+ }
+ });
+ delete Prism.languages.sass.atrule;
+
+
+ var variable = /\$[-\w]+|#\{\$[-\w]+\}/;
+ var operator = [
+ /[+*\/%]|[=!]=|<=?|>=?|\b(?:and|or|not)\b/,
+ {
+ pattern: /(\s+)-(?=\s)/,
+ lookbehind: true
+ }
+ ];
+
+ Prism.languages.insertBefore('sass', 'property', {
+ // We want to consume the whole line
+ 'variable-line': {
+ pattern: /^[ \t]*\$.+/m,
+ inside: {
+ 'punctuation': /:/,
+ 'variable': variable,
+ 'operator': operator
+ }
+ },
+ // We want to consume the whole line
+ 'property-line': {
+ pattern: /^[ \t]*(?:[^:\s]+ *:.*|:[^:\s]+.*)/m,
+ 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
+ delete Prism.languages.sass.selector;
+ Prism.languages.insertBefore('sass', 'punctuation', {
+ 'selector': {
+ pattern: /([ \t]*)\S(?:,?[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,?[^,\r\n]+)*)*/,
+ lookbehind: true
+ }
+ });
+
+}(Prism)); \ No newline at end of file