Skip to content

Instantly share code, notes, and snippets.

@timhettler
Last active December 14, 2015 17:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save timhettler/5121421 to your computer and use it in GitHub Desktop.
Save timhettler/5121421 to your computer and use it in GitHub Desktop.
SCSS language definition for Prism
Prism.languages.scss = {
'comment': {
pattern: /(^|[^\\])(\/\*[\w\W]*?\*\/|\/\/.*?(\r?\n|$))/g,
lookbehind: true
},
'keyword': {
pattern: /(\s)(if|in|from|through|and|or|not)(?=\s)/i,
lookbehind: true,
},
'boolean': /\b(true|false)\b/g,
'null': /\b(null)\b/g,
'mixin': {
pattern: /(@(include|mixin)\s*)[_\w\d-]+?(?=\s*?[\(;])/gi,
lookbehind: true
},
'variable': /\$[\w-]+\b/i,
'atrule': /@[\w-]+?(?=\s)/gi,
'function': /[_\w\d-]+?(?=\s*?\()/gi,
'unit': {
pattern: /([\d])(rem|em|ex|px|in|cm|mm|pt|pc|deg|rad|grad|ms|s|Hz|kHz|%|s|ms)\b/gi,
lookbehind: true
},
'string': /("|')(\\?.)*?\1/g,
'parent': /&(?=.*?\s*\{)/gi,
'flag': /\B!(important|default|optional)\b/gi,
'operation': /[!=]=|(&(lt|gt);=?|[+\*\/-]|%\W)(?=\s*?[\$\d"'#])/g,
'punctuation': /[\{\}\(\);:,]|\.\.\./g
};
Prism.languages.insertBefore('scss', 'mixin', {
'interpolation': {
pattern: /#{.+?}/gi,
inside: {
'variable': Prism.languages.scss.variable,
'function': Prism.languages.scss.function,
'string': Prism.languages.scss.string,
'unit': Prism.languages.scss.unit,
'operation': Prism.languages.scss.operation,
'punctuation': Prism.languages.scss.punctuation
}
}
});
Prism.languages.insertBefore('scss', 'variable', {
'property': {
pattern: /(\b|\B|\$)[a-z-]+(?=\s*:\s*(.*[;\)]|\{))/gi, //prevent false positive with pseudo-classes
inside: {
'variable': Prism.languages.scss.variable
}
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment