我在我的流星源中大量使用CoffeeScript [CS] /。事实上,我的项目中的所有内容都是使用CS编写的。我想用同一个令牌写包。它们应该如何组织,声明和书写,以便利用CS方言的强大功能,同时最大限度地提高可测试性和可移植性?
答案 0 :(得分:6)
简而言之,您只需要api.use('coffeescript');
和Package.onUse
中的Package.onTest
才能在CoffeeScript中编写软件包。有关命名空间怪癖的概述,请参阅the docs。
这是一个名为safe
的包的简单示例,其中包含以下四个文件:
<强> package.js 强>
Package.describe({
name: 'safe',
summary: 'Encrypt strings to keep them safe (or not)'
});
Package.onUse(function(api) {
api.versionsFrom('1.1.0.3');
api.export('Safe');
api.use('coffeescript');
api.addFiles('encrypt.coffee');
api.addFiles('safe.coffee');
});
Package.onTest(function(api) {
api.use('tinytest');
api.use('safe');
api.use('coffeescript');
api.addFiles('tests.coffee');
});
<强> encrypt.coffee 强>
# use the share object to export code to other files in the package
share.encrypt = (string) ->
# a super strong encryption :)
string.replace /[a-zA-Z]/g, (c) ->
String.fromCharCode (if ((if c <= "Z" then 90 else 122)) >= (c = c.charCodeAt(0) + 13) then c else c - 26)
<强> safe.coffee 强>
{encrypt} = share
class Safe
constructor: (@string) ->
encrypt: ->
encrypt @string
<强> tests.coffee 强>
Tinytest.add 'safe encryption', (test) ->
safe = new Safe 'pandapants'
test.equal safe.encrypt(), 'cnaqncnagf'
这应该为您提供一个模板来开始。如果您需要进一步说明,请在评论中提问,我会根据需要更新答案。