有一个page on GitHub Help描述了如何使用突出显示语法的代码块。在该页面上有说明,说明如何将语言与其关键字匹配以实现此目的:
我们使用Linguist来执行语言检测和语法突出显示。您可以在the languages YAML file中找出哪些关键字有效。
但是,YAML中有很多数据,我不清楚如何使用它来确定哪些关键字适用于任何给定的语言。
我编写了一个简单的Boot script来尝试将此YAML解析为从每种语言到其有效关键字列表的更易读JSON文件映射:
curl https://raw.githubusercontent.com/github/linguist/f75c5707a62a3d66501993116826f4e64c3ca4dd/lib/linguist/languages.yml | ./languages.boot > languages.json
但我完全不相信这是正确的。例如,我的脚本生成的许多关键字都包含空格,我的印象是those would not work:
代码栏的内容被视为文字文本,不会被解析为内联。 info string的第一个单词通常用于指定代码示例的语言,并在
class
标记的code
属性中呈现。
我正在寻找的是理解这个YAML文件的“模式”,因为它与GitHub Markdown中的语法突出显示有关。理想情况下,我希望能够使用这种理解编写一个程序,该程序接收语言YAML文件并生成类似list of language codes for Stack Exchange syntax highlighting的内容,但适用于GitHub上的Markdown。 我该如何编写这样的程序?
答案 0 :(得分:1)
我正在寻找的是理解"架构"这个YAML文件。
对于languages.yml
file中的每种语言,您都可以使用说明符:
aliases
; interpreters
; .
。 必须用短划线替换空格(例如,emacs-lisp
是Emacs Lisp
的一个说明符)。 tm_scope: none
条目的语言没有定义语法,也不会在github.com上突出显示。
我该如何编写这样的程序?
实际上,有人已经写过这样的程序。在github/linguist#2278中,jmm详细说明了他的调查结果,并收到了GitHub的一位工程师(同一个线程)的确认。他还提供了他自己的program to compute identifiers和a wiki page with the results的链接(可能不是最新的)。