mirror of https://github.com/jkjoy/sunpeiwen.git
84 lines
1.4 KiB
JavaScript
84 lines
1.4 KiB
JavaScript
|
/*
|
||
|
Language: NestedText
|
||
|
Description: NestedText is a file format for holding data that is to be entered, edited, or viewed by people.
|
||
|
Website: https://nestedtext.org/
|
||
|
Category: config
|
||
|
*/
|
||
|
|
||
|
/** @type LanguageFn */
|
||
|
function nestedtext(hljs) {
|
||
|
const NESTED = {
|
||
|
match: [
|
||
|
/^\s*(?=\S)/, // have to look forward here to avoid polynomial backtracking
|
||
|
/[^:]+/,
|
||
|
/:\s*/,
|
||
|
/$/
|
||
|
],
|
||
|
className: {
|
||
|
2: "attribute",
|
||
|
3: "punctuation"
|
||
|
}
|
||
|
};
|
||
|
const DICTIONARY_ITEM = {
|
||
|
match: [
|
||
|
/^\s*(?=\S)/, // have to look forward here to avoid polynomial backtracking
|
||
|
/[^:]*[^: ]/,
|
||
|
/[ ]*:/,
|
||
|
/[ ]/,
|
||
|
/.*$/
|
||
|
],
|
||
|
className: {
|
||
|
2: "attribute",
|
||
|
3: "punctuation",
|
||
|
5: "string"
|
||
|
}
|
||
|
};
|
||
|
const STRING = {
|
||
|
match: [
|
||
|
/^\s*/,
|
||
|
/>/,
|
||
|
/[ ]/,
|
||
|
/.*$/
|
||
|
],
|
||
|
className: {
|
||
|
2: "punctuation",
|
||
|
4: "string"
|
||
|
}
|
||
|
};
|
||
|
const LIST_ITEM = {
|
||
|
variants: [
|
||
|
{ match: [
|
||
|
/^\s*/,
|
||
|
/-/,
|
||
|
/[ ]/,
|
||
|
/.*$/
|
||
|
] },
|
||
|
{ match: [
|
||
|
/^\s*/,
|
||
|
/-$/
|
||
|
] }
|
||
|
],
|
||
|
className: {
|
||
|
2: "bullet",
|
||
|
4: "string"
|
||
|
}
|
||
|
};
|
||
|
|
||
|
return {
|
||
|
name: 'Nested Text',
|
||
|
aliases: [ 'nt' ],
|
||
|
contains: [
|
||
|
hljs.inherit(hljs.HASH_COMMENT_MODE, {
|
||
|
begin: /^\s*(?=#)/,
|
||
|
excludeBegin: true
|
||
|
}),
|
||
|
LIST_ITEM,
|
||
|
STRING,
|
||
|
NESTED,
|
||
|
DICTIONARY_ITEM
|
||
|
]
|
||
|
};
|
||
|
}
|
||
|
|
||
|
module.exports = nestedtext;
|