Javascript Highlight.js自定义语言定义

Javascript Highlight.js自定义语言定义,javascript,json,syntax-highlighting,highlight.js,Javascript,Json,Syntax Highlighting,Highlight.js,我正在尝试为highlight.js创建语言定义。 但它不起作用。我有一个例子 在本例中,我试图创建自定义的“aaa”语言,它与JSON相同registerLanguage函数接收与默认JSON高亮显示函数相同的函数(来自highlight.js源) hljs.listLanguages()显示,该语言已注册 之后,我调用hljs.highlightBlock(block) 强制使用自定义的“aaa”语言,在这种情况下,hljs.highlightBlock(block)不会更改内容 $(文档

我正在尝试为highlight.js创建语言定义。 但它不起作用。我有一个例子

在本例中,我试图创建自定义的“aaa”语言,它与JSON相同
registerLanguage
函数接收与默认JSON高亮显示函数相同的函数(来自highlight.js源)

hljs.listLanguages()
显示,该语言已注册

之后,我调用
hljs.highlightBlock(block)

强制使用自定义的“aaa”语言,在这种情况下,
hljs.highlightBlock(block)
不会更改内容

$(文档).ready(函数(){
//注册aaa语言(JSON别名)
//代码来自https://github.com/isagalaev/highlight.js/blob/master/src/languages/json.js
registerLanguage(“aaa”,函数(hljs){
变量文字={
文字:“真假空”
};
变量类型=[
hljs.QUOTE_字符串_模式,
hljs.C\u编号\u模式
];
变量值\u容器={
类名:“值”,
完:",",,
endsWithParent:对,
是的,
包含:类型,
关键词:文字
};
变量对象={
开始:“{”,
结束:“}”,
包含:[{
类名:'属性',
开始:“\\s*”,
结束:“\\s*:\\s*”,
是的,
是的,
包含:[hljs.BACKSLASH\u ESCAPE],
非法:'\\n',
开始:值\u容器
}],
非法:'\\S'
};
变量数组={
开始:“\\[”,
结束:“\\]”,
包含:[hljs.inherit(值\u容器{
类名:null
})],//inherit也是一个使endsWithParent共享模式只编译其中一个父模式的结尾的错误的解决方法
非法:'\\S'
};
类型.拼接(类型.长度,0,对象,数组);
返回{
包含:类型,
关键词:文字,
非法:'\\S'
};
});
console.log(hljs.listLanguages());//列表中的aaa
$('pre-code')。每个(函数(i,块){
高亮度块(块);
});
});


{“菜单”:{
“id”:“文件”,
“值”:“文件”,
“弹出窗口”:{
“菜单项”:[
{“value”:“New”,“onclick”:“CreateNewDoc()”},
{“value”:“Open”,“onclick”:“OpenDoc()”},
{“value”:“Close”,“onclick”:“CloseDoc()”}
]
}
}}

Highlight.js在生成过程中有一个缩小/打包过程,用于重命名语言定义对象的字段。这意味着它们在中描述的对象将无法与分布式库一起使用。只有在构建时之前定义的语言才能以这种方式工作


您可以在缩小的highlightjs文件中查找registerLanguage的用法,以尝试对字段名称进行反向工程。

此文件包含所有替换的名称: