mirror of
https://github.com/Funkoala14/knowledgebase_law.git
synced 2025-06-09 01:44:37 +08:00
79 lines
2.2 KiB
JavaScript
79 lines
2.2 KiB
JavaScript
|
'use strict'
|
||
|
|
||
|
module.exports = sass
|
||
|
sass.displayName = 'sass'
|
||
|
sass.aliases = []
|
||
|
function sass(Prism) {
|
||
|
;(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)
|
||
|
}
|