我如何使用语言YAML文件,以确定这对于任何给定的语言关键字的工作?(How can I use t

2019-09-29 23:30发布

有一个在GitHub帮助页面描述如何使用语法高亮显示的代码块。 该网页上有说明如何搭配语言的关键字用于此目的的说明:

我们用语言学家执行语言检测和语法高亮。 你可以找出哪些关键字是有效的语言YAML文件 。

然而,有很多在YAML的数据,我不觉得它很清楚究竟如何可以用它来确定哪些关键字对于任何给定的语言文字工作。

我写了一个简单的启动 脚本来尝试这个YAML解析到一个更可读的JSON从每种语言它是有效的关键词列表文件映射:

curl https://raw.githubusercontent.com/github/linguist/f75c5707a62a3d66501993116826f4e64c3ca4dd/lib/linguist/languages.yml | ./languages.boot > languages.json

但我并不相信这是正确的。 例如,许多我的脚本生成的关键字包含空格,而我的印象是, 这些是行不通的 :

代码栅栏的内容被当作文字文本,而不是解析为内联。 的的第一个字的信息串通常用于指定代码样本的语言,并在渲染class的属性code标记。

我正在寻找的是在这个YAML文件的“模式”的理解,之多,因而它涉及到语法GitHub的降价突出。 理想情况下,我想能够使用这种理解来编写一个程序,它在语言YAML文件并生成类似的对堆栈交换语法高亮语言代码列表 ,但对于降价GitHub上。 我怎么能写这样的计划?

Answer 1:

我正在寻找的是在这个YAML文件的“模式”的理解。

对于在每种语言languages.yml文件 ,你可以使用

  1. 语言名称;
  2. 任何语言的aliases ;
  3. 任何语言的interpreters ;
  4. 任何的文件扩展名,带有或不带有领先.

白色空间必须由破折号 (例如, 被替换 emacs-lisp是一个说明符Emacs Lisp )。 用语言tm_scope: none条目没有定义的语法和不会在github.com突出。

我怎么能写这样的计划?

事实上, 已经有人写过这样的程序 。 在github上/语言学家#2278 ,JMM细节他的调查结果,并从GitHub的工程师(同一个线程)中的一个接收确认。 他还给出了链接到自己的程序来计算标识符和维基页面的结果 (这可能不是跟上时代的)。



文章来源: How can I use the languages YAML file to determine which keywords work for any given language?