2018-11-30 08:13:53 -06:00
|
|
|
/* tslint:disable max-line-length */
|
|
|
|
|
2019-09-17 06:21:50 -05:00
|
|
|
const tokenizer = {
|
2018-11-30 08:13:53 -06:00
|
|
|
comment: {
|
|
|
|
pattern: /(^|[^\n])#.*/,
|
|
|
|
lookbehind: true,
|
|
|
|
},
|
|
|
|
'context-labels': {
|
|
|
|
pattern: /(^|\s)\{[^}]*(?=})/,
|
|
|
|
lookbehind: true,
|
|
|
|
inside: {
|
|
|
|
'label-key': {
|
|
|
|
pattern: /[a-z_]\w*(?=\s*(=|!=|=~|!~))/,
|
|
|
|
alias: 'attr-name',
|
|
|
|
},
|
|
|
|
'label-value': {
|
|
|
|
pattern: /"(?:\\.|[^\\"])*"/,
|
|
|
|
greedy: true,
|
|
|
|
alias: 'attr-value',
|
|
|
|
},
|
2018-12-04 07:57:01 -06:00
|
|
|
punctuation: /[{]/,
|
2018-11-30 08:13:53 -06:00
|
|
|
},
|
|
|
|
},
|
|
|
|
// number: /\b-?\d+((\.\d*)?([eE][+-]?\d+)?)?\b/,
|
|
|
|
operator: new RegExp(`/&&?|\\|?\\||!=?|<(?:=>?|<|>)?|>[>=]?`, 'i'),
|
|
|
|
punctuation: /[{}`,.]/,
|
|
|
|
};
|
|
|
|
|
|
|
|
export default tokenizer;
|