如何使用语言YAML文件来确定哪些关键字适用于任何给定的语言?

时间:2017-08-04 22:17:33

标签: github markdown github-flavored-markdown github-linguist

有一个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。 我该如何编写这样的程序?

1 个答案:

答案 0 :(得分:1)

  

我正在寻找的是理解"架构"这个YAML文件。

对于languages.yml file中的每种语言,您都可以使用说明符

  1. 语言名称;
  2. 任何语言aliases;
  3. 任何语言interpreters;
  4. 任何文件扩展名,包括或不包含前导.
  5. 必须用短划线替换空格(例如,emacs-lispEmacs Lisp的一个说明符)。 tm_scope: none条目的语言没有定义语法,也不会在github.com上突出显示。

      

    我该如何编写这样的程序?

    实际上,有人已经写过这样的程序。在github/linguist#2278中,jmm详细说明了他的调查结果,并收到了GitHub的一位工程师(同一个线程)的确认。他还提供了他自己的program to compute identifiersa wiki page with the results的链接(可能不是最新的)。