如何使用语言YAML文件来确定哪些关键字适用于任何给定的语言?
有一个page on GitHub Help描述如何使用语法高亮的代码块。在该页面上,有说明如何将语言与其关键字匹配用于此目的:如何使用语言YAML文件来确定哪些关键字适用于任何给定的语言?
我们使用Linguist来执行语言检测和语法高亮显示。你可以在the languages YAML file找出哪些关键字是有效的。
但是,该YAML中有很多数据,我不清楚究竟如何使用它来确定哪些关键字适用于任何给定的语言。
我写了一个简单Bootscript尝试这个YAML解析从每种语言的有效关键字列表的可读性更强JSON文件映射:
curl https://raw.githubusercontent.com/github/linguist/f75c5707a62a3d66501993116826f4e64c3ca4dd/lib/linguist/languages.yml | ./languages.boot > languages.json
但我并不相信这是正确的。例如,许多我的脚本生成包含空格的关键字,而我的印象是,those would not work:
代码栅栏的内容被当作文字文本,而不是解析为内联。 info string的第一个单词通常用于指定代码示例的语言,并在
code
标记的class
属性中呈现。
我在找的是对这个YAML文件的“模式”的理解,因为它涉及到GitHub Markdown中的语法高亮。理想情况下,我希望能够使用这种理解来编写一个程序,该程序需要语言YAML文件并生成类似于list of language codes for Stack Exchange syntax highlighting的内容,但对于GitHub上的Markdown。 我该如何编写这样的程序?
我在找的是对这个YAML文件的“模式”的理解。
对于在languages.yml
file每一种语言,你可以为符使用:
- 语言名
- 任何语言
aliases
- 的任何文件扩展名,有或无的领先的
.
。
白空间必须由破折号来代替(例如,emacs-lisp
为Emacs Lisp
一个说明符)。具有tm_scope: none
条目的语言没有定义语法,并且不会在github.com上突出显示。
我该怎么写这样的程序?
其实,有人已经写了这样的程序。在github/linguist#2278中,jmm详细介绍了他的调查结果,并收到了GitHub的一名工程师的确认(同一主题)。他还给出了他自己的program to compute identifiers和a wiki page with the results(可能不是最新的)的链接。