2013-07-25 100 views
0

我有一个使用i18next该网站的本地化的node.js/Express应用程序。使用下划线排除文件和目录

当前我从一个硬编码版本拉这个名单:https://github.com/TZM/tzm-blade/blob/master/app/config/apps.coffee#L105但想通过阅读locales目录,然后由此组成清单。

我想基本上排除返回的devREADME.mdconfig.json距离,只是有其他目录,这样我可以使用节点CLDR库中提取的语言显示名称,然后返回正确的国家如local每https://github.com/papandreou/node-cldr#cldrextractlanguagedisplaynameslocaleidroot

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

等等

至今看rejecthttp://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函数做到最好。

回答

0

我不是太熟悉的CoffeeScript,但这里有你想要什么(可能需要固定起来,因为我不知道的CoffeeScript):

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

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

+0

感谢,这是伟大的,我不得不改变'返回EXCLUDE.indexOf(值)== -1'为'返回EXCLUDE.indexOf(值)!= -1'这种方式,列出了所有其他目录。 – khinester