使用下划线来排除文件和目录

时间:2013-07-25 12:26:20

标签: javascript node.js express coffeescript underscore.js

我有一个node.js / express应用程序,它使用i18next进行网站本地化。

目前我正在从硬编码版本中提取此列表:https://github.com/TZM/tzm-blade/blob/master/app/config/apps.coffee#L105但是想通过阅读locales目录然后从中编制列表来创建此列表。

我想基本上排除devREADME.mdconfig.json被退回,只是拥有其他目录,以便我可以返回正确的国家/地区,例如使用node-cldr库根据https://github.com/papandreou/node-cldr#cldrextractlanguagedisplaynameslocaleidroot提取语言显示名称:

☺  node  ruby-2.0.0-p195 master 2253522""
> var cldr = require('cldr');
undefined
> cldr.extractLanguageDisplayNames('ru').ru;
'русский'
>

等...

到目前为止,查看reject http://underscorejs.org/#reject集合,我看不到如何删除这些文件和目录

  fs.readdir "./locales", (err,locales) ->
    results = []
    __.reject locales, (value, index, list) ->
      console.log value, index, list
      results.push value
    console.log results

任何建议都非常赞赏如何使用下划线中的reject函数做到最好。

1 个答案:

答案 0 :(得分:0)

我对coffeescript不太熟悉,但这就是你想要的东西(可能需要修理,因为我不知道coffeescript):

EXCLUDE = [ 'dev', 'README.md', 'config.json' ]
results = __.reject locales, (value, index, list) ->
  return EXCLUDE.indexOf(value) == -1

_。reject会返回迭代器返回true的任何项的新列表。在这种情况下,如果项目不在EXCLUDE列表中(indexOf === -1),则该函数返回true,该项目是它返回的列表的一部分。