【问题标题】:How can I use the languages YAML file to determine which keywords work for any given language?如何使用语言 YAML 文件来确定哪些关键字适用于任何给定语言?
【发布时间】:2017-08-04 22:17:33
【问题描述】:

有一个page on GitHub Help 描述了如何使用语法高亮代码块。在该页面上有说明如何为此目的将语言与其关键字匹配:

我们使用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。 如何编写这样的程序?

【问题讨论】:

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


    【解决方案1】:

    我正在寻找的是对此 YAML 文件的“架构”的理解。

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

    1. 语言名称;
    2. 任何语言aliases;
    3. 任何语言interpreters;
    4. 任何文件扩展名,带或不带前导 .

    空格必须替换为破折号(例如,emacs-lispEmacs Lisp 的一个说明符)。带有tm_scope: none 条目的语言没有定义语法,不会在 github.com 上突出显示。

    怎样才能写出这样的程序?

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-04
      • 1970-01-01
      • 1970-01-01
      • 2016-02-07
      • 2017-10-18
      • 2011-08-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多