hexo/node_modules/highlight.js/lib/languages/nestedtext.js

84 lines
1.5 KiB
JavaScript
Raw Normal View History

2023-10-03 11:14:36 +08:00
/*
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;