reprism
Version:
Modular Syntax highlighting for the web
124 lines (121 loc) • 3.33 kB
JavaScript
export default {
language: 'xeora',
init: Prism => {
(function (Prism) {
Prism.languages.xeora = Prism.languages.extend('markup', {
constant: {
pattern: /\$(?:DomainContents|PageRenderDuration)\$/,
inside: {
punctuation: {
pattern: /\$/,
},
},
},
variable: {
pattern: /\$@?(?:#+|[-+*~=^])?[\w.]+\$/,
inside: {
punctuation: {
pattern: /[$.]/,
},
operator: {
pattern: /#+|[-+*~=^@]/,
},
},
},
'function-inline': {
pattern: /\$F:[-\w.]+\?[-\w.]+(?:,(?:\|?(?:[-#.^+*~]*(?:[\w+][^$]*)|=(?:[\S+][^$]*)|@[-#]*(?:\w+.)[\w+.]+)?)*)?\$/,
inside: {
variable: {
pattern: /(?:[,|])@?(?:#+|[-+*~=^])?[\w.]+/,
inside: {
punctuation: {
pattern: /[,.|]/,
},
operator: {
pattern: /#+|[-+*~=^@]/,
},
},
},
punctuation: {
pattern: /\$\w:|[$:?.,|]/,
},
},
alias: 'function',
},
'function-block': {
pattern: /\$XF:{[-\w.]+\?[-\w.]+(?:,(?:\|?(?:[-#.^+*~]*(?:[\w+][^$]*)|=(?:[\S+][^$]*)|@[-#]*(?:\w+.)[\w+.]+)?)*)?}:XF\$/,
inside: {
punctuation: {
pattern: /[$:{}?.,|]/,
},
},
alias: 'function',
},
'directive-inline': {
pattern: /\$\w(?:#\d+\+?)?(?:\[[-\w.]+])?:[-\/\w.]+\$/,
inside: {
punctuation: {
pattern: /\$(?:\w:|C(?:\[|#\d))?|[:{[\]]/,
inside: {
tag: {
pattern: /#\d/,
},
},
},
},
alias: 'function',
},
'directive-block-open': {
pattern: /\$\w+:{|\$\w(?:#\d+\+?)?(?:\[[-\w.]+])?:[-\w.]+:{(![A-Z]+)?/,
inside: {
punctuation: {
pattern: /\$(?:\w:|C(?:\[|#\d))?|[:{[\]]/,
inside: {
tag: {
pattern: /#\d/,
},
},
},
attribute: {
pattern: /![A-Z]+$/,
inside: {
punctuation: {
pattern: /!/,
},
},
alias: 'keyword',
},
},
alias: 'function',
},
'directive-block-separator': {
pattern: /}:[-\w.]+:{/,
inside: {
punctuation: {
pattern: /[:{}]/,
},
},
alias: 'function',
},
'directive-block-close': {
pattern: /}:[-\w.]+\$/,
inside: {
punctuation: {
pattern: /[:{}$]/,
},
},
alias: 'function',
},
})
Prism.languages.insertBefore(
'inside',
'punctuation',
{
variable: Prism.languages.xeora['function-inline'].inside.variable,
},
Prism.languages.xeora['function-block']
)
Prism.languages.xeoracube = Prism.languages.xeora
}(Prism))
},
}