咖啡豆强调方法来自何处?

时间:2016-10-31 03:17:43

标签: node.js coffeescript

我一直在atom/apm code中寻找函数定义或包依赖的位置。它在第93行的src/view.coffee中被调用

items.push(repository.underline)
items.push(pack.description.replace(/\s+/g, ' ')) if pack.description

但我不确定该方法的来源,或者我如何能够在节点REPL中重现它。它来自哪里?

1 个答案:

答案 0 :(得分:1)

repository.underline不是方法(没有括号),它是repository变量的属性。

repository variable来自pack.repository.url or pack.repository

pack is populated from a JSON HTTP API responserepository位于metadata中,来自versions[version]中的JSON。 versiongetLatestCompatibleVersion决定。

如果显示sample response for the minimap package,则特定版本的所有repository值都是纯字符串,因此.underline属性不是来自那里的对象。因为它们是纯字符串,所以可能会扩展javascript String原型以包含underline属性,但是什么?

sample search看起来.underline用于终端类型输出。查看package.json dependencies, the colors package works in that space

colors adds a number of properties to the string prototype,包括underline

这是为什么扩展原型会让人感到困惑的一个很好的例子。