Socket
Socket
Sign inDemoInstall

leximaven

Package Overview
Dependencies
267
Maintainers
1
Versions
20
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 2.3.3 to 2.3.4

.eslintignore

2

bin/commands/configuration/get.js

@@ -1,1 +0,1 @@

'use strict';var themes=require('../../themes');var tools=require('../../tools');var chalk=require('chalk');var dot=require('dotty');var noon=require('noon');var CFILE=process.env.HOME+'/.leximaven.noon';exports.command='get <key>';exports.aliases=['g'];exports.desc='Retrieve a config value';exports.builder={};exports.handler=function(argv){var key=argv.key;var value=null;tools.checkConfig(CFILE);var config=noon.load(CFILE);var theme=themes.loadTheme(config.theme);if(config.verbose)themes.label(theme,'down','Configuration');if(dot.exists(config,key)){value=/\./i.test(key)?dot.get(config,key):config[key];}else{throw new Error('Option '+key+' not found.');}console.log('Option '+chalk.white.bold(key)+' is '+chalk.white.bold(value)+'.');};
'use strict';var themes=require('../../themes');var tools=require('../../tools');var chalk=require('chalk');var dot=require('dot-prop');var noon=require('noon');var CFILE=process.env.HOME+'/.leximaven.noon';exports.command='get <key>';exports.aliases=['g'];exports.desc='Retrieve a config value';exports.builder={};exports.handler=function(argv){var key=argv.key;var value=null;tools.checkConfig(CFILE);var config=noon.load(CFILE);var theme=themes.loadTheme(config.theme);if(config.verbose)themes.label(theme,'down','Configuration');if(dot.has(config,key)){value=/\./i.test(key)?dot.get(config,key):config[key];}else{throw new Error('Option '+key+' not found.');}console.log('Option '+chalk.white.bold(key)+' is '+chalk.white.bold(value)+'.');};

@@ -1,1 +0,1 @@

'use strict';var themes=require('../../themes');var tools=require('../../tools');var chalk=require('chalk');var dot=require('dotty');var noon=require('noon');var CFILE=process.env.HOME+'/.leximaven.noon';exports.command='set <key> <value>';exports.aliases=['s'];exports.desc='Set a config value';exports.builder={};exports.handler=function(argv){var key=argv.key;var value=argv.value;value=tools.checkBoolean(value);tools.checkConfig(CFILE);var config=noon.load(CFILE);var theme=themes.loadTheme(config.theme);if(config.verbose)themes.label(theme,'down','Configuration');if(dot.exists(config,key)){if(/\./i.test(key)){if(/^\w*\.date/i.test(key)){throw new Error("API limits hardcoded, can't set this key.");}else{dot.put(config,key,value);}}else{config[key]=value;}}else{throw new Error('Option '+key+' not found.');}noon.save(CFILE,config);console.log('Set option '+chalk.white.bold(key)+' to '+chalk.white.bold(value)+'.');};
'use strict';var themes=require('../../themes');var tools=require('../../tools');var chalk=require('chalk');var dot=require('dot-prop');var noon=require('noon');var CFILE=process.env.HOME+'/.leximaven.noon';exports.command='set <key> <value>';exports.aliases=['s'];exports.desc='Set a config value';exports.builder={};exports.handler=function(argv){var key=argv.key;var value=argv.value;value=tools.checkBoolean(value);tools.checkConfig(CFILE);var config=noon.load(CFILE);var theme=themes.loadTheme(config.theme);if(config.verbose)themes.label(theme,'down','Configuration');if(dot.has(config,key)){if(/\./i.test(key)){if(/^\w*\.date/i.test(key)){throw new Error("API limits hardcoded, can't set this key.");}else{dot.set(config,key,value);}}else{config[key]=value;}}else{throw new Error('Option '+key+' not found.');}noon.save(CFILE,config);console.log('Set option '+chalk.white.bold(key)+' to '+chalk.white.bold(value)+'.');};

@@ -1,1 +0,1 @@

'use strict';/* eslint max-len:0 */var themes=require('../../themes');var tools=require('../../tools');var _=require('lodash');var chalk=require('chalk');var moment=require('moment');var http=require('good-guy-http')();var noon=require('noon');var ora=require('ora');var CFILE=process.env.HOME+'/.leximaven.noon';exports.command='get <condition>';exports.desc='Datamuse query';exports.builder={out:{alias:'o',desc:'Write cson, json, noon, plist, yaml, xml',default:'',type:'string'},force:{alias:'f',desc:'Force overwriting outfile',default:false,type:'boolean'},save:{alias:'s',desc:'Save flags to config file',default:false,type:'boolean'},max:{alias:'m',desc:'Maximum number of results, 1 to 1000',default:5,type:'number'}};exports.handler=function(argv){tools.checkConfig(CFILE);var config=noon.load(CFILE);var proceed=false;var reset=false;var stamp=new Date(config.dmuse.date.stamp);var hours=moment(new Date()).diff(stamp,'hours');var minutes=moment(new Date()).diff(stamp,'minutes');var checkStamp=tools.limitDmuse(config);config=checkStamp[0];proceed=checkStamp[1];reset=checkStamp[2];if(proceed){(function(){var userConfig={dmuse:{max:argv.m}};if(config.merge)config=_.merge({},config,userConfig);if(argv.s&&config.merge)noon.save(CFILE,config);if(argv.s&&!config.merge)throw new Error("Can't save user config, set option merge to true.");var theme=themes.loadTheme(config.theme);if(config.verbose)themes.label(theme,'down','Datamuse');var ccont=[];ccont.push(argv.condition);if(argv._.length>1){for(var i=0;i<=argv._.length-1;i++){if(argv._[i]!=='datamuse'&&argv._[i]!=='dmuse'&&argv._[i]!=='dm'&&argv._[i]!=='get'){ccont.push(argv._[i]);}}}var prefix='http://api.datamuse.com/words?';var conditions='max='+config.dmuse.max+'&';for(var _i=0;_i<=ccont.length-1;_i++){conditions=conditions+'&'+ccont[_i];}var url=''+prefix+conditions;url=encodeURI(url);var tags={n:'noun',adj:'adjective',adv:'adverb',syn:'synonym'};var tofile={type:'datamuse',source:'http://datamuse.com/api',url:url};var ctstyle=_.get(chalk,theme.content.style);var spinner=ora({text:''+chalk.bold.cyan('Loading results...'),spinner:'dots8',color:'yellow'});http({url:url},function(error,response){if(!error&&response.statusCode===200){if(response.headers['x-gg-state']==='cached'){config.dmuse.date.remain++;noon.save(CFILE,config);if(config.usage)console.log('Cached response, not decrementing usage.');}var resp=JSON.parse(response.body);spinner.stop();spinner.clear();for(var _i2=0;_i2<=resp.length-1;_i2++){var item=resp[_i2];themes.label(theme,'right','Match',item.word+' ');tofile[['match'+_i2]]=item.word;if(item.tags!==undefined&&item.tags!==[]){themes.label(theme,'right','Tag');for(var j=0;j<=item.tags.length-1;j++){if(j===item.tags.length-1){process.stdout.write(ctstyle(''+tags[item.tags[j]]));tofile[['tags'+j]]=tags[item.tags[j]];}else process.stdout.write(ctstyle(tags[item.tags[j]]+', '));}console.log('');}}if(argv.o)tools.outFile(argv.o,argv.f,tofile);if(config.usage)reset?console.log('Timestamp expired, reset usage limits.\n'+config.dmuse.date.remain+'/'+config.dmuse.date.limit+' requests remaining today.'):console.log(config.dmuse.date.remain+'/'+config.dmuse.date.limit+' requests remaining today, will reset in '+(23-hours)+' hours, '+(59-minutes)+' minutes.');}else throw new Error('HTTP '+error.statusCode+': '+error.reponse.body);});})();}else throw new Error('Reached today\'s usage limit of '+config.dmuse.date.limit+'.');};
'use strict';/* eslint max-len:0 */var themes=require('../../themes');var tools=require('../../tools');var _=require('lodash');var df=require('date-fns');var chalk=require('chalk');var http=require('good-guy-http')();var noon=require('noon');var ora=require('ora');var CFILE=process.env.HOME+'/.leximaven.noon';exports.command='get <condition>';exports.desc='Datamuse query';exports.builder={out:{alias:'o',desc:'Write cson, json, noon, plist, yaml, xml',default:'',type:'string'},force:{alias:'f',desc:'Force overwriting outfile',default:false,type:'boolean'},save:{alias:'s',desc:'Save flags to config file',default:false,type:'boolean'},max:{alias:'m',desc:'Maximum number of results, 1 to 1000',default:5,type:'number'}};exports.handler=function(argv){tools.checkConfig(CFILE);var config=noon.load(CFILE);var proceed=false;var reset=false;var stamp=new Date(config.dmuse.date.stamp);var hours=df.differenceInHours(new Date(),stamp);var minutes=df.differenceInMinutes(new Date(),stamp);var checkStamp=tools.limitDmuse(config);config=checkStamp[0];proceed=checkStamp[1];reset=checkStamp[2];if(proceed){(function(){var userConfig={dmuse:{max:argv.m}};if(config.merge)config=_.merge({},config,userConfig);if(argv.s&&config.merge)noon.save(CFILE,config);if(argv.s&&!config.merge)throw new Error("Can't save user config, set option merge to true.");var theme=themes.loadTheme(config.theme);if(config.verbose)themes.label(theme,'down','Datamuse');var ccont=[];ccont.push(argv.condition);if(argv._.length>1){for(var i=0;i<=argv._.length-1;i++){if(argv._[i]!=='datamuse'&&argv._[i]!=='dmuse'&&argv._[i]!=='dm'&&argv._[i]!=='get'){ccont.push(argv._[i]);}}}var prefix='http://api.datamuse.com/words?';var conditions='max='+config.dmuse.max+'&';for(var _i=0;_i<=ccont.length-1;_i++){conditions=conditions+'&'+ccont[_i];}var url=''+prefix+conditions;url=encodeURI(url);var tags={n:'noun',adj:'adjective',adv:'adverb',syn:'synonym'};var tofile={type:'datamuse',source:'http://datamuse.com/api',url:url};var ctstyle=_.get(chalk,theme.content.style);var spinner=ora({text:''+chalk.bold.cyan('Loading results...'),spinner:'dots8',color:'yellow'});http({url:url},function(error,response){if(!error&&response.statusCode===200){if(response.headers['x-gg-state']==='cached'){config.dmuse.date.remain++;noon.save(CFILE,config);if(config.usage)console.log('Cached response, not decrementing usage.');}var resp=JSON.parse(response.body);spinner.stop();spinner.clear();for(var _i2=0;_i2<=resp.length-1;_i2++){var item=resp[_i2];themes.label(theme,'right','Match',item.word+' ');tofile[['match'+_i2]]=item.word;if(item.tags!==undefined&&item.tags!==[]){themes.label(theme,'right','Tag');for(var j=0;j<=item.tags.length-1;j++){if(j===item.tags.length-1){process.stdout.write(ctstyle(''+tags[item.tags[j]]));tofile[['tags'+j]]=tags[item.tags[j]];}else process.stdout.write(ctstyle(tags[item.tags[j]]+', '));}console.log('');}}if(argv.o)tools.outFile(argv.o,argv.f,tofile);if(config.usage)reset?console.log('Timestamp expired, reset usage limits.\n'+config.dmuse.date.remain+'/'+config.dmuse.date.limit+' requests remaining today.'):console.log(config.dmuse.date.remain+'/'+config.dmuse.date.limit+' requests remaining today, will reset in '+(23-hours)+' hours, '+(59-minutes)+' minutes.');}else throw new Error('HTTP '+error.statusCode+': '+error.reponse.body);});})();}else throw new Error('Reached today\'s usage limit of '+config.dmuse.date.limit+'.');};

@@ -1,1 +0,1 @@

'use strict';/* eslint max-len:0, no-unused-vars:0 */var tools=require('../../tools');var chalk=require('chalk');var moment=require('moment');var http=require('good-guy-http')();var noon=require('noon');var CFILE=process.env.HOME+'/.leximaven.noon';exports.command='info';exports.desc='Datamuse metrics';exports.builder={};exports.handler=function(argv){tools.checkConfig(CFILE);var config=noon.load(CFILE);var url='http://api.datamuse.com/metrics';http({url:url},function(error,response){if(!error&&response.statusCode===200){var body=JSON.parse(response.body);var version=body[0];var qps=body[1];var sugf=body[2];var sugn=body[3];var wordf=body[4];var wordn=body[5];console.log(chalk.white('Current queries per second (v'+Math.round(version.value*100)/100.0+'): '+Math.round(qps.value*100)/100.0));console.log(chalk.white('Latency (/words): '+Math.round(wordf.value*100000)/100.0+' ms (median), '+Math.round(wordn.value*100000)/100.0+' ms (99 %ile)'));console.log(chalk.white('Latency (/sug): '+Math.round(sugf.value*100000)/100.0+' ms (median), '+Math.round(sugn.value*100000)/100.0+' ms (99 %ile)'));}else{throw new Error('HTTP '+error.statusCode+': '+error.reponse.body);}});var limit=config.dmuse.date.limit;var remain=config.dmuse.date.remain;var stamp=new Date(config.dmuse.date.stamp);var hours=moment(new Date()).diff(stamp,'hours');var minutes=moment(new Date()).diff(stamp,'minutes');console.log(chalk.white(remain+'/'+limit+' requests remain today, will reset in '+(23-hours)+' hours, '+(59-minutes)+' minutes.'));};
'use strict';/* eslint max-len:0, no-unused-vars:0 */var tools=require('../../tools');var chalk=require('chalk');var df=require('date-fns');var http=require('good-guy-http')();var noon=require('noon');var CFILE=process.env.HOME+'/.leximaven.noon';exports.command='info';exports.desc='Datamuse metrics';exports.builder={};exports.handler=function(argv){tools.checkConfig(CFILE);var config=noon.load(CFILE);var url='http://api.datamuse.com/metrics';http({url:url},function(error,response){if(!error&&response.statusCode===200){var body=JSON.parse(response.body);var version=body[0];var qps=body[1];var sugf=body[2];var sugn=body[3];var wordf=body[4];var wordn=body[5];console.log(chalk.white('Current queries per second (v'+Math.round(version.value*100)/100.0+'): '+Math.round(qps.value*100)/100.0));console.log(chalk.white('Latency (/words): '+Math.round(wordf.value*100000)/100.0+' ms (median), '+Math.round(wordn.value*100000)/100.0+' ms (99 %ile)'));console.log(chalk.white('Latency (/sug): '+Math.round(sugf.value*100000)/100.0+' ms (median), '+Math.round(sugn.value*100000)/100.0+' ms (99 %ile)'));}else{throw new Error('HTTP '+error.statusCode+': '+error.reponse.body);}});var limit=config.dmuse.date.limit;var remain=config.dmuse.date.remain;var stamp=new Date(config.dmuse.date.stamp);var hours=df.differenceInHours(new Date(),stamp);var minutes=df.differenceInMinutes(new Date(),stamp);console.log(chalk.white(remain+'/'+limit+' requests remain today, will reset in '+(23-hours)+' hours, '+(59-minutes)+' minutes.'));};

@@ -1,1 +0,1 @@

'use strict';/* eslint max-len:0 */var themes=require('../themes');var tools=require('../tools');var _=require('lodash');var chalk=require('chalk');var moment=require('moment');var http=require('good-guy-http')();var noon=require('noon');var xml2js=require('xml2js');var CFILE=process.env.HOME+'/.leximaven.noon';exports.command='onelook <word>';exports.aliases=['one','ol'];exports.desc='Onelook definitions';exports.builder={out:{alias:'o',desc:'Write cson, json, noon, plist, yaml, xml',default:'',type:'string'},force:{alias:'f',desc:'Force overwriting outfile',default:false,type:'boolean'},save:{alias:'s',desc:'Save flags to config file',default:false,type:'boolean'},links:{alias:'l',desc:'Include resource links',default:false,type:'boolean'}};exports.handler=function(argv){tools.checkConfig(CFILE);var config=noon.load(CFILE);var proceed=false;var reset=false;var checkStamp=tools.limitOnelook(config);config=checkStamp[0];proceed=checkStamp[1];reset=checkStamp[2];var stamp=new Date(config.onelook.date.stamp);var hours=moment(new Date()).diff(stamp,'hours');var minutes=moment(new Date()).diff(stamp,'minutes');if(proceed){(function(){var userConfig={onelook:{links:argv.l}};if(config.merge)config=_.merge({},config,userConfig);if(argv.s&&config.merge)noon.save(CFILE,config);if(argv.s&&!config.merge)throw new Error("Can't save user config, set option merge to true.");var theme=themes.loadTheme(config.theme);if(config.verbose)themes.label(theme,'down','Onelook');var acont=[];acont.push(argv.word);if(argv._.length>1){for(var i=0;i<=argv._.length-1;i++){if(argv._[i]!=='onelook'&&argv._[i]!=='one'&&argv._[i]!=='ol')acont.push(argv._[i]);}}var url='http://onelook.com/?xml=1&w='+acont.join('+');url=encodeURI(url);var tofile={type:'onelook',source:'http://www.onelook.com',url:url};var ctstyle=_.get(chalk,theme.content.style);http({url:url},function(error,response){if(!error&&response.statusCode===200){if(response.headers['x-gg-state']==='cached'){config.onelook.date.remain++;noon.save(CFILE,config);if(config.usage)console.log('Cached response, not decrementing usage.');}var body=response.body;var parser=new xml2js.Parser();parser.parseString(body,function(err,result){if(!err){var resp=result.OLResponse;var phrase=resp.OLPhrases[0];var similar=resp.OLSimilar[0];var quickdef=resp.OLQuickDef;var resources=resp.OLRes;themes.label(theme,'down','Definition');if(Array.isArray(quickdef)&&quickdef.length>1){for(var _i=0;_i<=quickdef.length-1;_i++){var item=quickdef[_i];item=item.replace(/&lt;|&gt;|\n|\/i/g,'');item=item.replace(/i"/g,'"');console.log(ctstyle(item));tofile[['definition'+_i]]=item;}}else{var definition=quickdef[0].replace(/&lt;|&gt;|\n|\/i/g,'');console.log(ctstyle(definition));tofile.definition=definition;}if(phrase){var phrases=phrase.replace(/\n/g,'');themes.label(theme,'down','Phrases',phrases);tofile.phrase=phrases;}if(similar){var sim=similar.replace(/\n/g,'');themes.label(theme,'down','Similar',sim);tofile.sim=sim;}if(config.onelook.links){themes.label(theme,'down','Resources');for(var _i2=0;_i2<=resources.length-1;_i2++){var _item=resources[_i2];var res=tools.arrToStr(_item.OLResName).replace(/\n/g,'');var link=tools.arrToStr(_item.OLResLink).replace(/\n/g,'');var home=tools.arrToStr(_item.OLResHomeLink).replace(/\n/g,'');themes.label(theme,'right',res,link);tofile[['res'+_i2]]=res;tofile[['link'+_i2]]=link;tofile[['home'+_i2]]=home;}}if(argv.o)tools.outFile(argv.o,argv.f,tofile);if(config.usage){if(reset){console.log('Timestamp expired, reset usage limits.');console.log(config.onelook.date.remain+'/'+config.onelook.date.limit+' requests remaining today.');}else console.log(config.onelook.date.remain+'/'+config.onelook.date.limit+' requests remaining today, will reset in '+(23-hours)+' hours, '+(59-minutes)+' minutes.');}}else{throw new Error(err);}});}else throw new Error('HTTP '+error.statusCode+': '+error.reponse.body);});})();}else throw new Error('Reached today\'s usage limit of '+config.onelook.date.limit+'.');};
'use strict';/* eslint max-len:0 */var themes=require('../themes');var tools=require('../tools');var _=require('lodash');var df=require('date-fns');var chalk=require('chalk');var http=require('good-guy-http')();var noon=require('noon');var xml2js=require('xml2js');var CFILE=process.env.HOME+'/.leximaven.noon';exports.command='onelook <word>';exports.aliases=['one','ol'];exports.desc='Onelook definitions';exports.builder={out:{alias:'o',desc:'Write cson, json, noon, plist, yaml, xml',default:'',type:'string'},force:{alias:'f',desc:'Force overwriting outfile',default:false,type:'boolean'},save:{alias:'s',desc:'Save flags to config file',default:false,type:'boolean'},links:{alias:'l',desc:'Include resource links',default:false,type:'boolean'}};exports.handler=function(argv){tools.checkConfig(CFILE);var config=noon.load(CFILE);var proceed=false;var reset=false;var checkStamp=tools.limitOnelook(config);config=checkStamp[0];proceed=checkStamp[1];reset=checkStamp[2];var stamp=new Date(config.onelook.date.stamp);var hours=df.differenceInHours(new Date(),stamp);var minutes=df.differenceInMinutes(new Date(),stamp);if(proceed){(function(){var userConfig={onelook:{links:argv.l}};if(config.merge)config=_.merge({},config,userConfig);if(argv.s&&config.merge)noon.save(CFILE,config);if(argv.s&&!config.merge)throw new Error("Can't save user config, set option merge to true.");var theme=themes.loadTheme(config.theme);if(config.verbose)themes.label(theme,'down','Onelook');var acont=[];acont.push(argv.word);if(argv._.length>1){for(var i=0;i<=argv._.length-1;i++){if(argv._[i]!=='onelook'&&argv._[i]!=='one'&&argv._[i]!=='ol')acont.push(argv._[i]);}}var url='http://onelook.com/?xml=1&w='+acont.join('+');url=encodeURI(url);var tofile={type:'onelook',source:'http://www.onelook.com',url:url};var ctstyle=_.get(chalk,theme.content.style);http({url:url},function(error,response){if(!error&&response.statusCode===200){if(response.headers['x-gg-state']==='cached'){config.onelook.date.remain++;noon.save(CFILE,config);if(config.usage)console.log('Cached response, not decrementing usage.');}var body=response.body;var parser=new xml2js.Parser();parser.parseString(body,function(err,result){if(!err){var resp=result.OLResponse;var phrase=resp.OLPhrases[0];var similar=resp.OLSimilar[0];var quickdef=resp.OLQuickDef;var resources=resp.OLRes;themes.label(theme,'down','Definition');if(Array.isArray(quickdef)&&quickdef.length>1){for(var _i=0;_i<=quickdef.length-1;_i++){var item=quickdef[_i];item=item.replace(/&lt;|&gt;|\n|\/i/g,'');item=item.replace(/i"/g,'"');console.log(ctstyle(item));tofile[['definition'+_i]]=item;}}else{var definition=quickdef[0].replace(/&lt;|&gt;|\n|\/i/g,'');console.log(ctstyle(definition));tofile.definition=definition;}if(phrase){var phrases=phrase.replace(/\n/g,'');themes.label(theme,'down','Phrases',phrases);tofile.phrase=phrases;}if(similar){var sim=similar.replace(/\n/g,'');themes.label(theme,'down','Similar',sim);tofile.sim=sim;}if(config.onelook.links){themes.label(theme,'down','Resources');for(var _i2=0;_i2<=resources.length-1;_i2++){var _item=resources[_i2];var res=tools.arrToStr(_item.OLResName).replace(/\n/g,'');var link=tools.arrToStr(_item.OLResLink).replace(/\n/g,'');var home=tools.arrToStr(_item.OLResHomeLink).replace(/\n/g,'');themes.label(theme,'right',res,link);tofile[['res'+_i2]]=res;tofile[['link'+_i2]]=link;tofile[['home'+_i2]]=home;}}if(argv.o)tools.outFile(argv.o,argv.f,tofile);if(config.usage){if(reset){console.log('Timestamp expired, reset usage limits.');console.log(config.onelook.date.remain+'/'+config.onelook.date.limit+' requests remaining today.');}else console.log(config.onelook.date.remain+'/'+config.onelook.date.limit+' requests remaining today, will reset in '+(23-hours)+' hours, '+(59-minutes)+' minutes.');}}else{throw new Error(err);}});}else throw new Error('HTTP '+error.statusCode+': '+error.reponse.body);});})();}else throw new Error('Reached today\'s usage limit of '+config.onelook.date.limit+'.');};

@@ -1,1 +0,1 @@

'use strict';/* eslint max-len:0 */var themes=require('../../themes');var tools=require('../../tools');var _=require('lodash');var moment=require('moment');var http=require('good-guy-http')();var noon=require('noon');var CFILE=process.env.HOME+'/.leximaven.noon';exports.command='combine <query>';exports.aliases=['comb','portmanteau'];exports.desc='Rhymebrain portmanteaus';exports.builder={out:{alias:'o',desc:'Write cson, json, noon, plist, yaml, xml',default:'',type:'string'},force:{alias:'f',desc:'Force overwriting outfile',default:false,type:'boolean'},save:{alias:'s',desc:'Save flags to config file',default:false,type:'boolean'},lang:{alias:'l',desc:'ISO 639-1 language code',default:'en',type:'string'},max:{alias:'m',desc:'Max results to return',default:5,type:'number'}};exports.handler=function(argv){tools.checkConfig(CFILE);var config=noon.load(CFILE);var proceed=false;var reset=false;var stamp=new Date(config.rbrain.date.stamp);var minutes=moment(new Date()).diff(stamp,'minutes');var checkStamp=tools.limitRbrain(config);config=checkStamp[0];proceed=checkStamp[1];reset=checkStamp[2];if(proceed){(function(){var userConfig={rbrain:{combine:{lang:argv.l,max:argv.m}}};if(config.merge)config=_.merge({},config,userConfig);if(argv.s&&config.merge)noon.save(CFILE,config);if(argv.s&&!config.merge)throw new Error("Can't save user config, set option merge to true.");var theme=themes.loadTheme(config.theme);if(config.verbose)themes.label(theme,'down','Rhymebrain');var query=argv.query;var task='Portmanteaus';var prefix='http://rhymebrain.com/talk?function=get';var uri=''+prefix+task+'&word='+query+'&';var pcont=[];pcont.push('lang='+config.rbrain.combine.lang+'&');pcont.push('maxResults='+config.rbrain.combine.max+'&');var rest=pcont.join('');var url=''+uri+rest;url=encodeURI(url);themes.label(theme,'down',task);var tofile={type:'portmanteau',source:'http://rhymebrain.com',url:url};http({url:url},function(error,response){if(!error&&response.statusCode===200){if(response.headers['x-gg-state']==='cached'){config.rbrain.date.remain++;noon.save(CFILE,config);if(config.usage)console.log('Cached response, not decrementing usage.');}var list=JSON.parse(response.body);for(var i=0;i<=list.length-1;i++){var item=list[i];themes.label(theme,'right',item.source,item.combined);tofile[['set'+i]]=item.source;tofile[['portmanteau'+i]]=item.combined;}if(argv.o)tools.outFile(argv.o,argv.f,tofile);if(config.usage)reset?console.log('Timestamp expired, reset usage limits.\n'+config.rbrain.date.remain+'/'+config.rbrain.date.limit+' requests remaining this hour.'):console.log(config.rbrain.date.remain+'/'+config.rbrain.date.limit+' requests remaining this hour, will reset in '+(59-minutes)+' minutes.');}else throw new Error('HTTP '+error.statusCode+': '+error.reponse.body);});})();}else throw new Error('Reached this hour\'s usage limit of '+config.rbrain.date.limit+'.');};
'use strict';/* eslint max-len:0 */var themes=require('../../themes');var tools=require('../../tools');var _=require('lodash');var df=require('date-fns');var http=require('good-guy-http')();var noon=require('noon');var CFILE=process.env.HOME+'/.leximaven.noon';exports.command='combine <query>';exports.aliases=['comb','portmanteau'];exports.desc='Rhymebrain portmanteaus';exports.builder={out:{alias:'o',desc:'Write cson, json, noon, plist, yaml, xml',default:'',type:'string'},force:{alias:'f',desc:'Force overwriting outfile',default:false,type:'boolean'},save:{alias:'s',desc:'Save flags to config file',default:false,type:'boolean'},lang:{alias:'l',desc:'ISO 639-1 language code',default:'en',type:'string'},max:{alias:'m',desc:'Max results to return',default:5,type:'number'}};exports.handler=function(argv){tools.checkConfig(CFILE);var config=noon.load(CFILE);var proceed=false;var reset=false;var stamp=new Date(config.rbrain.date.stamp);var minutes=df.differenceInMinutes(new Date(),stamp);var checkStamp=tools.limitRbrain(config);config=checkStamp[0];proceed=checkStamp[1];reset=checkStamp[2];if(proceed){(function(){var userConfig={rbrain:{combine:{lang:argv.l,max:argv.m}}};if(config.merge)config=_.merge({},config,userConfig);if(argv.s&&config.merge)noon.save(CFILE,config);if(argv.s&&!config.merge)throw new Error("Can't save user config, set option merge to true.");var theme=themes.loadTheme(config.theme);if(config.verbose)themes.label(theme,'down','Rhymebrain');var query=argv.query;var task='Portmanteaus';var prefix='http://rhymebrain.com/talk?function=get';var uri=''+prefix+task+'&word='+query+'&';var pcont=[];pcont.push('lang='+config.rbrain.combine.lang+'&');pcont.push('maxResults='+config.rbrain.combine.max+'&');var rest=pcont.join('');var url=''+uri+rest;url=encodeURI(url);themes.label(theme,'down',task);var tofile={type:'portmanteau',source:'http://rhymebrain.com',url:url};http({url:url},function(error,response){if(!error&&response.statusCode===200){if(response.headers['x-gg-state']==='cached'){config.rbrain.date.remain++;noon.save(CFILE,config);if(config.usage)console.log('Cached response, not decrementing usage.');}var list=JSON.parse(response.body);for(var i=0;i<=list.length-1;i++){var item=list[i];themes.label(theme,'right',item.source,item.combined);tofile[['set'+i]]=item.source;tofile[['portmanteau'+i]]=item.combined;}if(argv.o)tools.outFile(argv.o,argv.f,tofile);if(config.usage)reset?console.log('Timestamp expired, reset usage limits.\n'+config.rbrain.date.remain+'/'+config.rbrain.date.limit+' requests remaining this hour.'):console.log(config.rbrain.date.remain+'/'+config.rbrain.date.limit+' requests remaining this hour, will reset in '+(59-minutes)+' minutes.');}else throw new Error('HTTP '+error.statusCode+': '+error.reponse.body);});})();}else throw new Error('Reached this hour\'s usage limit of '+config.rbrain.date.limit+'.');};

@@ -1,1 +0,1 @@

'use strict';/* eslint max-len:0 */var themes=require('../../themes');var tools=require('../../tools');var _=require('lodash');var chalk=require('chalk');var moment=require('moment');var http=require('good-guy-http')();var noon=require('noon');var CFILE=process.env.HOME+'/.leximaven.noon';exports.command='info <word>';exports.desc='Rhymebrain word info';exports.builder={out:{alias:'o',desc:'Write cson, json, noon, plist, yaml, xml',default:'',type:'string'},force:{alias:'f',desc:'Force overwriting outfile',default:false,type:'boolean'},save:{alias:'s',desc:'Save flags to config file',default:false,type:'boolean'},lang:{alias:'l',desc:'ISO 639-1 language code',default:'en',type:'string'}};exports.handler=function(argv){tools.checkConfig(CFILE);var config=noon.load(CFILE);var proceed=false;var reset=false;var stamp=new Date(config.rbrain.date.stamp);var minutes=moment(new Date()).diff(stamp,'minutes');var checkStamp=tools.limitRbrain(config);config=checkStamp[0];proceed=checkStamp[1];reset=checkStamp[2];if(proceed){(function(){var userConfig={rbrain:{info:{lang:argv.l}}};if(config.merge)config=_.merge({},config,userConfig);if(argv.s&&config.merge)noon.save(CFILE,config);if(argv.s&&!config.merge)throw new Error("Can't save user config, set option merge to true.");var theme=themes.loadTheme(config.theme);if(config.verbose)themes.label(theme,'down','Rhymebrain');var word=argv.word;var task='WordInfo';var prefix='http://rhymebrain.com/talk?function=get';var uri=''+prefix+task+'&word='+word+'&lang='+config.rbrain.info.lang;var url=encodeURI(uri);themes.label(theme,'down','Word Info');var tofile={type:'word info',source:'http://rhymebrain.com',url:url};var ctstyle=_.get(chalk,theme.content.style);http({url:url},function(error,response){if(!error&&response.statusCode===200){if(response.headers['x-gg-state']==='cached'){config.rbrain.date.remain++;noon.save(CFILE,config);if(config.usage)console.log('Cached response, not decrementing usage.');}var info=JSON.parse(response.body);themes.label(theme,'right','Arpabet',info.pron);themes.label(theme,'right','IPA',info.ipa);themes.label(theme,'right','Syllables',info.syllables);tofile.arpabet=info.pron;tofile.ipa=info.ipa;tofile.syllables=info.syllables;var flags=[];if(info.flags.match(/a/)){flags.push(ctstyle('['+chalk.red.bold('Offensive')+']'));tofile.offensive=true;}if(info.flags.match(/b/)){flags.push(ctstyle('[Found in dictionary]'));tofile.dict=true;}if(info.flags.match(/c/)){flags.push(ctstyle('[Trusted pronunciation, not generated]'));tofile.trusted=true;}themes.label(theme,'right','Word Flags',flags.join(''));if(argv.o)tools.outFile(argv.o,argv.f,tofile);reset?console.log('Timestamp expired, reset usage limits.\n'+config.rbrain.date.remain+'/'+config.rbrain.date.limit+' requests remaining this hour.'):console.log(config.rbrain.date.remain+'/'+config.rbrain.date.limit+' requests remaining this hour, will reset in '+(59-minutes)+' minutes.');}else throw new Error('HTTP '+error.statusCode+': '+error.reponse.body);});})();}else throw new Error('Reached this hour\'s usage limit of '+config.rbrain.date.limit+'.');};
'use strict';/* eslint max-len:0 */var themes=require('../../themes');var tools=require('../../tools');var _=require('lodash');var chalk=require('chalk');var df=require('date-fns');var http=require('good-guy-http')();var noon=require('noon');var CFILE=process.env.HOME+'/.leximaven.noon';exports.command='info <word>';exports.desc='Rhymebrain word info';exports.builder={out:{alias:'o',desc:'Write cson, json, noon, plist, yaml, xml',default:'',type:'string'},force:{alias:'f',desc:'Force overwriting outfile',default:false,type:'boolean'},save:{alias:'s',desc:'Save flags to config file',default:false,type:'boolean'},lang:{alias:'l',desc:'ISO 639-1 language code',default:'en',type:'string'}};exports.handler=function(argv){tools.checkConfig(CFILE);var config=noon.load(CFILE);var proceed=false;var reset=false;var stamp=new Date(config.rbrain.date.stamp);var minutes=df.differenceInMinutes(new Date(),stamp);var checkStamp=tools.limitRbrain(config);config=checkStamp[0];proceed=checkStamp[1];reset=checkStamp[2];if(proceed){(function(){var userConfig={rbrain:{info:{lang:argv.l}}};if(config.merge)config=_.merge({},config,userConfig);if(argv.s&&config.merge)noon.save(CFILE,config);if(argv.s&&!config.merge)throw new Error("Can't save user config, set option merge to true.");var theme=themes.loadTheme(config.theme);if(config.verbose)themes.label(theme,'down','Rhymebrain');var word=argv.word;var task='WordInfo';var prefix='http://rhymebrain.com/talk?function=get';var uri=''+prefix+task+'&word='+word+'&lang='+config.rbrain.info.lang;var url=encodeURI(uri);themes.label(theme,'down','Word Info');var tofile={type:'word info',source:'http://rhymebrain.com',url:url};var ctstyle=_.get(chalk,theme.content.style);http({url:url},function(error,response){if(!error&&response.statusCode===200){if(response.headers['x-gg-state']==='cached'){config.rbrain.date.remain++;noon.save(CFILE,config);if(config.usage)console.log('Cached response, not decrementing usage.');}var info=JSON.parse(response.body);themes.label(theme,'right','Arpabet',info.pron);themes.label(theme,'right','IPA',info.ipa);themes.label(theme,'right','Syllables',info.syllables);tofile.arpabet=info.pron;tofile.ipa=info.ipa;tofile.syllables=info.syllables;var flags=[];if(info.flags.match(/a/)){flags.push(ctstyle('['+chalk.red.bold('Offensive')+']'));tofile.offensive=true;}if(info.flags.match(/b/)){flags.push(ctstyle('[Found in dictionary]'));tofile.dict=true;}if(info.flags.match(/c/)){flags.push(ctstyle('[Trusted pronunciation, not generated]'));tofile.trusted=true;}themes.label(theme,'right','Word Flags',flags.join(''));if(argv.o)tools.outFile(argv.o,argv.f,tofile);reset?console.log('Timestamp expired, reset usage limits.\n'+config.rbrain.date.remain+'/'+config.rbrain.date.limit+' requests remaining this hour.'):console.log(config.rbrain.date.remain+'/'+config.rbrain.date.limit+' requests remaining this hour, will reset in '+(59-minutes)+' minutes.');}else throw new Error('HTTP '+error.statusCode+': '+error.reponse.body);});})();}else throw new Error('Reached this hour\'s usage limit of '+config.rbrain.date.limit+'.');};

@@ -1,1 +0,1 @@

'use strict';/* eslint max-len:0 */var themes=require('../../themes');var tools=require('../../tools');var _=require('lodash');var chalk=require('chalk');var moment=require('moment');var http=require('good-guy-http')();var noon=require('noon');var CFILE=process.env.HOME+'/.leximaven.noon';exports.command='rhyme <word>';exports.aliases=['rh'];exports.desc='Rhymebrain rhymes';exports.builder={out:{alias:'o',desc:'Write cson, json, noon, plist, yaml, xml',default:'',type:'string'},force:{alias:'f',desc:'Force overwriting outfile',default:false,type:'boolean'},save:{alias:'s',desc:'Save flags to config file',default:false,type:'boolean'},lang:{alias:'l',desc:'ISO 639-1 language code',default:'en',type:'string'},max:{alias:'m',desc:'Max results to return',default:5,type:'number'}};exports.handler=function(argv){tools.checkConfig(CFILE);var config=noon.load(CFILE);var proceed=false;var reset=false;var stamp=new Date(config.rbrain.date.stamp);var minutes=moment(new Date()).diff(stamp,'minutes');var checkStamp=tools.limitRbrain(config);config=checkStamp[0];proceed=checkStamp[1];reset=checkStamp[2];if(proceed){(function(){var userConfig={rbrain:{rhyme:{lang:argv.l,max:argv.m}}};if(config.merge)config=_.merge({},config,userConfig);if(argv.s&&config.merge)noon.save(CFILE,config);if(argv.s&&!config.merge)throw new Error("Can't save user config, set option merge to true.");var theme=themes.loadTheme(config.theme);if(config.verbose)themes.label(theme,'down','Rhymebrain');var word=argv.word;var task='Rhymes';var prefix='http://rhymebrain.com/talk?function=get';var uri=''+prefix+task+'&word='+word+'&';var pcont=[];pcont.push('lang='+config.rbrain.rhyme.lang+'&');pcont.push('maxResults='+config.rbrain.rhyme.max+'&');var rest=pcont.join('');var url=''+uri+rest;url=encodeURI(url);var tofile={type:'rhyme',source:'http://rhymebrain.com',url:url};var ctstyle=_.get(chalk,theme.content.style);http({url:url},function(error,response){if(!error&&response.statusCode===200){if(response.headers['x-gg-state']==='cached'){config.rbrain.date.remain++;noon.save(CFILE,config);if(config.usage)console.log('Cached response, not decrementing usage.');}var list=JSON.parse(response.body);var lcont=[];for(var i=0;i<=list.length-1;i++){lcont.push(list[i].word);}lcont.sort(function(a,b){if(a<b)return-1;if(a>b)return 1;return 0;});var rcont=[];for(var j=0;j<=lcont.length-1;j++){var item=lcont[j];rcont.push(ctstyle(item));item.score>=300?tofile[['hiscore'+j]]=item:tofile[['rhyme'+j]]=item;}rcont.sort();themes.label(theme,'right',task,rcont.join(', '));if(argv.o)tools.outFile(argv.o,argv.f,tofile);if(config.usage)reset?console.log('Timestamp expired, reset usage limits.\n'+config.rbrain.date.remain+'/'+config.rbrain.date.limit+' requests remaining this hour.'):console.log(config.rbrain.date.remain+'/'+config.rbrain.date.limit+' requests remaining this hour, will reset in '+(59-minutes)+' minutes.');}else throw new Error('HTTP '+error.statusCode+': '+error.reponse.body);});})();}else throw new Error('Reached this hour\'s usage limit of '+config.rbrain.date.limit+'.');};
'use strict';/* eslint max-len:0 */var themes=require('../../themes');var tools=require('../../tools');var _=require('lodash');var chalk=require('chalk');var df=require('date-fns');var http=require('good-guy-http')();var noon=require('noon');var CFILE=process.env.HOME+'/.leximaven.noon';exports.command='rhyme <word>';exports.aliases=['rh'];exports.desc='Rhymebrain rhymes';exports.builder={out:{alias:'o',desc:'Write cson, json, noon, plist, yaml, xml',default:'',type:'string'},force:{alias:'f',desc:'Force overwriting outfile',default:false,type:'boolean'},save:{alias:'s',desc:'Save flags to config file',default:false,type:'boolean'},lang:{alias:'l',desc:'ISO 639-1 language code',default:'en',type:'string'},max:{alias:'m',desc:'Max results to return',default:5,type:'number'}};exports.handler=function(argv){tools.checkConfig(CFILE);var config=noon.load(CFILE);var proceed=false;var reset=false;var stamp=new Date(config.rbrain.date.stamp);var minutes=df.differenceInMinutes(new Date(),stamp);var checkStamp=tools.limitRbrain(config);config=checkStamp[0];proceed=checkStamp[1];reset=checkStamp[2];if(proceed){(function(){var userConfig={rbrain:{rhyme:{lang:argv.l,max:argv.m}}};if(config.merge)config=_.merge({},config,userConfig);if(argv.s&&config.merge)noon.save(CFILE,config);if(argv.s&&!config.merge)throw new Error("Can't save user config, set option merge to true.");var theme=themes.loadTheme(config.theme);if(config.verbose)themes.label(theme,'down','Rhymebrain');var word=argv.word;var task='Rhymes';var prefix='http://rhymebrain.com/talk?function=get';var uri=''+prefix+task+'&word='+word+'&';var pcont=[];pcont.push('lang='+config.rbrain.rhyme.lang+'&');pcont.push('maxResults='+config.rbrain.rhyme.max+'&');var rest=pcont.join('');var url=''+uri+rest;url=encodeURI(url);var tofile={type:'rhyme',source:'http://rhymebrain.com',url:url};var ctstyle=_.get(chalk,theme.content.style);http({url:url},function(error,response){if(!error&&response.statusCode===200){if(response.headers['x-gg-state']==='cached'){config.rbrain.date.remain++;noon.save(CFILE,config);if(config.usage)console.log('Cached response, not decrementing usage.');}var list=JSON.parse(response.body);var lcont=[];for(var i=0;i<=list.length-1;i++){lcont.push(list[i].word);}lcont.sort(function(a,b){if(a<b)return-1;if(a>b)return 1;return 0;});var rcont=[];for(var j=0;j<=lcont.length-1;j++){var item=lcont[j];rcont.push(ctstyle(item));item.score>=300?tofile[['hiscore'+j]]=item:tofile[['rhyme'+j]]=item;}rcont.sort();themes.label(theme,'right',task,rcont.join(', '));if(argv.o)tools.outFile(argv.o,argv.f,tofile);if(config.usage)reset?console.log('Timestamp expired, reset usage limits.\n'+config.rbrain.date.remain+'/'+config.rbrain.date.limit+' requests remaining this hour.'):console.log(config.rbrain.date.remain+'/'+config.rbrain.date.limit+' requests remaining this hour, will reset in '+(59-minutes)+' minutes.');}else throw new Error('HTTP '+error.statusCode+': '+error.reponse.body);});})();}else throw new Error('Reached this hour\'s usage limit of '+config.rbrain.date.limit+'.');};

@@ -1,1 +0,1 @@

'use strict';var themes=require('../themes');var tools=require('../tools');var _=require('lodash');var child=require('child_process');var noon=require('noon');var CFILE=process.env.HOME+'/.leximaven.noon';exports.command='wordmap <word>';exports.aliases=['map','wm'];exports.desc='Maps of word info';exports.builder={limit:{alias:'l',desc:'Limits the number of results',default:1,type:'number'},save:{alias:'s',desc:'Save flags to config file',default:false,type:'boolean'}};exports.handler=function(argv){tools.checkConfig(CFILE);var config=noon.load(CFILE);var userConfig={wordmap:{limit:argv.l}};if(config.merge)config=_.merge({},config,userConfig);if(argv.s&&config.merge)noon.save(CFILE,config);if(argv.s&&!config.merge)throw new Error("Can't save user config, set option merge to true.");var theme=themes.loadTheme(config.theme);if(config.verbose)themes.label(theme,'down','Wordmap');var word=argv.word;var l=argv.l;var bin='';var dirExists=null;try{fs.statSync('bin/leximaven.js');dirExists=true;}catch(e){if(e.code==='ENOENT')dirExists=false;}dirExists?bin='bin/leximaven.js':bin=process.env.NODE_PATH+'/leximaven/bin/leximaven.js';child.spawnSync('node',[bin,'rbrain','combine','-m'+l,''+word],{stdio:'inherit'});child.spawnSync('node',[bin,'rbrain','info',''+word],{stdio:'inherit'});child.spawnSync('node',[bin,'rbrain','rhyme','-m'+l,''+word],{stdio:'inherit'});child.spawnSync('node',[bin,'wordnik','define','-l'+l,''+word],{stdio:'inherit'});child.spawnSync('node',[bin,'wordnik','example','-l'+l,''+word],{stdio:'inherit'});child.spawnSync('node',[bin,'wordnik','hyphen',''+word],{stdio:'inherit'});child.spawnSync('node',[bin,'wordnik','origin',''+word],{stdio:'inherit'});child.spawnSync('node',[bin,'wordnik','phrase','-l'+l,''+word],{stdio:'inherit'});child.spawnSync('node',[bin,'wordnik','pronounce','-l'+l,''+word],{stdio:'inherit'});child.spawnSync('node',[bin,'wordnik','relate','-l'+l,''+word],{stdio:'inherit'});child.spawnSync('node',[bin,'acronym',''+word],{stdio:'inherit'});child.spawnSync('node',[bin,'dmuse','-m'+l,'ml='+word],{stdio:'inherit'});child.spawnSync('node',[bin,'onelook',''+word],{stdio:'inherit'});child.spawnSync('node',[bin,'urban','-l'+l,''+word],{stdio:'inherit'});child.spawnSync('node',[bin,'anagram','-t'+l,''+word],{stdio:'inherit'});};
'use strict';var themes=require('../themes');var tools=require('../tools');var _=require('lodash');var child=require('child_process');var fs=require('fs');var noon=require('noon');var CFILE=process.env.HOME+'/.leximaven.noon';exports.command='wordmap <word>';exports.aliases=['map','wm'];exports.desc='Maps of word info';exports.builder={limit:{alias:'l',desc:'Limits the number of results',default:1,type:'number'},save:{alias:'s',desc:'Save flags to config file',default:false,type:'boolean'}};exports.handler=function(argv){tools.checkConfig(CFILE);var config=noon.load(CFILE);var userConfig={wordmap:{limit:argv.l}};if(config.merge)config=_.merge({},config,userConfig);if(argv.s&&config.merge)noon.save(CFILE,config);if(argv.s&&!config.merge)throw new Error("Can't save user config, set option merge to true.");var theme=themes.loadTheme(config.theme);if(config.verbose)themes.label(theme,'down','Wordmap');var word=argv.word;var l=argv.l;var bin='';var dirExists=null;try{fs.statSync('bin/leximaven.js');dirExists=true;}catch(e){if(e.code==='ENOENT')dirExists=false;}dirExists?bin='bin/leximaven.js':bin=process.env.NODE_PATH+'/leximaven/bin/leximaven.js';child.spawnSync('node',[bin,'rbrain','combine','-m'+l,''+word],{stdio:'inherit'});child.spawnSync('node',[bin,'rbrain','info',''+word],{stdio:'inherit'});child.spawnSync('node',[bin,'rbrain','rhyme','-m'+l,''+word],{stdio:'inherit'});child.spawnSync('node',[bin,'wordnik','define','-l'+l,''+word],{stdio:'inherit'});child.spawnSync('node',[bin,'wordnik','example','-l'+l,''+word],{stdio:'inherit'});child.spawnSync('node',[bin,'wordnik','hyphen',''+word],{stdio:'inherit'});child.spawnSync('node',[bin,'wordnik','origin',''+word],{stdio:'inherit'});child.spawnSync('node',[bin,'wordnik','phrase','-l'+l,''+word],{stdio:'inherit'});child.spawnSync('node',[bin,'wordnik','pronounce','-l'+l,''+word],{stdio:'inherit'});child.spawnSync('node',[bin,'wordnik','relate','-l'+l,''+word],{stdio:'inherit'});child.spawnSync('node',[bin,'acronym',''+word],{stdio:'inherit'});child.spawnSync('node',[bin,'dmuse','-m'+l,'ml='+word],{stdio:'inherit'});child.spawnSync('node',[bin,'onelook',''+word],{stdio:'inherit'});child.spawnSync('node',[bin,'urban','-l'+l,''+word],{stdio:'inherit'});child.spawnSync('node',[bin,'anagram','-t'+l,''+word],{stdio:'inherit'});};

@@ -1,1 +0,1 @@

'use strict';/* eslint max-len:0 */var themes=require('../../themes');var tools=require('../../tools');var _=require('lodash');var chalk=require('chalk');var moment=require('moment');var http=require('good-guy-http')();var noon=require('noon');var CFILE=process.env.HOME+'/.leximaven.noon';exports.command='define <word>';exports.aliases=['def'];exports.desc='Wordnik definitions';exports.builder={out:{alias:'o',desc:'Write cson, json, noon, plist, yaml, xml',default:'',type:'string'},force:{alias:'f',desc:'Force overwriting outfile',default:false,type:'boolean'},save:{alias:'s',desc:'Save flags to config file',default:false,type:'boolean'},limit:{alias:'l',desc:'Limit number of results',default:5,type:'number'},canon:{alias:'c',desc:'Use canonical',default:false,type:'boolean'},defdict:{alias:'d',desc:"CSV list of dictionaries or 'all'",default:'all',type:'string'},part:{alias:'p',desc:'CSV list of parts of speech. See http://developer.wordnik.com/docs.html for list of parts.',default:'',type:'string'}};exports.handler=function(argv){if(process.env.WORDNIK===undefined)throw new Error('Put an API key in environment variable WORDNIK per documentation.');tools.checkConfig(CFILE);var config=noon.load(CFILE);var proceed=false;var reset=false;var stamp=new Date(config.wordnik.date.stamp);var minutes=moment(new Date()).diff(stamp,'minutes');var checkStamp=tools.limitWordnik(config);config=checkStamp[0];proceed=checkStamp[1];reset=checkStamp[2];if(proceed){(function(){var userConfig={wordnik:{define:{canon:argv.c,limit:argv.l,defdict:argv.d,part:argv.p}}};if(config.merge)config=_.merge({},config,userConfig);if(argv.s&&config.merge)noon.save(CFILE,config);if(argv.s&&!config.merge)throw new Error("Can't save user config, set option merge to true.");var theme=themes.loadTheme(config.theme);if(config.verbose)themes.label(theme,'down','Wordnik');var word=argv.word;var task='definitions';var prefix='http://api.wordnik.com:80/v4/word.json/';var apikey=process.env.WORDNIK;var uri=''+prefix+word+'/'+task+'?';var pcont=[];pcont.push('useCanonical='+config.wordnik.define.canon+'&');pcont.push('sourceDictionaries='+config.wordnik.define.defdict+'&');pcont.push('includeRelated=false&');pcont.push('includeTags=false&');pcont.push('limit='+config.wordnik.define.limit+'&');pcont.push('partOfSpeech='+config.wordnik.define.part+'&');pcont.push('api_key='+apikey);var rest=pcont.join('');var url=''+uri+rest;url=encodeURI(url);var tofile={type:'definition',source:'http://www.wordnik.com'};var cstyle=_.get(chalk,theme.connector.style);var ctstyle=_.get(chalk,theme.content.style);var uline=_.get(chalk,theme.content.style+'.underline');var conn=cstyle(theme.connector.str);http({url:url},function(error,response){if(!error&&response.statusCode===200){if(response.headers['x-gg-state']==='cached'){config.wordnik.date.remain++;noon.save(CFILE,config);if(config.usage)console.log('Cached response, not decrementing usage.');}var list=JSON.parse(response.body);for(var i=0;i<=list.length-1;i++){var item=list[i];var icont=[];icont.push(ctstyle(item.text+' '));icont.push(uline(item.partOfSpeech));icont.push(conn);icont.push(ctstyle(item.sourceDictionary));themes.label(theme,'right','Definition',icont.join(''));tofile[['text'+i]]=item.text;tofile[['deftype'+i]]=item.partOfSpeech;tofile[['source'+i]]=item.sourceDictionary;}if(argv.o)tools.outFile(argv.o,argv.f,tofile);if(config.usage)reset?console.log('Timestamp expired, not decrementing usage.\n'+config.wordnik.date.remain+'/'+config.wordnik.date.limit+' requests remaining this hour.'):console.log(config.wordnik.date.remain+'/'+config.wordnik.date.limit+' requests remaining this hour, will reset in '+(59-minutes)+' minutes.');}else throw new Error('HTTP '+error.statusCode+': '+error.reponse.body);});})();}else throw new Error('Reached this hour\'s usage limit of '+config.wordnik.date.limit+'.');};
'use strict';/* eslint max-len:0 */var themes=require('../../themes');var tools=require('../../tools');var _=require('lodash');var df=require('date-fns');var chalk=require('chalk');var http=require('good-guy-http')();var noon=require('noon');var CFILE=process.env.HOME+'/.leximaven.noon';exports.command='define <word>';exports.aliases=['def'];exports.desc='Wordnik definitions';exports.builder={out:{alias:'o',desc:'Write cson, json, noon, plist, yaml, xml',default:'',type:'string'},force:{alias:'f',desc:'Force overwriting outfile',default:false,type:'boolean'},save:{alias:'s',desc:'Save flags to config file',default:false,type:'boolean'},limit:{alias:'l',desc:'Limit number of results',default:5,type:'number'},canon:{alias:'c',desc:'Use canonical',default:false,type:'boolean'},defdict:{alias:'d',desc:"CSV list of dictionaries or 'all'",default:'all',type:'string'},part:{alias:'p',desc:'CSV list of parts of speech. See http://developer.wordnik.com/docs.html for list of parts.',default:'',type:'string'}};exports.handler=function(argv){if(process.env.WORDNIK===undefined)throw new Error('Put an API key in environment variable WORDNIK per documentation.');tools.checkConfig(CFILE);var config=noon.load(CFILE);var proceed=false;var reset=false;var stamp=new Date(config.wordnik.date.stamp);var minutes=df.differenceInMinutes(new Date(),stamp);var checkStamp=tools.limitWordnik(config);config=checkStamp[0];proceed=checkStamp[1];reset=checkStamp[2];if(proceed){(function(){var userConfig={wordnik:{define:{canon:argv.c,limit:argv.l,defdict:argv.d,part:argv.p}}};if(config.merge)config=_.merge({},config,userConfig);if(argv.s&&config.merge)noon.save(CFILE,config);if(argv.s&&!config.merge)throw new Error("Can't save user config, set option merge to true.");var theme=themes.loadTheme(config.theme);if(config.verbose)themes.label(theme,'down','Wordnik');var word=argv.word;var task='definitions';var prefix='http://api.wordnik.com:80/v4/word.json/';var apikey=process.env.WORDNIK;var uri=''+prefix+word+'/'+task+'?';var pcont=[];pcont.push('useCanonical='+config.wordnik.define.canon+'&');pcont.push('sourceDictionaries='+config.wordnik.define.defdict+'&');pcont.push('includeRelated=false&');pcont.push('includeTags=false&');pcont.push('limit='+config.wordnik.define.limit+'&');pcont.push('partOfSpeech='+config.wordnik.define.part+'&');pcont.push('api_key='+apikey);var rest=pcont.join('');var url=''+uri+rest;url=encodeURI(url);var tofile={type:'definition',source:'http://www.wordnik.com'};var cstyle=_.get(chalk,theme.connector.style);var ctstyle=_.get(chalk,theme.content.style);var uline=_.get(chalk,theme.content.style+'.underline');var conn=cstyle(theme.connector.str);http({url:url},function(error,response){if(!error&&response.statusCode===200){if(response.headers['x-gg-state']==='cached'){config.wordnik.date.remain++;noon.save(CFILE,config);if(config.usage)console.log('Cached response, not decrementing usage.');}var list=JSON.parse(response.body);for(var i=0;i<=list.length-1;i++){var item=list[i];var icont=[];icont.push(ctstyle(item.text+' '));icont.push(uline(item.partOfSpeech));icont.push(conn);icont.push(ctstyle(item.sourceDictionary));themes.label(theme,'right','Definition',icont.join(''));tofile[['text'+i]]=item.text;tofile[['deftype'+i]]=item.partOfSpeech;tofile[['source'+i]]=item.sourceDictionary;}if(argv.o)tools.outFile(argv.o,argv.f,tofile);if(config.usage)reset?console.log('Timestamp expired, not decrementing usage.\n'+config.wordnik.date.remain+'/'+config.wordnik.date.limit+' requests remaining this hour.'):console.log(config.wordnik.date.remain+'/'+config.wordnik.date.limit+' requests remaining this hour, will reset in '+(59-minutes)+' minutes.');}else throw new Error('HTTP '+error.statusCode+': '+error.reponse.body);});})();}else throw new Error('Reached this hour\'s usage limit of '+config.wordnik.date.limit+'.');};

@@ -1,1 +0,1 @@

'use strict';/* eslint max-len:0 */var themes=require('../../themes');var tools=require('../../tools');var _=require('lodash');var moment=require('moment');var http=require('good-guy-http')();var noon=require('noon');var CFILE=process.env.HOME+'/.leximaven.noon';exports.command='example <word>';exports.aliases=['ex'];exports.desc='Wordnik examples';exports.builder={out:{alias:'o',desc:'Write cson, json, noon, plist, yaml, xml',default:'',type:'string'},force:{alias:'f',desc:'Force overwriting outfile',default:false,type:'boolean'},save:{alias:'s',desc:'Save flags to config file',default:false,type:'boolean'},limit:{alias:'l',desc:'Limit number of results',default:5,type:'number'},canon:{alias:'c',desc:'Use canonical',default:false,type:'boolean'},skip:{alias:'k',desc:'Number of results to skip',default:0,type:'number'}};exports.handler=function(argv){if(process.env.WORDNIK===undefined)throw new Error('Put an API key in environment variable WORDNIK per documentation.');tools.checkConfig(CFILE);var config=noon.load(CFILE);var proceed=false;var reset=false;var stamp=new Date(config.wordnik.date.stamp);var minutes=moment(new Date()).diff(stamp,'minutes');var checkStamp=tools.limitWordnik(config);config=checkStamp[0];proceed=checkStamp[1];reset=checkStamp[2];if(proceed){(function(){var userConfig={wordnik:{example:{canon:argv.c,limit:argv.l,skip:argv.k}}};if(config.merge)config=_.merge({},config,userConfig);if(argv.s&&config.merge)noon.save(CFILE,config);if(argv.s&&!config.merge)throw new Error("Can't save user config, set option merge to true.");var theme=themes.loadTheme(config.theme);if(config.verbose)themes.label(theme,'down','Wordnik');var word=argv.word;var task='examples';var prefix='http://api.wordnik.com:80/v4/word.json/';var apikey=process.env.WORDNIK;var uri=''+prefix+word+'/'+task+'?';var pcont=[];pcont.push('useCanonical='+config.wordnik.example.canon+'&');pcont.push('includeDuplicates=false&');pcont.push('limit='+config.wordnik.example.limit+'&');!config.wordnik.example.skip?pcont.push('skip=0&'):pcont.push('skip='+config.wordnik.example.skip+'&');pcont.push('api_key='+apikey);var rest=pcont.join('');var url=''+uri+rest;url=encodeURI(url);var tofile={type:'example',source:'http://www.wordnik.com'};http({url:url},function(error,response){if(!error&&response.statusCode===200){if(response.headers['x-gg-state']==='cached'){config.wordnik.date.remain++;noon.save(CFILE,config);if(config.usage)console.log('Cached response, not decrementing usage.');}var body=JSON.parse(response.body);var list=body.examples;for(var i=0;i<=list.length-1;i++){var item=list[i];themes.label(theme,'right','Example',item.text);tofile[['example'+i]]=item.text;}if(argv.o)tools.outFile(argv.o,argv.f,tofile);if(config.usage)reset?console.log('Timestamp expired, not decrementing usage.\n'+config.wordnik.date.remain+'/'+config.wordnik.date.limit+' requests remaining this hour.'):console.log(config.wordnik.date.remain+'/'+config.wordnik.date.limit+' requests remaining this hour, will reset in '+(59-minutes)+' minutes.');}else throw new Error('HTTP '+error.statusCode+': '+error.reponse.body);});})();}else throw new Error('Reached this hour\'s usage limit of '+config.wordnik.date.limit+'.');};
'use strict';/* eslint max-len:0 */var themes=require('../../themes');var tools=require('../../tools');var _=require('lodash');var df=require('date-fns');var http=require('good-guy-http')();var noon=require('noon');var CFILE=process.env.HOME+'/.leximaven.noon';exports.command='example <word>';exports.aliases=['ex'];exports.desc='Wordnik examples';exports.builder={out:{alias:'o',desc:'Write cson, json, noon, plist, yaml, xml',default:'',type:'string'},force:{alias:'f',desc:'Force overwriting outfile',default:false,type:'boolean'},save:{alias:'s',desc:'Save flags to config file',default:false,type:'boolean'},limit:{alias:'l',desc:'Limit number of results',default:5,type:'number'},canon:{alias:'c',desc:'Use canonical',default:false,type:'boolean'},skip:{alias:'k',desc:'Number of results to skip',default:0,type:'number'}};exports.handler=function(argv){if(process.env.WORDNIK===undefined)throw new Error('Put an API key in environment variable WORDNIK per documentation.');tools.checkConfig(CFILE);var config=noon.load(CFILE);var proceed=false;var reset=false;var stamp=new Date(config.wordnik.date.stamp);var minutes=df.differenceInMinutes(new Date(),stamp);var checkStamp=tools.limitWordnik(config);config=checkStamp[0];proceed=checkStamp[1];reset=checkStamp[2];if(proceed){(function(){var userConfig={wordnik:{example:{canon:argv.c,limit:argv.l,skip:argv.k}}};if(config.merge)config=_.merge({},config,userConfig);if(argv.s&&config.merge)noon.save(CFILE,config);if(argv.s&&!config.merge)throw new Error("Can't save user config, set option merge to true.");var theme=themes.loadTheme(config.theme);if(config.verbose)themes.label(theme,'down','Wordnik');var word=argv.word;var task='examples';var prefix='http://api.wordnik.com:80/v4/word.json/';var apikey=process.env.WORDNIK;var uri=''+prefix+word+'/'+task+'?';var pcont=[];pcont.push('useCanonical='+config.wordnik.example.canon+'&');pcont.push('includeDuplicates=false&');pcont.push('limit='+config.wordnik.example.limit+'&');!config.wordnik.example.skip?pcont.push('skip=0&'):pcont.push('skip='+config.wordnik.example.skip+'&');pcont.push('api_key='+apikey);var rest=pcont.join('');var url=''+uri+rest;url=encodeURI(url);var tofile={type:'example',source:'http://www.wordnik.com'};http({url:url},function(error,response){if(!error&&response.statusCode===200){if(response.headers['x-gg-state']==='cached'){config.wordnik.date.remain++;noon.save(CFILE,config);if(config.usage)console.log('Cached response, not decrementing usage.');}var body=JSON.parse(response.body);var list=body.examples;for(var i=0;i<=list.length-1;i++){var item=list[i];themes.label(theme,'right','Example',item.text);tofile[['example'+i]]=item.text;}if(argv.o)tools.outFile(argv.o,argv.f,tofile);if(config.usage)reset?console.log('Timestamp expired, not decrementing usage.\n'+config.wordnik.date.remain+'/'+config.wordnik.date.limit+' requests remaining this hour.'):console.log(config.wordnik.date.remain+'/'+config.wordnik.date.limit+' requests remaining this hour, will reset in '+(59-minutes)+' minutes.');}else throw new Error('HTTP '+error.statusCode+': '+error.reponse.body);});})();}else throw new Error('Reached this hour\'s usage limit of '+config.wordnik.date.limit+'.');};

@@ -1,1 +0,1 @@

'use strict';/* eslint max-len:0 */var themes=require('../../themes');var tools=require('../../tools');var _=require('lodash');var chalk=require('chalk');var moment=require('moment');var http=require('good-guy-http')();var noon=require('noon');var CFILE=process.env.HOME+'/.leximaven.noon';exports.command='hyphen <word>';exports.aliases=['hyphenate','hy'];exports.desc='Wordnik hyphenations';exports.builder={out:{alias:'o',desc:'Write cson, json, noon, plist, yaml, xml',default:'',type:'string'},force:{alias:'f',desc:'Force overwriting outfile',default:false,type:'boolean'},save:{alias:'s',desc:'Save flags to config file',default:false,type:'boolean'},limit:{alias:'l',desc:'Limit number of results',default:5,type:'number'},canon:{alias:'c',desc:'Use canonical',default:false,type:'boolean'},dict:{alias:'d',desc:'Source dictionary ahd, century, wiktionary, webster, wordnet',default:'all',type:'string'}};exports.handler=function(argv){if(process.env.WORDNIK===undefined)throw new Error('Put an API key in environment variable WORDNIK per documentation.');tools.checkConfig(CFILE);var config=noon.load(CFILE);var proceed=false;var reset=false;var stamp=new Date(config.wordnik.date.stamp);var minutes=moment(new Date()).diff(stamp,'minutes');var checkStamp=tools.limitWordnik(config);config=checkStamp[0];proceed=checkStamp[1];reset=checkStamp[2];if(proceed){(function(){var userConfig={wordnik:{hyphen:{canon:argv.c,dict:argv.d,limit:argv.l}}};if(config.merge)config=_.merge({},config,userConfig);if(argv.s&&config.merge)noon.save(CFILE,config);if(argv.s&&!config.merge)throw new Error("Can't save user config, set option merge to true.");var theme=themes.loadTheme(config.theme);if(config.verbose)themes.label(theme,'down','Wordnik');var word=argv.word;var task='hyphenation';var prefix='http://api.wordnik.com:80/v4/word.json/';var apikey=process.env.WORDNIK;var uri=''+prefix+word+'/'+task+'?';var pcont=[];pcont.push('useCanonical='+config.wordnik.hyphen.canon+'&');if(argv.d!=='all')pcont.push('sourceDictionary='+config.wordnik.hyphen.dict+'&');pcont.push('limit='+config.wordnik.hyphen.limit+'&');pcont.push('api_key='+apikey);var rest=pcont.join('');var url=''+uri+rest;url=encodeURI(url);var tofile={type:'hyphenation',source:'http://www.wordnik.com'};var ctstyle=_.get(chalk,theme.content.style);http({url:url},function(error,response){if(!error&&response.statusCode===200){if(response.headers['x-gg-state']==='cached'){config.wordnik.date.remain++;noon.save(CFILE,config);if(config.usage)console.log('Cached response, not decrementing usage.');}var list=JSON.parse(response.body);var hcont=[];for(var i=0;i<=list.length-1;i++){var item=list[i];if(item.type==='stress'){hcont.push(''+chalk.red.bold(item.text));tofile[['stress'+i]]=item.text;}else if(item.type==='secondary stress'){hcont.push(ctstyle(item.text));tofile[['secondary'+i]]=item.text;}else{hcont.push(ctstyle(item.text));tofile[['syllable'+i]]=item.text;}if(i<list.length-1)hcont.push(ctstyle('-'));}themes.label(theme,'right','Hyphenation',hcont.join(''));if(argv.o)tools.outFile(argv.o,argv.f,tofile);if(config.usage)reset?console.log('Timestamp expired, not decrementing usage.\n'+config.wordnik.date.remain+'/'+config.wordnik.date.limit+' requests remaining this hour.'):console.log(config.wordnik.date.remain+'/'+config.wordnik.date.limit+' requests remaining this hour, will reset in '+(59-minutes)+' minutes.');}else throw new Error('HTTP '+error.statusCode+': '+error.reponse.body);});})();}else throw new Error('Reached this hour\'s usage limit of '+config.wordnik.date.limit+'.');};
'use strict';/* eslint max-len:0 */var themes=require('../../themes');var tools=require('../../tools');var _=require('lodash');var chalk=require('chalk');var df=require('date-fns');var http=require('good-guy-http')();var noon=require('noon');var CFILE=process.env.HOME+'/.leximaven.noon';exports.command='hyphen <word>';exports.aliases=['hyphenate','hy'];exports.desc='Wordnik hyphenations';exports.builder={out:{alias:'o',desc:'Write cson, json, noon, plist, yaml, xml',default:'',type:'string'},force:{alias:'f',desc:'Force overwriting outfile',default:false,type:'boolean'},save:{alias:'s',desc:'Save flags to config file',default:false,type:'boolean'},limit:{alias:'l',desc:'Limit number of results',default:5,type:'number'},canon:{alias:'c',desc:'Use canonical',default:false,type:'boolean'},dict:{alias:'d',desc:'Source dictionary ahd, century, wiktionary, webster, wordnet',default:'all',type:'string'}};exports.handler=function(argv){if(process.env.WORDNIK===undefined)throw new Error('Put an API key in environment variable WORDNIK per documentation.');tools.checkConfig(CFILE);var config=noon.load(CFILE);var proceed=false;var reset=false;var stamp=new Date(config.wordnik.date.stamp);var minutes=df.differenceInMinutes(new Date(),stamp);var checkStamp=tools.limitWordnik(config);config=checkStamp[0];proceed=checkStamp[1];reset=checkStamp[2];if(proceed){(function(){var userConfig={wordnik:{hyphen:{canon:argv.c,dict:argv.d,limit:argv.l}}};if(config.merge)config=_.merge({},config,userConfig);if(argv.s&&config.merge)noon.save(CFILE,config);if(argv.s&&!config.merge)throw new Error("Can't save user config, set option merge to true.");var theme=themes.loadTheme(config.theme);if(config.verbose)themes.label(theme,'down','Wordnik');var word=argv.word;var task='hyphenation';var prefix='http://api.wordnik.com:80/v4/word.json/';var apikey=process.env.WORDNIK;var uri=''+prefix+word+'/'+task+'?';var pcont=[];pcont.push('useCanonical='+config.wordnik.hyphen.canon+'&');if(argv.d!=='all')pcont.push('sourceDictionary='+config.wordnik.hyphen.dict+'&');pcont.push('limit='+config.wordnik.hyphen.limit+'&');pcont.push('api_key='+apikey);var rest=pcont.join('');var url=''+uri+rest;url=encodeURI(url);var tofile={type:'hyphenation',source:'http://www.wordnik.com'};var ctstyle=_.get(chalk,theme.content.style);http({url:url},function(error,response){if(!error&&response.statusCode===200){if(response.headers['x-gg-state']==='cached'){config.wordnik.date.remain++;noon.save(CFILE,config);if(config.usage)console.log('Cached response, not decrementing usage.');}var list=JSON.parse(response.body);var hcont=[];for(var i=0;i<=list.length-1;i++){var item=list[i];if(item.type==='stress'){hcont.push(''+chalk.red.bold(item.text));tofile[['stress'+i]]=item.text;}else if(item.type==='secondary stress'){hcont.push(ctstyle(item.text));tofile[['secondary'+i]]=item.text;}else{hcont.push(ctstyle(item.text));tofile[['syllable'+i]]=item.text;}if(i<list.length-1)hcont.push(ctstyle('-'));}themes.label(theme,'right','Hyphenation',hcont.join(''));if(argv.o)tools.outFile(argv.o,argv.f,tofile);if(config.usage)reset?console.log('Timestamp expired, not decrementing usage.\n'+config.wordnik.date.remain+'/'+config.wordnik.date.limit+' requests remaining this hour.'):console.log(config.wordnik.date.remain+'/'+config.wordnik.date.limit+' requests remaining this hour, will reset in '+(59-minutes)+' minutes.');}else throw new Error('HTTP '+error.statusCode+': '+error.reponse.body);});})();}else throw new Error('Reached this hour\'s usage limit of '+config.wordnik.date.limit+'.');};

@@ -1,1 +0,1 @@

'use strict';/* eslint max-len:0 */var themes=require('../../themes');var tools=require('../../tools');var _=require('lodash');var chalk=require('chalk');var moment=require('moment');var http=require('good-guy-http')();var noon=require('noon');var xml2js=require('xml2js');var CFILE=process.env.HOME+'/.leximaven.noon';exports.command='origin <word>';exports.aliases=['or','etymology'];exports.desc='Wordnik etymologies';exports.builder={out:{alias:'o',desc:'Write cson, json, noon, plist, yaml, xml',default:'',type:'string'},force:{alias:'f',desc:'Force overwriting outfile',default:false,type:'boolean'},save:{alias:'s',desc:'Save flags to config file',default:false,type:'boolean'},canon:{alias:'c',desc:'Use canonical',default:false,type:'boolean'}};exports.handler=function(argv){if(process.env.WORDNIK===undefined)throw new Error('Put an API key in environment variable WORDNIK per documentation.');tools.checkConfig(CFILE);var config=noon.load(CFILE);var proceed=false;var reset=false;var stamp=new Date(config.wordnik.date.stamp);var minutes=moment(new Date()).diff(stamp,'minutes');var checkStamp=tools.limitWordnik(config);config=checkStamp[0];proceed=checkStamp[1];reset=checkStamp[2];if(proceed){(function(){var userConfig={wordnik:{origin:{canon:argv.c}}};if(config.merge)config=_.merge({},config,userConfig);if(argv.s&&config.merge)noon.save(CFILE,config);if(argv.s&&!config.merge)throw new Error("Can't save user config, set option merge to true.");var theme=themes.loadTheme(config.theme);if(config.verbose)themes.label(theme,'down','Wordnik');var word=argv.word;var task='etymologies';var prefix='http://api.wordnik.com:80/v4/word.json/';var apikey=process.env.WORDNIK;var uri=''+prefix+word+'/'+task+'?';var pcont=[];pcont.push('useCanonical='+config.wordnik.origin.canon+'&');pcont.push('api_key='+apikey);var rest=pcont.join('');var url=''+uri+rest;url=encodeURI(url);var parser=new xml2js.Parser();var tofile={type:'etymology',source:'http://www.wordnik.com'};var ctstyle=_.get(chalk,theme.content.style);http({url:url},function(error,response){if(!error&&response.statusCode===200){if(response.headers['x-gg-state']==='cached'){config.wordnik.date.remain++;noon.save(CFILE,config);if(config.usage)console.log('Cached response, not decrementing usage.');}var resp=JSON.parse(response.body);var origin=resp[0];parser.parseString(origin,function(err,result){if(!err){var root=result.ety;var content=root._;var ets=root.ets;ets=ets.join(', ');themes.label(theme,'right','Etymology',ctstyle(content+' '+ets));tofile.etymology=content;tofile.origin=ets;}else{throw new Error(err);}});if(argv.o)tools.outFile(argv.o,argv.f,tofile);if(config.usage)reset?console.log('Timestamp expired, not decrementing usage.\n'+config.wordnik.date.remain+'/'+config.wordnik.date.limit+' requests remaining this hour.'):console.log(config.wordnik.date.remain+'/'+config.wordnik.date.limit+' requests remaining this hour, will reset in '+(59-minutes)+' minutes.');}else throw new Error('HTTP '+error.statusCode+': '+error.reponse.body);});})();}else throw new Error('Reached this hour\'s usage limit of '+config.wordnik.date.limit+'.');};
'use strict';/* eslint max-len:0 */var themes=require('../../themes');var tools=require('../../tools');var _=require('lodash');var chalk=require('chalk');var df=require('date-fns');var http=require('good-guy-http')();var noon=require('noon');var xml2js=require('xml2js');var CFILE=process.env.HOME+'/.leximaven.noon';exports.command='origin <word>';exports.aliases=['or','etymology'];exports.desc='Wordnik etymologies';exports.builder={out:{alias:'o',desc:'Write cson, json, noon, plist, yaml, xml',default:'',type:'string'},force:{alias:'f',desc:'Force overwriting outfile',default:false,type:'boolean'},save:{alias:'s',desc:'Save flags to config file',default:false,type:'boolean'},canon:{alias:'c',desc:'Use canonical',default:false,type:'boolean'}};exports.handler=function(argv){if(process.env.WORDNIK===undefined)throw new Error('Put an API key in environment variable WORDNIK per documentation.');tools.checkConfig(CFILE);var config=noon.load(CFILE);var proceed=false;var reset=false;var stamp=new Date(config.wordnik.date.stamp);var minutes=df.differenceInMinutes(new Date(),stamp);var checkStamp=tools.limitWordnik(config);config=checkStamp[0];proceed=checkStamp[1];reset=checkStamp[2];if(proceed){(function(){var userConfig={wordnik:{origin:{canon:argv.c}}};if(config.merge)config=_.merge({},config,userConfig);if(argv.s&&config.merge)noon.save(CFILE,config);if(argv.s&&!config.merge)throw new Error("Can't save user config, set option merge to true.");var theme=themes.loadTheme(config.theme);if(config.verbose)themes.label(theme,'down','Wordnik');var word=argv.word;var task='etymologies';var prefix='http://api.wordnik.com:80/v4/word.json/';var apikey=process.env.WORDNIK;var uri=''+prefix+word+'/'+task+'?';var pcont=[];pcont.push('useCanonical='+config.wordnik.origin.canon+'&');pcont.push('api_key='+apikey);var rest=pcont.join('');var url=''+uri+rest;url=encodeURI(url);var parser=new xml2js.Parser();var tofile={type:'etymology',source:'http://www.wordnik.com'};var ctstyle=_.get(chalk,theme.content.style);http({url:url},function(error,response){if(!error&&response.statusCode===200){if(response.headers['x-gg-state']==='cached'){config.wordnik.date.remain++;noon.save(CFILE,config);if(config.usage)console.log('Cached response, not decrementing usage.');}var resp=JSON.parse(response.body);var origin=resp[0];parser.parseString(origin,function(err,result){if(!err){var root=result.ety;var content=root._;var ets=root.ets;ets=ets.join(', ');themes.label(theme,'right','Etymology',ctstyle(content+' '+ets));tofile.etymology=content;tofile.origin=ets;}else{throw new Error(err);}});if(argv.o)tools.outFile(argv.o,argv.f,tofile);if(config.usage)reset?console.log('Timestamp expired, not decrementing usage.\n'+config.wordnik.date.remain+'/'+config.wordnik.date.limit+' requests remaining this hour.'):console.log(config.wordnik.date.remain+'/'+config.wordnik.date.limit+' requests remaining this hour, will reset in '+(59-minutes)+' minutes.');}else throw new Error('HTTP '+error.statusCode+': '+error.reponse.body);});})();}else throw new Error('Reached this hour\'s usage limit of '+config.wordnik.date.limit+'.');};

@@ -1,1 +0,1 @@

'use strict';/* eslint max-len:0 */var themes=require('../../themes');var tools=require('../../tools');var _=require('lodash');var moment=require('moment');var http=require('good-guy-http')();var noon=require('noon');var CFILE=process.env.HOME+'/.leximaven.noon';exports.command='phrase <word>';exports.aliases=['ph','ngram'];exports.desc='Wordnik bi-gram phrases';exports.builder={out:{alias:'o',desc:'Write cson, json, noon, plist, yaml, xml',default:'',type:'string'},force:{alias:'f',desc:'Force overwriting outfile',default:false,type:'boolean'},save:{alias:'s',desc:'Save flags to config file',default:false,type:'boolean'},limit:{alias:'l',desc:'Limit number of results',default:5,type:'number'},canon:{alias:'c',desc:'Use canonical',default:false,type:'boolean'},weight:{alias:'w',desc:'Minimum weighted mutual info',default:13,type:'number'}};exports.handler=function(argv){if(process.env.WORDNIK===undefined)throw new Error('Put an API key in environment variable WORDNIK per documentation.');tools.checkConfig(CFILE);var config=noon.load(CFILE);var proceed=false;var reset=false;var stamp=new Date(config.wordnik.date.stamp);var minutes=moment(new Date()).diff(stamp,'minutes');var checkStamp=tools.limitWordnik(config);config=checkStamp[0];proceed=checkStamp[1];reset=checkStamp[2];if(proceed){(function(){var userConfig={wordnik:{phrase:{canon:argv.c,limit:argv.l,weight:argv.w}}};if(config.merge)config=_.merge({},config,userConfig);if(argv.s&&config.merge)noon.save(CFILE,config);if(argv.s&&!config.merge)throw new Error("Can't save user config, set option merge to true.");var theme=themes.loadTheme(config.theme);if(config.verbose)themes.label(theme,'down','Wordnik');var word=argv.word;var task='phrases';var prefix='http://api.wordnik.com:80/v4/word.json/';var apikey=process.env.WORDNIK;var uri=''+prefix+word+'/'+task+'?';var pcont=[];pcont.push('useCanonical='+argv.c+'&');pcont.push('limit='+argv.l+'&');pcont.push('wlmi='+argv.w+'&');pcont.push('api_key='+apikey);var rest=pcont.join('');var url=''+uri+rest;url=encodeURI(url);themes.label(theme,'down','Bi-gram phrases');var tofile={type:'phrase',source:'http://www.wordnik.com'};http({url:url},function(error,response){if(!error&&response.statusCode===200){if(response.headers['x-gg-state']==='cached'){config.wordnik.date.remain++;noon.save(CFILE,config);if(config.usage)console.log('Cached response, not decrementing usage.');}var list=JSON.parse(response.body);for(var i=0;i<=list.length-1;i++){var item=list[i];console.log(item.gram1+' '+item.gram2);tofile[['agram'+i]]=item.gram1;tofile[['bgram'+i]]=item.gram2;}if(argv.o)tools.outFile(argv.o,argv.f,tofile);if(config.usage)reset?console.log('Timestamp expired, not decrementing usage.\n'+config.wordnik.date.remain+'/'+config.wordnik.date.limit+' requests remaining this hour.'):console.log(config.wordnik.date.remain+'/'+config.wordnik.date.limit+' requests remaining this hour, will reset in '+(59-minutes)+' minutes.');}else throw new Error('HTTP '+error.statusCode+': '+error.reponse.body);});})();}else throw new Error('Reached this hour\'s usage limit of '+config.wordnik.date.limit+'.');};
'use strict';/* eslint max-len:0 */var themes=require('../../themes');var tools=require('../../tools');var _=require('lodash');var df=require('date-fns');var http=require('good-guy-http')();var noon=require('noon');var CFILE=process.env.HOME+'/.leximaven.noon';exports.command='phrase <word>';exports.aliases=['ph','ngram'];exports.desc='Wordnik bi-gram phrases';exports.builder={out:{alias:'o',desc:'Write cson, json, noon, plist, yaml, xml',default:'',type:'string'},force:{alias:'f',desc:'Force overwriting outfile',default:false,type:'boolean'},save:{alias:'s',desc:'Save flags to config file',default:false,type:'boolean'},limit:{alias:'l',desc:'Limit number of results',default:5,type:'number'},canon:{alias:'c',desc:'Use canonical',default:false,type:'boolean'},weight:{alias:'w',desc:'Minimum weighted mutual info',default:13,type:'number'}};exports.handler=function(argv){if(process.env.WORDNIK===undefined)throw new Error('Put an API key in environment variable WORDNIK per documentation.');tools.checkConfig(CFILE);var config=noon.load(CFILE);var proceed=false;var reset=false;var stamp=new Date(config.wordnik.date.stamp);var minutes=df.differenceInMinutes(new Date(),stamp);var checkStamp=tools.limitWordnik(config);config=checkStamp[0];proceed=checkStamp[1];reset=checkStamp[2];if(proceed){(function(){var userConfig={wordnik:{phrase:{canon:argv.c,limit:argv.l,weight:argv.w}}};if(config.merge)config=_.merge({},config,userConfig);if(argv.s&&config.merge)noon.save(CFILE,config);if(argv.s&&!config.merge)throw new Error("Can't save user config, set option merge to true.");var theme=themes.loadTheme(config.theme);if(config.verbose)themes.label(theme,'down','Wordnik');var word=argv.word;var task='phrases';var prefix='http://api.wordnik.com:80/v4/word.json/';var apikey=process.env.WORDNIK;var uri=''+prefix+word+'/'+task+'?';var pcont=[];pcont.push('useCanonical='+argv.c+'&');pcont.push('limit='+argv.l+'&');pcont.push('wlmi='+argv.w+'&');pcont.push('api_key='+apikey);var rest=pcont.join('');var url=''+uri+rest;url=encodeURI(url);themes.label(theme,'down','Bi-gram phrases');var tofile={type:'phrase',source:'http://www.wordnik.com'};http({url:url},function(error,response){if(!error&&response.statusCode===200){if(response.headers['x-gg-state']==='cached'){config.wordnik.date.remain++;noon.save(CFILE,config);if(config.usage)console.log('Cached response, not decrementing usage.');}var list=JSON.parse(response.body);for(var i=0;i<=list.length-1;i++){var item=list[i];console.log(item.gram1+' '+item.gram2);tofile[['agram'+i]]=item.gram1;tofile[['bgram'+i]]=item.gram2;}if(argv.o)tools.outFile(argv.o,argv.f,tofile);if(config.usage)reset?console.log('Timestamp expired, not decrementing usage.\n'+config.wordnik.date.remain+'/'+config.wordnik.date.limit+' requests remaining this hour.'):console.log(config.wordnik.date.remain+'/'+config.wordnik.date.limit+' requests remaining this hour, will reset in '+(59-minutes)+' minutes.');}else throw new Error('HTTP '+error.statusCode+': '+error.reponse.body);});})();}else throw new Error('Reached this hour\'s usage limit of '+config.wordnik.date.limit+'.');};

@@ -1,1 +0,1 @@

'use strict';/* eslint max-len:0 */var themes=require('../../themes');var tools=require('../../tools');var _=require('lodash');var moment=require('moment');var http=require('good-guy-http')();var noon=require('noon');var CFILE=process.env.HOME+'/.leximaven.noon';exports.command='pronounce <word>';exports.aliases=['pr'];exports.desc='Wordnik pronunciations';exports.builder={out:{alias:'o',desc:'Write cson, json, noon, plist, yaml, xml',default:'',type:'string'},force:{alias:'f',desc:'Force overwriting outfile',default:false,type:'boolean'},save:{alias:'s',desc:'Save flags to config file',default:false,type:'boolean'},limit:{alias:'l',desc:'Limit number of results',default:5,type:'number'},canon:{alias:'c',desc:'Use canonical',default:false,type:'boolean'},dict:{alias:'d',desc:'Dictionary: ahd, century, cmu, macmillan, wiktionary, webster, wordnet',default:'',type:'string'},type:{alias:'t',desc:'Type: ahd, arpabet, gcide-diacritical, ipa',default:'',type:'string'}};exports.handler=function(argv){if(process.env.WORDNIK===undefined)throw new Error('Put an API key in environment variable WORDNIK per documentation.');tools.checkConfig(CFILE);var config=noon.load(CFILE);var proceed=false;var reset=false;var stamp=new Date(config.wordnik.date.stamp);var minutes=moment(new Date()).diff(stamp,'minutes');var checkStamp=tools.limitWordnik(config);config=checkStamp[0];proceed=checkStamp[1];reset=checkStamp[2];if(proceed){(function(){var userConfig={wordnik:{pronounce:{canon:argv.c,dict:argv.d,type:argv.t,limit:argv.l}}};if(config.merge)config=_.merge({},config,userConfig);if(argv.s&&config.merge)noon.save(CFILE,config);if(argv.s&&!config.merge)throw new Error("Can't save user config, set option merge to true.");var theme=themes.loadTheme(config.theme);if(config.verbose)themes.label(theme,'down','Wordnik');var word=argv.word;var task='pronunciations';var prefix='http://api.wordnik.com:80/v4/word.json/';var apikey=process.env.WORDNIK;var uri=''+prefix+word+'/'+task+'?';var pcont=[];pcont.push('useCanonical='+config.wordnik.pronounce.canon+'&');if(config.wordnik.pronounce.dict!=='')pcont.push('sourceDictionary='+config.wordnik.pronounce.dict+'&');if(config.wordnik.pronounce.type!=='')pcont.push('typeFormat='+config.wordnik.pronounce.type+'&');pcont.push('limit='+config.wordnik.pronounce.limit+'&');pcont.push('api_key='+apikey);var rest=pcont.join('');var url=''+uri+rest;url=encodeURI(url);themes.label(theme,'down','Pronunciations');var tofile={type:'pronunciation',source:'http://www.wordnik.com'};tofile.word=word;http({url:url},function(error,response){if(!error&&response.statusCode===200){if(response.headers['x-gg-state']==='cached'){config.wordnik.date.remain++;noon.save(CFILE,config);if(config.usage)console.log('Cached response, not decrementing usage.');}var list=JSON.parse(response.body);for(var i=0;i<=list.length-1;i++){var item=list[i];themes.label(theme,'right',word,item.raw+' - Type - '+item.rawType);tofile[['pronunciation'+i]]=item.raw;tofile[['type'+i]]=item.rawType;}if(argv.o)tools.outFile(argv.o,argv.f,tofile);if(config.usage)reset?console.log('Timestamp expired, not decrementing usage.\n'+config.wordnik.date.remain+'/'+config.wordnik.date.limit+' requests remaining this hour.'):console.log(config.wordnik.date.remain+'/'+config.wordnik.date.limit+' requests remaining this hour, will reset in '+(59-minutes)+' minutes.');}else throw new Error('HTTP '+error.statusCode+': '+error.reponse.body);});})();}else throw new Error('Reached this hour\'s usage limit of '+config.wordnik.date.limit+'.');};
'use strict';/* eslint max-len:0 */var themes=require('../../themes');var tools=require('../../tools');var _=require('lodash');var df=require('date-fns');var http=require('good-guy-http')();var noon=require('noon');var CFILE=process.env.HOME+'/.leximaven.noon';exports.command='pronounce <word>';exports.aliases=['pr'];exports.desc='Wordnik pronunciations';exports.builder={out:{alias:'o',desc:'Write cson, json, noon, plist, yaml, xml',default:'',type:'string'},force:{alias:'f',desc:'Force overwriting outfile',default:false,type:'boolean'},save:{alias:'s',desc:'Save flags to config file',default:false,type:'boolean'},limit:{alias:'l',desc:'Limit number of results',default:5,type:'number'},canon:{alias:'c',desc:'Use canonical',default:false,type:'boolean'},dict:{alias:'d',desc:'Dictionary: ahd, century, cmu, macmillan, wiktionary, webster, wordnet',default:'',type:'string'},type:{alias:'t',desc:'Type: ahd, arpabet, gcide-diacritical, ipa',default:'',type:'string'}};exports.handler=function(argv){if(process.env.WORDNIK===undefined)throw new Error('Put an API key in environment variable WORDNIK per documentation.');tools.checkConfig(CFILE);var config=noon.load(CFILE);var proceed=false;var reset=false;var stamp=new Date(config.wordnik.date.stamp);var minutes=df.differenceInMinutes(new Date(),stamp);var checkStamp=tools.limitWordnik(config);config=checkStamp[0];proceed=checkStamp[1];reset=checkStamp[2];if(proceed){(function(){var userConfig={wordnik:{pronounce:{canon:argv.c,dict:argv.d,type:argv.t,limit:argv.l}}};if(config.merge)config=_.merge({},config,userConfig);if(argv.s&&config.merge)noon.save(CFILE,config);if(argv.s&&!config.merge)throw new Error("Can't save user config, set option merge to true.");var theme=themes.loadTheme(config.theme);if(config.verbose)themes.label(theme,'down','Wordnik');var word=argv.word;var task='pronunciations';var prefix='http://api.wordnik.com:80/v4/word.json/';var apikey=process.env.WORDNIK;var uri=''+prefix+word+'/'+task+'?';var pcont=[];pcont.push('useCanonical='+config.wordnik.pronounce.canon+'&');if(config.wordnik.pronounce.dict!=='')pcont.push('sourceDictionary='+config.wordnik.pronounce.dict+'&');if(config.wordnik.pronounce.type!=='')pcont.push('typeFormat='+config.wordnik.pronounce.type+'&');pcont.push('limit='+config.wordnik.pronounce.limit+'&');pcont.push('api_key='+apikey);var rest=pcont.join('');var url=''+uri+rest;url=encodeURI(url);themes.label(theme,'down','Pronunciations');var tofile={type:'pronunciation',source:'http://www.wordnik.com'};tofile.word=word;http({url:url},function(error,response){if(!error&&response.statusCode===200){if(response.headers['x-gg-state']==='cached'){config.wordnik.date.remain++;noon.save(CFILE,config);if(config.usage)console.log('Cached response, not decrementing usage.');}var list=JSON.parse(response.body);for(var i=0;i<=list.length-1;i++){var item=list[i];themes.label(theme,'right',word,item.raw+' - Type - '+item.rawType);tofile[['pronunciation'+i]]=item.raw;tofile[['type'+i]]=item.rawType;}if(argv.o)tools.outFile(argv.o,argv.f,tofile);if(config.usage)reset?console.log('Timestamp expired, not decrementing usage.\n'+config.wordnik.date.remain+'/'+config.wordnik.date.limit+' requests remaining this hour.'):console.log(config.wordnik.date.remain+'/'+config.wordnik.date.limit+' requests remaining this hour, will reset in '+(59-minutes)+' minutes.');}else throw new Error('HTTP '+error.statusCode+': '+error.reponse.body);});})();}else throw new Error('Reached this hour\'s usage limit of '+config.wordnik.date.limit+'.');};

@@ -1,1 +0,1 @@

'use strict';/* eslint max-len:0 */var themes=require('../../themes');var tools=require('../../tools');var _=require('lodash');var moment=require('moment');var http=require('good-guy-http')();var noon=require('noon');var CFILE=process.env.HOME+'/.leximaven.noon';exports.command='relate <word>';exports.aliases=['related','rel'];exports.desc='Wordnik related words';exports.builder={out:{alias:'o',desc:'Write cson, json, noon, plist, yaml, xml',default:'',type:'string'},force:{alias:'f',desc:'Force overwriting outfile',default:false,type:'boolean'},save:{alias:'s',desc:'Save flags to config file',default:false,type:'boolean'},limit:{alias:'l',desc:'Limit results = require(type option',default:10,type:'number'},canon:{alias:'c',desc:'Use canonical',default:false,type:'boolean'},type:{alias:'t',desc:'Relationship types to limit',default:'',type:'string'}};exports.handler=function(argv){if(process.env.WORDNIK===undefined)throw new Error('Put an API key in environment variable WORDNIK per documentation.');tools.checkConfig(CFILE);var config=noon.load(CFILE);var proceed=false;var reset=false;var stamp=new Date(config.wordnik.date.stamp);var minutes=moment(new Date()).diff(stamp,'minutes');var checkStamp=tools.limitWordnik(config);config=checkStamp[0];proceed=checkStamp[1];reset=checkStamp[2];if(proceed){(function(){var userConfig={wordnik:{relate:{canon:argv.c,type:argv.t,limit:argv.l}}};if(config.merge)config=_.merge({},config,userConfig);if(argv.s&&config.merge)noon.save(CFILE,config);if(argv.s&&!config.merge)throw new Error("Can't save user config, set option merge to true.");var theme=themes.loadTheme(config.theme);if(config.verbose)themes.label(theme,'down','Wordnik');var word=argv.word;var task='relatedWords';var prefix='http://api.wordnik.com:80/v4/word.json/';var apikey=process.env.WORDNIK;var uri=''+prefix+word+'/'+task+'?';var pcont=[];pcont.push('useCanonical='+config.wordnik.relate.canon+'&');if(config.wordnik.relate.type!=='')pcont.push('relationshipTypes='+config.wordnik.relate.type+'&');pcont.push('limitPerRelationshipType='+config.wordnik.relate.limit+'&');pcont.push('api_key='+apikey);var rest=pcont.join('');var url=''+uri+rest;url=encodeURI(url);themes.label(theme,'down','Related words');var tofile={type:'related words',source:'http://www.wordnik.com'};tofile.word=word;http({url:url},function(error,response){if(!error&&response.statusCode===200){if(response.headers['x-gg-state']==='cached'){config.wordnik.date.remain++;noon.save(CFILE,config);if(config.usage)console.log('Cached response, not decrementing usage.');}var list=JSON.parse(response.body);for(var i=0;i<=list.length-1;i++){var item=list[i];themes.label(theme,'right',item.relationshipType,''+item.words.join(', '));tofile[['type'+i]]=item.relationshipType;tofile[['words'+i]]=item.words.join(', ');}if(argv.o)tools.outFile(argv.o,argv.f,tofile);if(config.usage)reset?console.log('Timestamp expired, not decrementing usage.\n'+config.wordnik.date.remain+'/'+config.wordnik.date.limit+' requests remaining this hour.'):console.log(config.wordnik.date.remain+'/'+config.wordnik.date.limit+' requests remaining this hour, will reset in '+(59-minutes)+' minutes.');}else throw new Error('HTTP '+error.statusCode+': '+error.reponse.body);});})();}else throw new Error('Reached this hour\'s usage limit of '+config.wordnik.date.limit+'.');};
'use strict';/* eslint max-len:0 */var themes=require('../../themes');var tools=require('../../tools');var _=require('lodash');var df=require('date-fns');var http=require('good-guy-http')();var noon=require('noon');var CFILE=process.env.HOME+'/.leximaven.noon';exports.command='relate <word>';exports.aliases=['related','rel'];exports.desc='Wordnik related words';exports.builder={out:{alias:'o',desc:'Write cson, json, noon, plist, yaml, xml',default:'',type:'string'},force:{alias:'f',desc:'Force overwriting outfile',default:false,type:'boolean'},save:{alias:'s',desc:'Save flags to config file',default:false,type:'boolean'},limit:{alias:'l',desc:'Limit results = require(type option',default:10,type:'number'},canon:{alias:'c',desc:'Use canonical',default:false,type:'boolean'},type:{alias:'t',desc:'Relationship types to limit',default:'',type:'string'}};exports.handler=function(argv){if(process.env.WORDNIK===undefined)throw new Error('Put an API key in environment variable WORDNIK per documentation.');tools.checkConfig(CFILE);var config=noon.load(CFILE);var proceed=false;var reset=false;var stamp=new Date(config.wordnik.date.stamp);var minutes=df.differenceInMinutes(new Date(),stamp);var checkStamp=tools.limitWordnik(config);config=checkStamp[0];proceed=checkStamp[1];reset=checkStamp[2];if(proceed){(function(){var userConfig={wordnik:{relate:{canon:argv.c,type:argv.t,limit:argv.l}}};if(config.merge)config=_.merge({},config,userConfig);if(argv.s&&config.merge)noon.save(CFILE,config);if(argv.s&&!config.merge)throw new Error("Can't save user config, set option merge to true.");var theme=themes.loadTheme(config.theme);if(config.verbose)themes.label(theme,'down','Wordnik');var word=argv.word;var task='relatedWords';var prefix='http://api.wordnik.com:80/v4/word.json/';var apikey=process.env.WORDNIK;var uri=''+prefix+word+'/'+task+'?';var pcont=[];pcont.push('useCanonical='+config.wordnik.relate.canon+'&');if(config.wordnik.relate.type!=='')pcont.push('relationshipTypes='+config.wordnik.relate.type+'&');pcont.push('limitPerRelationshipType='+config.wordnik.relate.limit+'&');pcont.push('api_key='+apikey);var rest=pcont.join('');var url=''+uri+rest;url=encodeURI(url);themes.label(theme,'down','Related words');var tofile={type:'related words',source:'http://www.wordnik.com'};tofile.word=word;http({url:url},function(error,response){if(!error&&response.statusCode===200){if(response.headers['x-gg-state']==='cached'){config.wordnik.date.remain++;noon.save(CFILE,config);if(config.usage)console.log('Cached response, not decrementing usage.');}var list=JSON.parse(response.body);for(var i=0;i<=list.length-1;i++){var item=list[i];themes.label(theme,'right',item.relationshipType,''+item.words.join(', '));tofile[['type'+i]]=item.relationshipType;tofile[['words'+i]]=item.words.join(', ');}if(argv.o)tools.outFile(argv.o,argv.f,tofile);if(config.usage)reset?console.log('Timestamp expired, not decrementing usage.\n'+config.wordnik.date.remain+'/'+config.wordnik.date.limit+' requests remaining this hour.'):console.log(config.wordnik.date.remain+'/'+config.wordnik.date.limit+' requests remaining this hour, will reset in '+(59-minutes)+' minutes.');}else throw new Error('HTTP '+error.statusCode+': '+error.reponse.body);});})();}else throw new Error('Reached this hour\'s usage limit of '+config.wordnik.date.limit+'.');};

@@ -1,2 +0,2 @@

'use strict';/* eslint max-len: 0 */var chalk=require('chalk');var fs=require('fs-extra');var moment=require('moment');var noon=require('noon');var ts=require('term-size');var wrap=require('wrap-ansi');var xml2js=require('xml2js');var CFILE=process.env.HOME+'/.leximaven.noon';/**
'use strict';/* eslint max-len: 0 */var chalk=require('chalk');var df=require('date-fns');var fs=require('fs-extra');var noon=require('noon');var ts=require('term-size');var wrap=require('wrap-ansi');var xml2js=require('xml2js');var CFILE=process.env.HOME+'/.leximaven.noon';/**
* The tools module provides useful repetitive tasks

@@ -8,15 +8,15 @@ * @module Utils

* @return {Array} Updated config, proceed boolean, and reset boolean
*/exports.limitOnelook=function(config){var c=config;var proceed=false;var reset=false;var stamp=new Date(c.onelook.date.stamp);var hours=moment(new Date()).diff(stamp,'hours');if(hours<24){c.onelook.date.remain--;}else if(hours>=24){reset=true;c.onelook.date.stamp=new Date().toJSON();c.onelook.date.remain=c.onelook.date.limit;c.onelook.date.remain--;}c.onelook.date.remain<=0?c.onelook.date.remain=0:proceed=true;noon.save(CFILE,c);return[c,proceed,reset];};/**
*/exports.limitOnelook=function(config){var c=config;var proceed=false;var reset=false;var stamp=new Date(c.onelook.date.stamp);var hours=df.differenceInHours(new Date(),stamp);if(hours<24){c.onelook.date.remain--;}else if(hours>=24){reset=true;c.onelook.date.stamp=new Date().toJSON();c.onelook.date.remain=c.onelook.date.limit;c.onelook.date.remain--;}c.onelook.date.remain<=0?c.onelook.date.remain=0:proceed=true;noon.save(CFILE,c);return[c,proceed,reset];};/**
* Datamuse's API limit check
* @param {Object} config The current config
* @return {Array} Updated config, proceed boolean, and reset boolean
*/exports.limitDmuse=function(config){var c=config;var proceed=false;var reset=false;var stamp=new Date(c.dmuse.date.stamp);var hours=moment(new Date()).diff(stamp,'hours');if(hours<24){c.dmuse.date.remain--;}else if(hours>=24){reset=true;c.dmuse.date.stamp=new Date().toJSON();c.dmuse.date.remain=c.dmuse.date.limit;c.dmuse.date.remain--;}c.dmuse.date.remain<=0?c.dmuse.date.remain=0:proceed=true;noon.save(CFILE,c);return[c,proceed,reset];};/**
*/exports.limitDmuse=function(config){var c=config;var proceed=false;var reset=false;var stamp=new Date(c.dmuse.date.stamp);var hours=df.differenceInHours(new Date(),stamp);if(hours<24){c.dmuse.date.remain--;}else if(hours>=24){reset=true;c.dmuse.date.stamp=new Date().toJSON();c.dmuse.date.remain=c.dmuse.date.limit;c.dmuse.date.remain--;}c.dmuse.date.remain<=0?c.dmuse.date.remain=0:proceed=true;noon.save(CFILE,c);return[c,proceed,reset];};/**
* Rhymebrain's API limit check
* @param {Object} config The current config
* @return {Array} Updated config, proceed boolean, and reset boolean
*/exports.limitRbrain=function(config){var c=config;var proceed=false;var reset=false;var stamp=new Date(c.rbrain.date.stamp);var minutes=moment(new Date()).diff(stamp,'minutes');if(minutes<60){c.rbrain.date.remain--;}else if(minutes>=60){reset=true;c.rbrain.date.stamp=new Date().toJSON();c.rbrain.date.remain=c.rbrain.date.limit;c.rbrain.date.remain--;}c.rbrain.date.remain<=0?c.rbrain.date.remain=0:proceed=true;noon.save(CFILE,c);return[c,proceed,reset];};/**
*/exports.limitRbrain=function(config){var c=config;var proceed=false;var reset=false;var stamp=new Date(c.rbrain.date.stamp);var minutes=df.differenceInMinutes(new Date(),stamp);if(minutes<60){c.rbrain.date.remain--;}else if(minutes>=60){reset=true;c.rbrain.date.stamp=new Date().toJSON();c.rbrain.date.remain=c.rbrain.date.limit;c.rbrain.date.remain--;}c.rbrain.date.remain<=0?c.rbrain.date.remain=0:proceed=true;noon.save(CFILE,c);return[c,proceed,reset];};/**
* Wordnik's API limit check
* @param {Object} config The current config
* @return {Array} Updated config, proceed boolean, and reset boolean
*/exports.limitWordnik=function(config){var c=config;var proceed=false;var reset=false;var stamp=new Date(c.wordnik.date.stamp);var minutes=moment(new Date()).diff(stamp,'minutes');if(minutes<60){c.wordnik.date.remain--;}else if(minutes>=60){reset=true;c.wordnik.date.stamp=new Date().toJSON();c.wordnik.date.remain=c.wordnik.date.limit;c.wordnik.date.remain--;}c.wordnik.date.remain<=0?c.wordnik.date.remain=0:proceed=true;noon.save(CFILE,c);return[c,proceed,reset];};/**
*/exports.limitWordnik=function(config){var c=config;var proceed=false;var reset=false;var stamp=new Date(c.wordnik.date.stamp);var minutes=df.differenceInMinutes(new Date(),stamp);if(minutes<60){c.wordnik.date.remain--;}else if(minutes>=60){reset=true;c.wordnik.date.stamp=new Date().toJSON();c.wordnik.date.remain=c.wordnik.date.limit;c.wordnik.date.remain--;}c.wordnik.date.remain<=0?c.wordnik.date.remain=0:proceed=true;noon.save(CFILE,c);return[c,proceed,reset];};/**
* Checks if a file exists

@@ -23,0 +23,0 @@ * @private

@@ -5,2 +5,12 @@ # Change Log

<a name="2.3.4"></a>
## [2.3.4](https://github.com/drawnepicenter/leximaven/compare/v2.3.3...v2.3.4) (2017-02-05)
### Bug Fixes
* **wordmap:** require 'fs' ([e21d630](https://github.com/drawnepicenter/leximaven/commit/e21d630))
<a name="2.3.3"></a>

@@ -7,0 +17,0 @@ ## [2.3.3](https://github.com/drawnepicenter/leximaven/compare/v2.3.2...v2.3.3) (2017-01-29)

{
"name": "leximaven",
"version": "2.3.3",
"version": "2.3.4",
"description": "A command line tool for searching word-related APIs.",

@@ -21,8 +21,8 @@ "author": "Andrew Prentice",

"climate": "codeclimate-test-reporter < lcov.info",
"cover": "cross-env BABEL_ENV=test babel src -d bin",
"lcov": "nyc report -r text-lcov > lcov.info && npm run clean && npm run bin",
"instrument": "cross-env BABEL_ENV=test babel src -d bin",
"lint": "standard --fix src",
"pretest": "cross-env BABEL_ENV=test babel test/test.es6 -o test/test.js",
"release": "standard-version",
"report": "nyc report -r html",
"report": "nyc report -r text-lcov > lcov.info && nyc report -r html",
"reset": "npm run clean && npm run bin",
"test": "cross-env NODE_ENV=test nyc _mocha test/test.js",

@@ -44,3 +44,4 @@ "watch": "babel -w src -d bin"

"chalk": "^1.1.3",
"dotty": "^0.0.2",
"date-fns": "^1.27.2",
"dot-prop": "^4.1.0",
"fs-extra": "^2.0.0",

@@ -50,3 +51,2 @@ "glob": "^7.1.1",

"lodash": "^4.17.4",
"moment": "^2.17.1",
"noon": "^1.0.13",

@@ -73,8 +73,5 @@ "ora": "^1.1.0",

"cz-conventional-changelog": "^1.2.0",
"eslint": "^3.14.1",
"ink-docstrap": "^1.3.0",
"has-ansi": "^2.0.0",
"mocha": "^3.2.0",
"npm-check-updates": "^2.8.9",
"nyc": "^10.1.2",
"redrun": "^5.9.5",
"rimraf": "^2.5.4",

@@ -81,0 +78,0 @@ "sinon": "^1.17.7",

# leximaven
[![Build Status](https://travis-ci.org/drawnepicenter/leximaven.svg?branch=master)](https://travis-ci.org/drawnepicenter/leximaven) [![Dependency Status](https://gemnasium.com/badges/github.com/drawnepicenter/leximaven.svg)](https://gemnasium.com/github.com/drawnepicenter/leximaven) [![Greenkeeper badge](https://badges.greenkeeper.io/drawnepicenter/leximaven.svg)](https://greenkeeper.io/) [![Coverage Status](https://coveralls.io/repos/github/drawnepicenter/leximaven/badge.svg?branch=master)](https://coveralls.io/github/drawnepicenter/leximaven?branch=master) [![Code Climate](https://codeclimate.com/github/drawnepicenter/leximaven/badges/gpa.svg)](https://codeclimate.com/github/drawnepicenter/leximaven) [![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.github.io/cz-cli/) [![Git Town](https://img.shields.io/badge/workflow-git%20town-brightgreen.svg)](http://www.git-town.com/)
[![Build Status](https://travis-ci.org/drawnepicenter/leximaven.svg?branch=master)](https://travis-ci.org/drawnepicenter/leximaven) [![Dependency Status](https://gemnasium.com/badges/github.com/drawnepicenter/leximaven.svg)](https://gemnasium.com/github.com/drawnepicenter/leximaven) [![npm version](https://badge.fury.io/js/leximaven.svg)](https://badge.fury.io/js/leximaven) [![Standard - JavaScript Style Guide](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com/)
[![npm version](https://badge.fury.io/js/leximaven.svg)](https://badge.fury.io/js/leximaven) [![Downloads](https://img.shields.io/npm/dt/leximaven.svg)](https://www.npmjs.com/package/leximaven) [![Standard - JavaScript Style Guide](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com/) [![Standard Version](https://img.shields.io/badge/release-standard%20version-brightgreen.svg)](https://github.com/conventional-changelog/standard-version) [![MIT License](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/mit-license.php) [![Semver 2.0.0](https://img.shields.io/badge/semver-2.0.0-ff69b4.svg)](http://semver.org/spec/v2.0.0.html) [![Join the chat at https://gitter.im/drawnepicenter/leximaven](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/dwyl/?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[![Powered by Acronym Server](https://img.shields.io/badge/powered%20by-acronym%20server-brightgreen.svg)](http://acronyms.silmaril.ie) [![Powered by Datamuse](https://img.shields.io/badge/powered%20by-datamuse-green.svg)](http://www.datamuse.com) [![Powered by Onelook](https://img.shields.io/badge/powered%20by-onelook-yellow.svg)](http://www.onelook.com) [![Powered by Rhymebrain](https://img.shields.io/badge/powered%20by-rhymebrain-orange.svg)](http://www.rhymebrain.com) [![Powered by Wordnik](https://img.shields.io/badge/powered%20by-wordnik-red.svg)](http://www.wordnik.com) [![Powered by Wordsmith](https://img.shields.io/badge/powered%20by-wordsmith-ff69b4.svg)](http://wordsmith.org/anagram/)
## Introduction

@@ -34,3 +30,3 @@

Provided these lines are towards the end of the shell initialization file (at least after any NVM stuff) this should work for a system installation of Node.js and [nvm](https://github.com/creationix/nvm).
Provided these lines are towards the end of the shell initialization file (at least after any NVM stuff) this should work for a system installation of Node.js and [nvm](https://github.com/creationix/nvm).

@@ -48,3 +44,3 @@ - Put your [Wordnik API key](http://developer.wordnik.com/) into an environment variable **WORDNIK**

As for getting the ANSI color escape codes to work, [Cmder](http://cmder.net/) seems to be the easiest way. It doesn't install a full linux environment like Cygwin, but you can still use some linux commands like **which**, **cat**, and **ls**.
As for getting the ANSI color escape codes to work, [Cmder](http://cmder.net/) seems to be the easiest way. It doesn't install a full linux environment like Cygwin, but you can still use some linux commands like **which**, **cat**, and **ls**.

@@ -101,6 +97,10 @@ ## Usage

## Gratitude
## License
Many thanks to all contributors to the libraries used in this project! And thanks to the creators and maintainers of the APIs that this tool consumes. Acronym Server, Datamuse, Onelook, Rhymebrain, Urban Dictionary, Wordnik, and Wordsmith are awesome!
MIT :copyright: 2017 Andrew Prentice
## Powered by
Acronym Server, Datamuse, Onelook, Rhymebrain, Urban Dictionary, Wordnik, and Wordsmith
## Extras

@@ -107,0 +107,0 @@

@@ -5,3 +5,3 @@ const themes = require('../../themes')

const chalk = require('chalk')
const dot = require('dotty')
const dot = require('dot-prop')
const noon = require('noon')

@@ -22,3 +22,3 @@

if (config.verbose) themes.label(theme, 'down', 'Configuration')
if (dot.exists(config, key)) {
if (dot.has(config, key)) {
value = /\./i.test(key) ? dot.get(config, key) : config[key]

@@ -25,0 +25,0 @@ } else {

@@ -5,3 +5,3 @@ const themes = require('../../themes')

const chalk = require('chalk')
const dot = require('dotty')
const dot = require('dot-prop')
const noon = require('noon')

@@ -23,3 +23,3 @@

if (config.verbose) themes.label(theme, 'down', 'Configuration')
if (dot.exists(config, key)) {
if (dot.has(config, key)) {
if (/\./i.test(key)) {

@@ -29,3 +29,3 @@ if (/^\w*\.date/i.test(key)) {

} else {
dot.put(config, key, value)
dot.set(config, key, value)
}

@@ -32,0 +32,0 @@ } else {

@@ -6,4 +6,4 @@ /* eslint max-len:0 */

const _ = require('lodash')
const df = require('date-fns')
const chalk = require('chalk')
const moment = require('moment')
const http = require('good-guy-http')()

@@ -49,4 +49,4 @@ const noon = require('noon')

const stamp = new Date(config.dmuse.date.stamp)
const hours = moment(new Date()).diff(stamp, 'hours')
const minutes = moment(new Date()).diff(stamp, 'minutes')
const hours = df.differenceInHours(new Date(), stamp)
const minutes = df.differenceInMinutes(new Date(), stamp)
const checkStamp = tools.limitDmuse(config)

@@ -53,0 +53,0 @@ config = checkStamp[0]

@@ -5,3 +5,3 @@ /* eslint max-len:0, no-unused-vars:0 */

const chalk = require('chalk')
const moment = require('moment')
const df = require('date-fns')
const http = require('good-guy-http')()

@@ -38,5 +38,5 @@ const noon = require('noon')

const stamp = new Date(config.dmuse.date.stamp)
const hours = moment(new Date()).diff(stamp, 'hours')
const minutes = moment(new Date()).diff(stamp, 'minutes')
const hours = df.differenceInHours(new Date(), stamp)
const minutes = df.differenceInMinutes(new Date(), stamp)
console.log(chalk.white(`${remain}/${limit} requests remain today, will reset in ${23 - hours} hours, ${59 - minutes} minutes.`))
}

@@ -6,4 +6,4 @@ /* eslint max-len:0 */

const _ = require('lodash')
const df = require('date-fns')
const chalk = require('chalk')
const moment = require('moment')
const http = require('good-guy-http')()

@@ -54,4 +54,4 @@ const noon = require('noon')

const stamp = new Date(config.onelook.date.stamp)
const hours = moment(new Date()).diff(stamp, 'hours')
const minutes = moment(new Date()).diff(stamp, 'minutes')
const hours = df.differenceInHours(new Date(), stamp)
const minutes = df.differenceInMinutes(new Date(), stamp)
if (proceed) {

@@ -58,0 +58,0 @@ const userConfig = {

@@ -6,3 +6,3 @@ /* eslint max-len:0 */

const _ = require('lodash')
const moment = require('moment')
const df = require('date-fns')
const http = require('good-guy-http')()

@@ -54,3 +54,3 @@ const noon = require('noon')

const stamp = new Date(config.rbrain.date.stamp)
const minutes = moment(new Date()).diff(stamp, 'minutes')
const minutes = df.differenceInMinutes(new Date(), stamp)
const checkStamp = tools.limitRbrain(config)

@@ -57,0 +57,0 @@ config = checkStamp[0]

@@ -7,3 +7,3 @@ /* eslint max-len:0 */

const chalk = require('chalk')
const moment = require('moment')
const df = require('date-fns')
const http = require('good-guy-http')()

@@ -48,3 +48,3 @@ const noon = require('noon')

const stamp = new Date(config.rbrain.date.stamp)
const minutes = moment(new Date()).diff(stamp, 'minutes')
const minutes = df.differenceInMinutes(new Date(), stamp)
const checkStamp = tools.limitRbrain(config)

@@ -51,0 +51,0 @@ config = checkStamp[0]

@@ -7,3 +7,3 @@ /* eslint max-len:0 */

const chalk = require('chalk')
const moment = require('moment')
const df = require('date-fns')
const http = require('good-guy-http')()

@@ -55,3 +55,3 @@ const noon = require('noon')

const stamp = new Date(config.rbrain.date.stamp)
const minutes = moment(new Date()).diff(stamp, 'minutes')
const minutes = df.differenceInMinutes(new Date(), stamp)
const checkStamp = tools.limitRbrain(config)

@@ -58,0 +58,0 @@ config = checkStamp[0]

@@ -6,2 +6,3 @@ const themes = require('../themes')

const child = require('child_process')
const fs = require('fs')
const noon = require('noon')

@@ -8,0 +9,0 @@

@@ -6,4 +6,4 @@ /* eslint max-len:0 */

const _ = require('lodash')
const df = require('date-fns')
const chalk = require('chalk')
const moment = require('moment')
const http = require('good-guy-http')()

@@ -68,3 +68,3 @@ const noon = require('noon')

const stamp = new Date(config.wordnik.date.stamp)
const minutes = moment(new Date()).diff(stamp, 'minutes')
const minutes = df.differenceInMinutes(new Date(), stamp)
const checkStamp = tools.limitWordnik(config)

@@ -71,0 +71,0 @@ config = checkStamp[0]

@@ -6,3 +6,3 @@ /* eslint max-len:0 */

const _ = require('lodash')
const moment = require('moment')
const df = require('date-fns')
const http = require('good-guy-http')()

@@ -61,3 +61,3 @@ const noon = require('noon')

const stamp = new Date(config.wordnik.date.stamp)
const minutes = moment(new Date()).diff(stamp, 'minutes')
const minutes = df.differenceInMinutes(new Date(), stamp)
const checkStamp = tools.limitWordnik(config)

@@ -64,0 +64,0 @@ config = checkStamp[0]

@@ -7,3 +7,3 @@ /* eslint max-len:0 */

const chalk = require('chalk')
const moment = require('moment')
const df = require('date-fns')
const http = require('good-guy-http')()

@@ -62,3 +62,3 @@ const noon = require('noon')

const stamp = new Date(config.wordnik.date.stamp)
const minutes = moment(new Date()).diff(stamp, 'minutes')
const minutes = df.differenceInMinutes(new Date(), stamp)
const checkStamp = tools.limitWordnik(config)

@@ -65,0 +65,0 @@ config = checkStamp[0]

@@ -7,3 +7,3 @@ /* eslint max-len:0 */

const chalk = require('chalk')
const moment = require('moment')
const df = require('date-fns')
const http = require('good-guy-http')()

@@ -51,3 +51,3 @@ const noon = require('noon')

const stamp = new Date(config.wordnik.date.stamp)
const minutes = moment(new Date()).diff(stamp, 'minutes')
const minutes = df.differenceInMinutes(new Date(), stamp)
const checkStamp = tools.limitWordnik(config)

@@ -54,0 +54,0 @@ config = checkStamp[0]

@@ -6,3 +6,3 @@ /* eslint max-len:0 */

const _ = require('lodash')
const moment = require('moment')
const df = require('date-fns')
const http = require('good-guy-http')()

@@ -61,3 +61,3 @@ const noon = require('noon')

const stamp = new Date(config.wordnik.date.stamp)
const minutes = moment(new Date()).diff(stamp, 'minutes')
const minutes = df.differenceInMinutes(new Date(), stamp)
const checkStamp = tools.limitWordnik(config)

@@ -64,0 +64,0 @@ config = checkStamp[0]

@@ -6,3 +6,3 @@ /* eslint max-len:0 */

const _ = require('lodash')
const moment = require('moment')
const df = require('date-fns')
const http = require('good-guy-http')()

@@ -67,3 +67,3 @@ const noon = require('noon')

const stamp = new Date(config.wordnik.date.stamp)
const minutes = moment(new Date()).diff(stamp, 'minutes')
const minutes = df.differenceInMinutes(new Date(), stamp)
const checkStamp = tools.limitWordnik(config)

@@ -70,0 +70,0 @@ config = checkStamp[0]

@@ -6,3 +6,3 @@ /* eslint max-len:0 */

const _ = require('lodash')
const moment = require('moment')
const df = require('date-fns')
const http = require('good-guy-http')()

@@ -61,3 +61,3 @@ const noon = require('noon')

const stamp = new Date(config.wordnik.date.stamp)
const minutes = moment(new Date()).diff(stamp, 'minutes')
const minutes = df.differenceInMinutes(new Date(), stamp)
const checkStamp = tools.limitWordnik(config)

@@ -64,0 +64,0 @@ config = checkStamp[0]

/* eslint max-len: 0 */
const chalk = require('chalk')
const df = require('date-fns')
const fs = require('fs-extra')
const moment = require('moment')
const noon = require('noon')

@@ -27,3 +27,3 @@ const ts = require('term-size')

const stamp = new Date(c.onelook.date.stamp)
const hours = moment(new Date()).diff(stamp, 'hours')
const hours = df.differenceInHours(new Date(), stamp)
if (hours < 24) {

@@ -52,3 +52,3 @@ c.onelook.date.remain--

const stamp = new Date(c.dmuse.date.stamp)
const hours = moment(new Date()).diff(stamp, 'hours')
const hours = df.differenceInHours(new Date(), stamp)
if (hours < 24) {

@@ -77,3 +77,3 @@ c.dmuse.date.remain--

const stamp = new Date(c.rbrain.date.stamp)
const minutes = moment(new Date()).diff(stamp, 'minutes')
const minutes = df.differenceInMinutes(new Date(), stamp)
if (minutes < 60) {

@@ -102,3 +102,3 @@ c.rbrain.date.remain--

const stamp = new Date(c.wordnik.date.stamp)
const minutes = moment(new Date()).diff(stamp, 'minutes')
const minutes = df.differenceInMinutes(new Date(), stamp)
if (minutes < 60) {

@@ -105,0 +105,0 @@ c.wordnik.date.remain--

@@ -1,1 +0,1 @@

'use strict';/* eslint max-len: 0, no-undef: 0, no-useless-escape: 0, handle-callback-err: 0 */var themes=require('../src/themes');var tools=require('../src/tools');var child=require('child_process');var expect=require('chai').expect;var fs=require('fs-extra');var noon=require('noon');var sinon=require('sinon');var version=require('../package.json').version;var xml2js=require('xml2js');var CFILE=process.env.HOME+'/.leximaven.noon';var TFILE=process.cwd()+'/test/test.config.noon';var spy=sinon.spy(console,'log');describe('tools',function(){before(function(done){fs.mkdirpSync('test/output');fs.copySync(CFILE,'test/output/saved.config.noon');done();});beforeEach(function(done){spy.reset();done();});after(function(done){fs.copySync('test/output/saved.config.noon',CFILE);fs.removeSync('test/output');done();});describe('check boolean',function(){it('coerces true',function(done){expect(tools.checkBoolean('true')).to.be.true;done();});it('coerces false',function(done){expect(tools.checkBoolean('false')).to.be.false;done();});});describe('check outfile',function(){it('json exists',function(done){var obj={foo:'bar'};var obj2={bar:'foo'};tools.outFile('test/output/test.json',false,obj);expect(spy.calledWith(tools.outFile('test/output/test.json',false,obj2))).to.match(/[a-z\/,\-\. ]*/mig);var actual=fs.readJsonSync('test/output/test.json');expect(actual).to.deep.equal(obj);fs.removeSync('test/output/test.json');done();});it("json doesn't exist",function(done){var obj={foo:'bar'};expect(spy.calledWith(tools.outFile('test/output/test.json',false,obj))).to.match(/[a-z\/,\-\. ]*/mig);fs.removeSync('test/output/test.json');done();});it('xml exists',function(done){var obj={foo:'bar'};tools.outFile('test/output/test.xml',false,obj);tools.outFile('test/output/test.xml',false,obj);done();});it('enforces supported formats',function(done){var obj={foo:'bar'};try{tools.outFile('test/output/test.foo',false,obj);}catch(error){console.log(error);done();}});});describe('check config',function(){it('config exists',function(done){fs.copySync('test/output/saved.config.noon',CFILE);expect(tools.checkConfig(CFILE)).to.be.true;done();});it("config doesn't exist",function(done){fs.removeSync(CFILE);try{tools.checkConfig(CFILE);}catch(error){console.log(error);done();}});});describe('array to string',function(){var array=['enclosed string'];var string='normal string';it('extracts string from array',function(done){expect(tools.arrToStr(array)).to.equals('enclosed string');done();});it('returns string when not enclosed',function(done){expect(tools.arrToStr(string)).to.equals('normal string');done();});});describe('rate-limiting',function(){it('resets datamuse limit',function(done){fs.copySync('test/test.config.noon',CFILE);var config=noon.load(CFILE);config.dmuse.date.stamp=new Date().toJSON().replace(/2016/,'2015');config.dmuse.date.remain=99998;var checkStamp=tools.limitDmuse(config);var c=checkStamp[0];var proceed=checkStamp[1];var reset=checkStamp[2];expect(c.dmuse.date.remain).to.match(/\d+/mig);expect(c.dmuse.date.stamp).to.match(/201\d[\-\d]*T[0-9:\.\-Z]*/mig);expect(proceed).to.equals(true);expect(reset).to.equals(false);done();});it('decrements datamuse limit',function(done){fs.copySync('test/test.config.noon',CFILE);var config=noon.load(CFILE);config.dmuse.date.stamp=new Date().toJSON();config.dmuse.date.remain=100000;var checkStamp=tools.limitDmuse(config);var c=checkStamp[0];var proceed=checkStamp[1];var reset=checkStamp[2];expect(c.dmuse.date.remain).to.equals(99999);expect(proceed).to.equals(true);expect(reset).to.equals(false);done();});it('reaches datamuse limit',function(done){fs.copySync('test/test.config.noon',CFILE);var config=noon.load(CFILE);config.dmuse.date.stamp=new Date().toJSON();config.dmuse.date.remain=0;var checkStamp=tools.limitDmuse(config);var c=checkStamp[0];var proceed=checkStamp[1];var reset=checkStamp[2];expect(c.dmuse.date.remain).to.equals(0);expect(proceed).to.equals(false);expect(reset).to.equals(false);done();});it('resets onelook limit',function(done){fs.copySync('test/test.config.noon',CFILE);var config=noon.load(CFILE);config.onelook.date.stamp=new Date().toJSON().replace(/2016/,'2015');config.onelook.date.remain=9998;var checkStamp=tools.limitOnelook(config);var c=checkStamp[0];var proceed=checkStamp[1];var reset=checkStamp[2];expect(c.onelook.date.remain).to.match(/\d+/mig);expect(c.onelook.date.stamp).to.match(/201\d[\-\d]*T[0-9:\.\-Z]*/mig);expect(proceed).to.equals(true);expect(reset).to.equals(false);done();});it('decrements onelook limit',function(done){fs.copySync('test/test.config.noon',CFILE);var config=noon.load(CFILE);config.onelook.date.stamp=new Date().toJSON();config.onelook.date.remain=10000;var checkStamp=tools.limitOnelook(config);var c=checkStamp[0];var proceed=checkStamp[1];var reset=checkStamp[2];expect(c.onelook.date.remain).to.equals(9999);expect(proceed).to.equals(true);expect(reset).to.equals(false);done();});it('reaches onelook limit',function(done){fs.copySync('test/test.config.noon',CFILE);var config=noon.load(CFILE);config.onelook.date.stamp=new Date().toJSON();config.onelook.date.remain=0;var checkStamp=tools.limitOnelook(config);var c=checkStamp[0];var proceed=checkStamp[1];var reset=checkStamp[2];expect(c.onelook.date.remain).to.equals(0);expect(proceed).to.equals(false);expect(reset).to.equals(false);done();});it('resets rhymebrain limit',function(done){fs.copySync('test/test.config.noon',CFILE);var config=noon.load(CFILE);config.rbrain.date.stamp=new Date().toJSON().replace(/2017/,'2016');config.rbrain.date.remain=348;var checkStamp=tools.limitRbrain(config);var c=checkStamp[0];var proceed=checkStamp[1];var reset=checkStamp[2];expect(c.rbrain.date.remain).to.match(/\d+/mig);expect(c.rbrain.date.stamp).to.match(/201\d[\-\d]*T[0-9:\.\-Z]*/mig);expect(proceed).to.equals(true);expect(reset).to.equals(true);done();});it('decrements rhymebrain limit',function(done){fs.copySync('test/test.config.noon',CFILE);var config=noon.load(CFILE);config.rbrain.date.stamp=new Date().toJSON();config.rbrain.date.remain=350;var checkStamp=tools.limitRbrain(config);var c=checkStamp[0];var proceed=checkStamp[1];var reset=checkStamp[2];expect(c.rbrain.date.remain).to.equals(349);expect(proceed).to.equals(true);expect(reset).to.equals(false);done();});it('reaches rhymebrain limit',function(done){fs.copySync('test/test.config.noon',CFILE);var config=noon.load(CFILE);config.rbrain.date.stamp=new Date().toJSON();config.rbrain.date.remain=0;var checkStamp=tools.limitRbrain(config);var c=checkStamp[0];var proceed=checkStamp[1];var reset=checkStamp[2];expect(c.rbrain.date.remain).to.equals(0);expect(proceed).to.equals(false);expect(reset).to.equals(false);done();});it('resets wordnik limit',function(done){fs.copySync('test/test.config.noon',CFILE);var config=noon.load(CFILE);config.wordnik.date.stamp=new Date().toJSON().replace(/2016/,'2015');config.wordnik.date.remain=14998;var checkStamp=tools.limitWordnik(config);var c=checkStamp[0];var proceed=checkStamp[1];var reset=checkStamp[2];expect(c.wordnik.date.remain).to.match(/\d+/mig);expect(c.wordnik.date.stamp).to.match(/201\d[\-\d]*T[0-9:\.\-Z]*/mig);expect(proceed).to.equals(true);expect(reset).to.equals(false);done();});it('decrements wordnik limit',function(done){fs.copySync('test/test.config.noon',CFILE);var config=noon.load(CFILE);config.wordnik.date.stamp=new Date().toJSON();config.wordnik.date.remain=15000;var checkStamp=tools.limitWordnik(config);var c=checkStamp[0];var proceed=checkStamp[1];var reset=checkStamp[2];expect(c.wordnik.date.remain).to.equals(14999);expect(proceed).to.equals(true);expect(reset).to.equals(false);done();});it('reaches wordnik limit',function(done){fs.copySync('test/test.config.noon',CFILE);var config=noon.load(CFILE);config.wordnik.date.stamp=new Date().toJSON();config.wordnik.date.remain=0;var checkStamp=tools.limitWordnik(config);var c=checkStamp[0];var proceed=checkStamp[1];var reset=checkStamp[2];expect(c.wordnik.date.remain).to.equals(0);expect(proceed).to.equals(false);expect(reset).to.equals(false);done();});});});describe('themes',function(){beforeEach(function(){spy.reset();});after(function(){return spy.restore();});describe('get themes',function(){it('returns an array of theme names',function(done){var list=themes.getThemes().sort();var obj=['colonel','markup','square'];expect(list).to.deep.equal(obj);done();});});describe('load theme',function(){it('returns a theme',function(done){var theme=themes.loadTheme('square');var obj={prefix:{str:'[',style:'bold.green'},text:{style:'bold.white'},content:{style:'white'},suffix:{str:']',style:'bold.green'},connector:{str:'→',style:'bold.cyan'}};expect(theme).to.deep.equal(obj);done();});});describe('labels',function(){var theme=themes.loadTheme('square');var text='label';it('labels right',function(done){var content='right';expect(spy.calledWith(themes.label(theme,'right',text,content))).to.be.true;done();});it('labels down',function(done){var content='down';expect(spy.calledWith(themes.label(theme,'down',text,content))).to.be.true;done();});it('labels without content',function(done){expect(spy.calledWith(themes.label(theme,'right',text))).to.be.true;done();});it('enforces right or down',function(done){try{themes.label(theme,'err','label');}catch(error){console.log(error);done();}});});});describe('config commands',function(){before(function(done){fs.mkdirpSync('test/output');fs.copySync(CFILE,'test/output/saved.config.noon');done();});after(function(done){fs.copySync('test/output/saved.config.noon',CFILE);fs.removeSync('test/output');done();});describe('get',function(){it('shows value of option onelook.links',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js config get onelook.links > test/output/config-get.out',function(err){var stdout=fs.readFileSync('test/output/config-get.out','utf8');expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/Option onelook.links is (true|false)\./mig);done(err);});});});describe('init',function(){before(function(done){fs.removeSync(CFILE);done();});it('creates the config file',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js config init > test/output/config-init.out',function(err){var stdout=fs.readFileSync('test/output/config-init.out','utf8');var config=noon.load(CFILE);var obj={anagram:{case:1,lang:'english',limit:10,linenum:false,list:false,maxletter:50,maxword:10,minletter:1,repeat:false},dmuse:{date:{interval:'day',limit:100000,remain:100000,stamp:''},max:5},merge:true,onelook:{date:{interval:'day',limit:10000,remain:10000,stamp:''},links:false},rbrain:{combine:{lang:'en',max:5},date:{interval:'hour',limit:350,remain:350,stamp:''},info:{lang:'en'},rhyme:{lang:'en',max:50}},theme:'square',urban:{limit:5},usage:true,verbose:false,wordmap:{limit:1},wordnik:{date:{interval:'hour',limit:15000,remain:15000,stamp:''},define:{canon:false,defdict:'all',limit:5,part:''},example:{canon:false,limit:5,skip:0},hyphen:{canon:false,dict:'all',limit:5},origin:{canon:false},phrase:{canon:false,limit:5,weight:13},pronounce:{canon:false,dict:'',limit:5,type:''},relate:{canon:false,limit:10,type:''}}};config.dmuse.date.stamp='';config.dmuse.date.remain=100000;config.onelook.date.stamp='';config.onelook.date.remain=10000;config.rbrain.date.stamp='';config.rbrain.date.remain=350;config.wordnik.date.stamp='';config.wordnik.date.remain=15000;expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/Created [a-z\/\.]*/mig);expect(config).to.deep.equal(obj);done(err);});});it('force overwrites existing and prints config',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js config init -f -v > test/output/config-init.out',function(err){var stdout=fs.readFileSync('test/output/config-init.out','utf8');expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/[a-z0-9 \/\.\[\]:\-\s|]*/mig);done(err);});});});describe('set',function(){it('sets value of option onelook.links to false',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js config set onelook.links false > test/output/config-set.out',function(err){var stdout=fs.readFileSync('test/output/config-set.out','utf8');expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/Set option onelook.links to (true|false)\./mig);done(err);});});});});describe('datamuse commands',function(){before(function(done){fs.mkdirpSync('test/output');var obj=noon.load(TFILE);obj.dmuse.date.stamp=new Date().toJSON();obj.onelook.date.stamp=new Date().toJSON();obj.rbrain.date.stamp=new Date().toJSON();obj.wordnik.date.stamp=new Date().toJSON();var fileExists=null;try{fs.statSync(CFILE);fileExists=true;}catch(e){if(e.code==='ENOENT'){fileExists=false;}}if(fileExists){var config=noon.load(CFILE);obj.dmuse.date.stamp=config.dmuse.date.stamp;obj.dmuse.date.remain=config.dmuse.date.remain;obj.onelook.date.stamp=config.onelook.date.stamp;obj.onelook.date.remain=config.onelook.date.remain;obj.rbrain.date.stamp=config.rbrain.date.stamp;obj.rbrain.date.remain=config.rbrain.date.remain;obj.wordnik.date.stamp=config.wordnik.date.stamp;obj.wordnik.date.remain=config.wordnik.date.remain;fs.copySync(CFILE,'test/output/saved.config.noon');}noon.save(CFILE,obj);done();});after(function(done){var fileExists=null;try{fs.statSync('test/output/saved.config.noon');fileExists=true;}catch(e){if(e.code==='ENOENT'){fileExists=false;}}if(fileExists){fs.removeSync(CFILE);fs.copySync('test/output/saved.config.noon',CFILE);}else{fs.removeSync(CFILE);}fs.removeSync('test/output');done();});describe('get',function(){it('shows output',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js datamuse get -s -o '+process.cwd()+'/test/output/dmuse.json ml=ubiquity > test/output/dmuse-get.out',function(err){var stdout=fs.readFileSync('test/output/dmuse-get.out','utf8');var obj={type:'datamuse',source:'http://datamuse.com/api',url:'http://api.datamuse.com/words?max=5&&ml=ubiquity',match0:'ubiquitousness',tags1:'noun',match1:'omnipresence',match2:'pervasiveness',tags0:'noun',match3:'prevalence'};var json=fs.readJsonSync(process.cwd()+'/test/output/dmuse.json');expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/[a-z\[\]→\s,]*\/dmuse.json./mig);expect(json).to.deep.equal(obj);done(err);});});});describe('info',function(){it('shows metrics',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js dmuse info > test/output/dmuse-info.out',function(err){var stdout=fs.readFileSync('test/output/dmuse-info.out','utf8');expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/\d+\/\d+[a-z0-9 ,\.\s\(\):\/%]*/);done(err);});});});});describe('rhymebrain commands',function(){before(function(done){fs.mkdirpSync('test/output');var obj=noon.load(TFILE);obj.dmuse.date.stamp=new Date().toJSON();obj.onelook.date.stamp=new Date().toJSON();obj.rbrain.date.stamp=new Date().toJSON();obj.wordnik.date.stamp=new Date().toJSON();var fileExists=null;try{fs.statSync(CFILE);fileExists=true;}catch(e){if(e.code==='ENOENT'){fileExists=false;}}if(fileExists){var config=noon.load(CFILE);obj.dmuse.date.stamp=config.dmuse.date.stamp;obj.dmuse.date.remain=config.dmuse.date.remain;obj.onelook.date.stamp=config.onelook.date.stamp;obj.onelook.date.remain=config.onelook.date.remain;obj.rbrain.date.stamp=config.rbrain.date.stamp;obj.rbrain.date.remain=config.rbrain.date.remain;obj.wordnik.date.stamp=config.wordnik.date.stamp;obj.wordnik.date.remain=config.wordnik.date.remain;fs.copySync(CFILE,'test/output/saved.config.noon');}noon.save(CFILE,obj);done();});after(function(done){var fileExists=null;try{fs.statSync('test/output/saved.config.noon');fileExists=true;}catch(e){if(e.code==='ENOENT'){fileExists=false;}}if(fileExists){fs.removeSync(CFILE);fs.copySync('test/output/saved.config.noon',CFILE);}else{fs.removeSync(CFILE);}fs.removeSync('test/output');done();});describe('combine',function(){it('shows output',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js rbrain combine -s -m1 -o '+process.cwd()+'/test/output/combine.json value > test/output/combine.out',function(err){var stdout=fs.readFileSync('test/output/combine.out','utf8');var obj={type:'portmanteau',source:'http://rhymebrain.com',url:'http://rhymebrain.com/talk?function=getPortmanteaus&word=value&lang=en&maxResults=1&',set0:'value,unique',portmanteau0:'valunique'};var json=fs.readJsonSync(process.cwd()+'/test/output/combine.json');expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/[\[\]a-z0-9,→ -\/\.]*/mig);expect(json).to.deep.equal(obj);done(err);});});});describe('info',function(){it('shows output',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js rbrain info -s -o '+process.cwd()+'/test/output/info.json fuck > test/output/info.out',function(err){var stdout=fs.readFileSync('test/output/info.out','utf8');var obj={type:'word info',source:'http://rhymebrain.com',url:'http://rhymebrain.com/talk?function=getWordInfo&word=fuck&lang=en',arpabet:'F AH1 K',ipa:'ˈfʌk',syllables:'1',offensive:true,dict:true,trusted:true};var json=fs.readJsonSync(process.cwd()+'/test/output/info.json');expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/[\[\]a-z0-9 -→ˈʌ\/\.,]*/mig);expect(json).to.deep.equal(obj);done(err);});});});describe('rhyme',function(){it('shows output',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js rbrain rhyme -s -m1 -o '+process.cwd()+'/test/output/rhyme.json too > test/output/rhyme.out',function(err){var stdout=fs.readFileSync('test/output/rhyme.out','utf8');var obj={type:'rhyme',source:'http://rhymebrain.com',url:'http://rhymebrain.com/talk?function=getRhymes&word=too&lang=en&maxResults=1&',rhyme0:'to'};var json=fs.readJsonSync(process.cwd()+'/test/output/rhyme.json');expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/\[Rhymes\]→[a-z*, ]*\sWrote data to [a-z\/\.]*\s\d*\/\d*[a-z0-9 ,\.]*/mig);expect(json).to.deep.equal(obj);done(err);});});});});describe('wordnik commands',function(){before(function(done){fs.mkdirpSync('test/output');var obj=noon.load(TFILE);obj.dmuse.date.stamp=new Date().toJSON();obj.onelook.date.stamp=new Date().toJSON();obj.rbrain.date.stamp=new Date().toJSON();obj.wordnik.date.stamp=new Date().toJSON();var fileExists=null;try{fs.statSync(CFILE);fileExists=true;}catch(e){if(e.code==='ENOENT'){fileExists=false;}}if(fileExists){var config=noon.load(CFILE);obj.dmuse.date.stamp=config.dmuse.date.stamp;obj.dmuse.date.remain=config.dmuse.date.remain;obj.onelook.date.stamp=config.onelook.date.stamp;obj.onelook.date.remain=config.onelook.date.remain;obj.rbrain.date.stamp=config.rbrain.date.stamp;obj.rbrain.date.remain=config.rbrain.date.remain;obj.wordnik.date.stamp=config.wordnik.date.stamp;obj.wordnik.date.remain=config.wordnik.date.remain;fs.copySync(CFILE,'test/output/saved.config.noon');}noon.save(CFILE,obj);done();});after(function(done){var fileExists=null;try{fs.statSync('test/output/saved.config.noon');fileExists=true;}catch(e){if(e.code==='ENOENT'){fileExists=false;}}if(fileExists){fs.removeSync(CFILE);fs.copySync('test/output/saved.config.noon',CFILE);}else{fs.removeSync(CFILE);}fs.removeSync('test/output');done();});describe('define',function(){it('shows output',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js wordnik define -s -l1 -o '+process.cwd()+'/test/output/define.json ubiquity > test/output/define.out',function(err){var stdout=fs.readFileSync('test/output/define.out','utf8');var obj={type:'definition',source:'http://www.wordnik.com',text0:'Existence or apparent existence everywhere at the same time; omnipresence: "the repetitiveness, the selfsameness, and the ubiquity of modern mass culture” ( Theodor Adorno ). ',deftype0:'noun',source0:'ahd-legacy'};var json=fs.readJsonSync(process.cwd()+'/test/output/define.json');expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/[a-z\[\]→ ;:",\-\(\)\.\/”]*Wrote data to [a-z\/\.]*/mig);expect(json).to.deep.equal(obj);done(err);});});});describe('example',function(){it('shows output',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js wordnik example -s -l1 -o '+process.cwd()+'/test/output/example.json ubiquity > test/output/example.out',function(err){var stdout=fs.readFileSync('test/output/example.out','utf8');var obj={type:'example',source:'http://www.wordnik.com',example0:'Both are characterized by their ubiquity and their antiquity: No known human culture lacks them, and musical instruments are among the oldest human artifacts, dating to the Late Pleistocene about 50,000 years ago.'};var json=fs.readJsonSync(process.cwd()+'/test/output/example.json');expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/[a-z0-9\[\] →:,\.]*\sWrote data to [a-z\/\.]*/mig);expect(json).to.deep.equal(obj);done(err);});});});describe('hyphen',function(){it('shows output',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js wordnik hyphen -s -o '+process.cwd()+'/test/output/hyphen.json ubiquity > test/output/hyphen.out',function(err){var stdout=fs.readFileSync('test/output/hyphen.out','utf8');var obj={type:'hyphenation',source:'http://www.wordnik.com',syllable0:'u',stress1:'biq',syllable2:'ui',syllable3:'ty'};var json=fs.readJsonSync(process.cwd()+'/test/output/hyphen.json');expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/\[Hyphenation\]→[a-z\-]*\sWrote data to [a-z\/\.]*\s\d*\/\d*[a-z0-9 ,\.]*/mig);expect(json).to.deep.equal(obj);done(err);});});});describe('origin',function(){it('shows output',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js wordnik origin -s -o '+process.cwd()+'/test/output/origin.json ubiquity > test/output/origin.out',function(err){var stdout=fs.readFileSync('test/output/origin.out','utf8');var obj={type:'etymology',source:'http://www.wordnik.com',etymology:'[L. everywhere, fr. where, perhaps for , (cf. anywhere), and if so akin to E. : cf. F. .]',origin:'ubique, ubi, cubi, quobi, alicubi, who, ubiquit√©'};var json=fs.readJsonSync(process.cwd()+'/test/output/origin.json');expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/[a-z \[\]→\.,\(\):√©]*Wrote data to [a-z\/\.]*/mig);expect(json).to.deep.equal(obj);done(err);});});});describe('phrase',function(){it('shows output',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js wordnik phrase -s -l1 -o '+process.cwd()+'/test/output/phrase.json ubiquitous > test/output/phrase.out',function(err){var stdout=fs.readFileSync('test/output/phrase.out','utf8');var obj={type:'phrase',source:'http://www.wordnik.com',agram0:'ubiquitous',bgram0:'amoeba'};var json=fs.readJsonSync(process.cwd()+'/test/output/phrase.json');expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/[a-z\[\]\-\s]*Wrote data to [a-z\/\.]*/mig);expect(json).to.deep.equal(obj);done(err);});});});describe('pronounce',function(){it('shows output',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js wordnik pronounce -s -o '+process.cwd()+'/test/output/pronounce.json ubiquity > test/output/pronounce.out',function(err){var stdout=fs.readFileSync('test/output/pronounce.out','utf8');var obj={type:'pronunciation',source:'http://www.wordnik.com',word:'ubiquity',pronunciation0:'(yo͞o-bĭkˈwĭ-tē)',type0:'ahd-legacy',pronunciation1:'Y UW0 B IH1 K W IH0 T IY0',type1:'arpabet'};var json=fs.readJsonSync(process.cwd()+'/test/output/pronounce.json');expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/[a-z0-9\[\]\(\) \-→ĭēˈ\so͞]*\sWrote data to [a-z\/\.]*/mig);expect(json).to.deep.equal(obj);done(err);});});});describe('relate',function(){it('shows output',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js wordnik related -s -l1 -o '+process.cwd()+'/test/output/relate.json ubiquity > test/output/relate.out',function(err){var stdout=fs.readFileSync('test/output/relate.out','utf8');var obj={type:'related words',source:'http://www.wordnik.com',word:'ubiquity',type0:'antonym',words0:'uniquity',type1:'hypernym',words1:'presence',type2:'cross-reference',words2:'ubiquity of the king',type3:'synonym',words3:'omnipresence',type4:'rhyme',words4:'iniquity',type5:'same-context',words5:'omnipresence'};var json=fs.readJsonSync(process.cwd()+'/test/output/relate.json');expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/[a-z \[\],\-→]*\sWrote data to [a-z\/\.]*/mig);expect(json).to.deep.equal(obj);done(err);});});});});describe('root commands',function(){before(function(done){fs.mkdirpSync('test/output');var obj=noon.load(TFILE);obj.dmuse.date.stamp=new Date().toJSON();obj.onelook.date.stamp=new Date().toJSON();obj.rbrain.date.stamp=new Date().toJSON();obj.wordnik.date.stamp=new Date().toJSON();var fileExists=null;try{fs.statSync(CFILE);fileExists=true;}catch(e){if(e.code==='ENOENT'){fileExists=false;}}if(fileExists){var config=noon.load(CFILE);obj.dmuse.date.stamp=config.dmuse.date.stamp;obj.dmuse.date.remain=config.dmuse.date.remain;obj.onelook.date.stamp=config.onelook.date.stamp;obj.onelook.date.remain=config.onelook.date.remain;obj.rbrain.date.stamp=config.rbrain.date.stamp;obj.rbrain.date.remain=config.rbrain.date.remain;obj.wordnik.date.stamp=config.wordnik.date.stamp;obj.wordnik.date.remain=config.wordnik.date.remain;fs.copySync(CFILE,'test/output/saved.config.noon');noon.save(CFILE,obj);}else{noon.save(CFILE,obj);}done();});after(function(done){var fileExists=null;try{fs.statSync('test/output/saved.config.noon');fileExists=true;}catch(e){if(e.code==='ENOENT'){fileExists=false;}}if(fileExists){fs.removeSync(CFILE);fs.copySync('test/output/saved.config.noon',CFILE);}else{fs.removeSync(CFILE);}fs.removeSync('test/output');done();});describe('acronym',function(){it('shows output',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js acronym -o '+process.cwd()+'/test/output/acronym.json DDC > test/output/acronym.out',function(err){var stdout=fs.readFileSync('test/output/acronym.out','utf8');var json=fs.readJsonSync(process.cwd()+'/test/output/acronym.json');var obj={type:'acronym',source:'http://acronyms.silmaril.ie',url:'http://acronyms.silmaril.ie/cgi-bin/xaa?DDC',expansion0:'Dewey Decimal Classification',comment0:'library and knowledge classification system',url0:'http://www.oclc.org/dewey/',DDC0:'040',expansion1:'Digital Data Converter',DDC1:'040',expansion2:'Digital Down Converter',DDC2:'000',expansion3:'Direct Department Calling',DDC3:'040',expansion4:'Dodge City Municipal airport (code)',comment4:'United States',DDC4:'387'};expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/Found \d* acronyms for [a-z]*:\s[a-z0-9\s-:\/\.|(|)]*Wrote data to [a-z\/]*.json./mig);expect(json).to.deep.equal(obj);done(err);});});it('forces writing json',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js acronym -f -o '+process.cwd()+'/test/output/acronym.json DDC > test/output/acronym.out',function(err){var stdout=fs.readFileSync('test/output/acronym.out','utf8');var json=fs.readJsonSync(process.cwd()+'/test/output/acronym.json');var obj={type:'acronym',source:'http://acronyms.silmaril.ie',url:'http://acronyms.silmaril.ie/cgi-bin/xaa?DDC',expansion0:'Dewey Decimal Classification',comment0:'library and knowledge classification system',url0:'http://www.oclc.org/dewey/',DDC0:'040',expansion1:'Digital Data Converter',DDC1:'040',expansion2:'Digital Down Converter',DDC2:'000',expansion3:'Direct Department Calling',DDC3:'040',expansion4:'Dodge City Municipal airport (code)',comment4:'United States',DDC4:'387'};expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/Found \d* acronyms for [a-z]*:\s[a-z0-9\s-:\/\.|(|)]*Overwrote [a-z\/\.]* with data./mig);expect(json).to.deep.equal(obj);done(err);});});it('writes xml',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js acronym -o '+process.cwd()+'/test/output/acronym.xml DDC',function(err){var obj={type:'acronym',source:'http://acronyms.silmaril.ie',url:'http://acronyms.silmaril.ie/cgi-bin/xaa?DDC',expansion0:'Dewey Decimal Classification',comment0:'library and knowledge classification system',url0:'http://www.oclc.org/dewey/',DDC0:'040',expansion1:'Digital Data Converter',DDC1:'040',expansion2:'Digital Down Converter',DDC2:'000',expansion3:'Direct Department Calling',DDC3:'040',expansion4:'Dodge City Municipal airport (code)',comment4:'United States',DDC4:'387'};var xml=fs.readFileSync(process.cwd()+'/test/output/acronym.xml','utf8');var parser=new xml2js.Parser();parser.parseString(xml,function(err,result){var fixed=result.root;fixed.type=fixed.type[0];fixed.source=fixed.source[0];fixed.url=fixed.url[0];fixed.expansion0=fixed.expansion0[0];fixed.expansion1=fixed.expansion1[0];fixed.expansion2=fixed.expansion2[0];fixed.expansion3=fixed.expansion3[0];fixed.expansion4=fixed.expansion4[0];fixed.url0=fixed.url0[0];fixed.comment0=fixed.comment0[0];fixed.comment4=fixed.comment4[0];fixed.DDC0=fixed.DDC0[0];fixed.DDC1=fixed.DDC1[0];fixed.DDC2=fixed.DDC2[0];fixed.DDC3=fixed.DDC3[0];fixed.DDC4=fixed.DDC4[0];expect(fixed).to.deep.equal(obj);done(err);});});});it('forces writing xml',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js acronym -f -o '+process.cwd()+'/test/output/acronym.xml DDC',function(err){var obj={type:'acronym',source:'http://acronyms.silmaril.ie',url:'http://acronyms.silmaril.ie/cgi-bin/xaa?DDC',expansion0:'Dewey Decimal Classification',comment0:'library and knowledge classification system',url0:'http://www.oclc.org/dewey/',DDC0:'040',expansion1:'Digital Data Converter',DDC1:'040',expansion2:'Digital Down Converter',DDC2:'000',expansion3:'Direct Department Calling',DDC3:'040',expansion4:'Dodge City Municipal airport (code)',comment4:'United States',DDC4:'387'};var xml=fs.readFileSync(process.cwd()+'/test/output/acronym.xml','utf8');var parser=new xml2js.Parser();parser.parseString(xml,function(err,result){var fixed=result.root;fixed.type=fixed.type[0];fixed.source=fixed.source[0];fixed.url=fixed.url[0];fixed.expansion0=fixed.expansion0[0];fixed.expansion1=fixed.expansion1[0];fixed.expansion2=fixed.expansion2[0];fixed.expansion3=fixed.expansion3[0];fixed.expansion4=fixed.expansion4[0];fixed.url0=fixed.url0[0];fixed.comment0=fixed.comment0[0];fixed.comment4=fixed.comment4[0];fixed.DDC0=fixed.DDC0[0];fixed.DDC1=fixed.DDC1[0];fixed.DDC2=fixed.DDC2[0];fixed.DDC3=fixed.DDC3[0];fixed.DDC4=fixed.DDC4[0];expect(fixed).to.deep.equal(obj);done(err);});});});});describe('anagram',function(){it('shows output',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js anagram -s -o '+process.cwd()+'/test/output/anagram.json ubiquity > test/output/anagram.out',function(err){var stdout=fs.readFileSync('test/output/anagram.out','utf8');var json=fs.readJsonSync(process.cwd()+'/test/output/anagram.json');var obj={type:'anagram',source:'http://wordsmith.org/',url:'http://wordsmith.org/anagram/anagram.cgi?anagram=ubiquity&language=english&t=10&d=10&include=&exclude=&n=1&m=50&a=n&l=n&q=n&k=1&src=adv',found:'2',show:'all',alist:['Ubiquity','Buy I Quit']};expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/[Anagrams\]\sAnagrams for: [a-z]*\s\d* found. Displaying all:\s[a-z\/\.\s]*/mig);expect(json).to.deep.equal(obj);done(err);});});it('handles too long input',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js anagram johnjacobjingleheimerschmidtthatsmynametoo > test/output/anagram.out',function(err){var stdout=fs.readFileSync('test/output/anagram.out','utf8');expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/Input[a-z0-9 \(\)\.']*\s[a-z \.]*/mig);done(err);});});it('handles no found anagrams',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js anagram bcdfghjklmnp > test/output/anagram.out',function(err){var stdout=fs.readFileSync('test/output/anagram.out','utf8');expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/No anagrams found\./mig);done(err);});});});describe('comp',function(){it('outputs shell completion script',function(done){child.exec('node '+__dirname+'/../bin/leximaven.js comp > test/output/comp.out',function(err){var stdout=fs.readFileSync('test/output/comp.out','utf8');expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/[#\-a-z0-9\.\s:\/>~_\(\)\{\}\[\]="$@,;]*/mig);done(err);});});});describe('help',function(){it('shows usage',function(done){child.exec('node '+__dirname+'/../bin/leximaven.js --help > test/output/help.out',function(err){var stdout=fs.readFileSync('test/output/help.out','utf8');expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/[\/\\_\(\) '-|]+\sUsage:\s[a-z\/\.]* <command> \[options\]\s*Commands:\s*[a-z \<\>\[\]:\s,]*Options:\s*[a-z \-,\[\]\s]*/mig);done(err);});});});describe('ls',function(){it('demonstrates installed themes',function(done){child.exec('node '+__dirname+'/../bin/leximaven.js ls > test/output/ls.out',function(err){var stdout=fs.readFileSync('test/output/ls.out','utf8');expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/[a-z :|,.<>\-\[\]→]*/mig);done(err);});});});describe('map',function(){it('shows output',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js map -s ubiquity > test/output/map.out',function(err){var stdout=fs.readFileSync('test/output/map.out','utf8');expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/[a-z0-9\[\],→ ;:'\?"\(\)-…\/\.√©ĭēˈɪ”]*/mig);done(err);});});});describe('onelook',function(){it('shows output',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js onelook -s -o '+process.cwd()+'/test/output/onelook.json ubiquity > test/output/onelook.out',function(err){var stdout=fs.readFileSync('test/output/onelook.out','utf8');var obj={type:'onelook',source:'http://www.onelook.com',url:'http://onelook.com/?xml=1&w=ubiquity',definition:'noun: the state of being everywhere at once (or seeming to be everywhere at once)',phrase:'ubiquity records',sim:'omnipresence,ubiquitousness'};var json=fs.readJsonSync(process.cwd()+'/test/output/onelook.json');expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/[a-z0-9\[\]:\(\)→ \/\.,]*/mig);expect(json).to.deep.equal(obj);done(err);});});it('provides resource links',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js onelook -l ubiquity > test/output/onelook.out',function(err){var stdout=fs.readFileSync('test/output/onelook.out','utf8');expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/[a-z0-9\[\]:\(\)→ \/\.,]*\s\[Resources\]\s[a-z0-9 \s\[\]→:\/\._#\?=\-',&%\(\)\+]*/mig);done(err);});});});describe('urban',function(){it('shows output',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js urban -s -l1 -o '+process.cwd()+'/test/output/urban.json flip the bird > test/output/urban.out',function(err){var stdout=fs.readFileSync('test/output/urban.out','utf8');var obj={type:'urban',source:'http://www.urbandictionary.com',url:'http://api.urbandictionary.com/v0/define?term=flip+the+bird',definition0:'1. The act of rotating an avian creature through more than 90 degrees.\r\n\r\n2. The act of extending the central digit of the hand with the intent to cause offense.'};var json=fs.readJsonSync(process.cwd()+'/test/output/urban.json');expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/[a-z0-9 \[\]→\.\/\s]*/mig);expect(json).to.deep.equal(obj);done(err);});});});describe('version',function(){it('prints the version number',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js --version',function(err,stdout){expect(stdout).to.contain(version);done(err);});});});});
'use strict';/* eslint max-len: 0, no-undef: 0, no-useless-escape: 0, handle-callback-err: 0, no-empty-label:0, no-unused-expressions: 0, no-unused-vars: 0 */var themes=require('../src/themes');var tools=require('../src/tools');var child=require('child_process');var expect=require('chai').expect;var fs=require('fs-extra');var noon=require('noon');var sinon=require('sinon');var version=require('../package.json').version;var wrap=require('wrap-ansi');var xml2js=require('xml2js');var CFILE=process.env.HOME+'/.leximaven.noon';var TFILE=process.cwd()+'/test/test.config.noon';var spy=sinon.spy(console,'log');describe('tools',function(){before(function(done){fs.mkdirpSync('test/output');fs.copySync(CFILE,'test/output/saved.config.noon');done();});after(function(done){fs.copySync('test/output/saved.config.noon',CFILE);fs.removeSync('test/output');done();});describe('check boolean',function(){it('coerces true',function(done){expect(tools.checkBoolean('true')).to.be.true;done();});it('coerces false',function(done){expect(tools.checkBoolean('false')).to.be.false;done();});});describe('check outfile',function(){it('json exists',function(done){var obj={foo:'bar'};var obj2={bar:'foo'};tools.outFile('test/output/test.json',false,obj);expect(spy.calledWith(tools.outFile('test/output/test.json',false,obj2))).to.match(/[a-z\/,\-\. ]*/mig);var actual=fs.readJsonSync('test/output/test.json');expect(actual).to.deep.equal(obj);fs.removeSync('test/output/test.json');done();});it("json doesn't exist",function(done){var obj={foo:'bar'};expect(spy.calledWith(tools.outFile('test/output/test.json',false,obj))).to.match(/[a-z\/,\-\. ]*/mig);fs.removeSync('test/output/test.json');done();});it('xml exists',function(done){var obj={foo:'bar'};tools.outFile('test/output/test.xml',false,obj);tools.outFile('test/output/test.xml',false,obj);done();});it('enforces supported formats',function(done){var obj={foo:'bar'};try{tools.outFile('test/output/test.foo',false,obj);}catch(error){console.log(error);done();}});});describe('check config',function(){it('config exists',function(done){fs.copySync('test/output/saved.config.noon',CFILE);expect(tools.checkConfig(CFILE)).to.be.true;done();});it("config doesn't exist",function(done){fs.removeSync(CFILE);try{tools.checkConfig(CFILE);}catch(error){console.log(error);done();}});});describe('array to string',function(){var array=['enclosed string'];var string='normal string';it('extracts string from array',function(done){expect(tools.arrToStr(array)).to.equals('enclosed string');done();});it('returns string when not enclosed',function(done){expect(tools.arrToStr(string)).to.equals('normal string');done();});});describe('boolean to binary',function(){var bool=true;it('returns a zero or one',function(done){expect(tools.boolToBin(bool)).to.equals(1);done();});});describe('strip HTML',function(){var str='<b>hello</b>';it('returns a normal string',function(done){expect(tools.stripHTML(str)).to.equals('hello');done();});});describe('wrap string',function(){var str='The quick brown fox jumped over the lazy dog. The quick brown fox jumped over the lazy dog.';it('wraps with ANSI escape codes',function(done){tools.wrapStr(str,true,true);var wrappedstr=wrap(str,20,true,true);done();});});describe('rate-limiting',function(){it('resets datamuse limit',function(done){fs.copySync('test/test.config.noon',CFILE);var config=noon.load(CFILE);config.dmuse.date.stamp=new Date().toJSON().replace(/2017/,'2016');config.dmuse.date.remain=99998;var checkStamp=tools.limitDmuse(config);var c=checkStamp[0];var proceed=checkStamp[1];var reset=checkStamp[2];expect(c.dmuse.date.remain).to.match(/\d+/mig);expect(c.dmuse.date.stamp).to.match(/201\d[\-\d]*T[0-9:\.\-Z]*/mig);expect(proceed).to.be.true;expect(reset).to.be.true;done();});it('decrements datamuse limit',function(done){fs.copySync('test/test.config.noon',CFILE);var config=noon.load(CFILE);config.dmuse.date.stamp=new Date().toJSON();config.dmuse.date.remain=100000;var checkStamp=tools.limitDmuse(config);var c=checkStamp[0];var proceed=checkStamp[1];var reset=checkStamp[2];expect(c.dmuse.date.remain).to.equals(99999);expect(proceed).to.be.true;expect(reset).to.be.false;done();});it('reaches datamuse limit',function(done){fs.copySync('test/test.config.noon',CFILE);var config=noon.load(CFILE);config.dmuse.date.stamp=new Date().toJSON();config.dmuse.date.remain=0;var checkStamp=tools.limitDmuse(config);var c=checkStamp[0];var proceed=checkStamp[1];var reset=checkStamp[2];expect(c.dmuse.date.remain).to.equals(0);expect(proceed).to.be.false;expect(reset).to.be.false;done();});it('resets onelook limit',function(done){fs.copySync('test/test.config.noon',CFILE);var config=noon.load(CFILE);config.onelook.date.stamp=new Date().toJSON().replace(/2017/,'2016');config.onelook.date.remain=9998;var checkStamp=tools.limitOnelook(config);var c=checkStamp[0];var proceed=checkStamp[1];var reset=checkStamp[2];expect(c.onelook.date.remain).to.match(/\d+/mig);expect(c.onelook.date.stamp).to.match(/201\d[\-\d]*T[0-9:\.\-Z]*/mig);expect(proceed).to.be.true;expect(reset).to.be.true;done();});it('decrements onelook limit',function(done){fs.copySync('test/test.config.noon',CFILE);var config=noon.load(CFILE);config.onelook.date.stamp=new Date().toJSON();config.onelook.date.remain=10000;var checkStamp=tools.limitOnelook(config);var c=checkStamp[0];var proceed=checkStamp[1];var reset=checkStamp[2];expect(c.onelook.date.remain).to.equals(9999);expect(proceed).to.be.true;expect(reset).to.be.false;done();});it('reaches onelook limit',function(done){fs.copySync('test/test.config.noon',CFILE);var config=noon.load(CFILE);config.onelook.date.stamp=new Date().toJSON();config.onelook.date.remain=0;var checkStamp=tools.limitOnelook(config);var c=checkStamp[0];var proceed=checkStamp[1];var reset=checkStamp[2];expect(c.onelook.date.remain).to.equals(0);expect(proceed).to.be.false;expect(reset).to.be.false;done();});it('resets rhymebrain limit',function(done){fs.copySync('test/test.config.noon',CFILE);var config=noon.load(CFILE);config.rbrain.date.stamp=new Date().toJSON().replace(/2017/,'2016');config.rbrain.date.remain=348;var checkStamp=tools.limitRbrain(config);var c=checkStamp[0];var proceed=checkStamp[1];var reset=checkStamp[2];expect(c.rbrain.date.remain).to.match(/\d+/mig);expect(c.rbrain.date.stamp).to.match(/201\d[\-\d]*T[0-9:\.\-Z]*/mig);expect(proceed).to.be.true;expect(reset).to.be.true;done();});it('decrements rhymebrain limit',function(done){fs.copySync('test/test.config.noon',CFILE);var config=noon.load(CFILE);config.rbrain.date.stamp=new Date().toJSON();config.rbrain.date.remain=350;var checkStamp=tools.limitRbrain(config);var c=checkStamp[0];var proceed=checkStamp[1];var reset=checkStamp[2];expect(c.rbrain.date.remain).to.equals(349);expect(proceed).to.be.true;expect(reset).to.be.false;done();});it('reaches rhymebrain limit',function(done){fs.copySync('test/test.config.noon',CFILE);var config=noon.load(CFILE);config.rbrain.date.stamp=new Date().toJSON();config.rbrain.date.remain=0;var checkStamp=tools.limitRbrain(config);var c=checkStamp[0];var proceed=checkStamp[1];var reset=checkStamp[2];expect(c.rbrain.date.remain).to.equals(0);expect(proceed).to.be.false;expect(reset).to.be.false;done();});it('resets wordnik limit',function(done){fs.copySync('test/test.config.noon',CFILE);var config=noon.load(CFILE);config.wordnik.date.stamp=new Date().toJSON().replace(/2017/,'2016');config.wordnik.date.remain=14998;var checkStamp=tools.limitWordnik(config);var c=checkStamp[0];var proceed=checkStamp[1];var reset=checkStamp[2];expect(c.wordnik.date.remain).to.match(/\d+/mig);expect(c.wordnik.date.stamp).to.match(/201\d[\-\d]*T[0-9:\.\-Z]*/mig);expect(proceed).to.be.true;expect(reset).to.be.true;done();});it('decrements wordnik limit',function(done){fs.copySync('test/test.config.noon',CFILE);var config=noon.load(CFILE);config.wordnik.date.stamp=new Date().toJSON();config.wordnik.date.remain=15000;var checkStamp=tools.limitWordnik(config);var c=checkStamp[0];var proceed=checkStamp[1];var reset=checkStamp[2];expect(c.wordnik.date.remain).to.equals(14999);expect(proceed).to.be.true;expect(reset).to.be.false;done();});it('reaches wordnik limit',function(done){fs.copySync('test/test.config.noon',CFILE);var config=noon.load(CFILE);config.wordnik.date.stamp=new Date().toJSON();config.wordnik.date.remain=0;var checkStamp=tools.limitWordnik(config);var c=checkStamp[0];var proceed=checkStamp[1];var reset=checkStamp[2];expect(c.wordnik.date.remain).to.equals(0);expect(proceed).to.be.false;expect(reset).to.be.false;done();});});});describe('themes',function(){beforeEach(function(){spy.reset();});after(function(){return spy.restore();});describe('get themes',function(){it('returns an array of theme names',function(done){var list=themes.getThemes().sort();var obj=['colonel','markup','square'];expect(list).to.deep.equal(obj);done();});});describe('load theme',function(){it('returns a theme',function(done){var theme=themes.loadTheme('square');var obj={prefix:{str:'[',style:'bold.green'},text:{style:'bold.white'},content:{style:'white'},suffix:{str:']',style:'bold.green'},connector:{str:'→',style:'bold.cyan'}};expect(theme).to.deep.equal(obj);done();});});describe('labels',function(){var theme=themes.loadTheme('square');var text='label';it('labels right',function(done){var content='right';expect(spy.calledWith(themes.label(theme,'right',text,content))).to.be.true;done();});it('labels down',function(done){var content='down';expect(spy.calledWith(themes.label(theme,'down',text,content))).to.be.true;done();});it('labels without content',function(done){expect(spy.calledWith(themes.label(theme,'right',text))).to.be.true;done();});it('enforces right or down',function(done){try{themes.label(theme,'err','label');}catch(error){console.log(error);done();}});});describe('no theme dir',function(){it('falls back',function(done){var TDIR=null;var themeDirExists=false;themeDirExists?TDIR='themes/':TDIR=process.env.NODE_PATH+'/leximaven/themes/';var theme=themes.loadTheme('square');expect(TDIR).to.equals(process.env.NODE_PATH+'/leximaven/themes/');done();});});});describe('config commands',function(){before(function(done){fs.mkdirpSync('test/output');fs.copySync(CFILE,'test/output/saved.config.noon');done();});after(function(done){fs.copySync('test/output/saved.config.noon',CFILE);fs.removeSync('test/output');done();});describe('get',function(){it('shows value of option onelook.links',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js config get onelook.links > test/output/config-get.out',function(err){var stdout=fs.readFileSync('test/output/config-get.out','utf8');expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/Option onelook.links is (true|false)\./mig);done(err);});});});describe('init',function(){before(function(done){fs.removeSync(CFILE);done();});it('creates the config file',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js config init > test/output/config-init.out',function(err){var stdout=fs.readFileSync('test/output/config-init.out','utf8');var config=noon.load(CFILE);var obj={anagram:{case:1,lang:'english',limit:10,linenum:false,list:false,maxletter:50,maxword:10,minletter:1,repeat:false},dmuse:{date:{interval:'day',limit:100000,remain:100000,stamp:''},max:5},merge:true,onelook:{date:{interval:'day',limit:10000,remain:10000,stamp:''},links:false},rbrain:{combine:{lang:'en',max:5},date:{interval:'hour',limit:350,remain:350,stamp:''},info:{lang:'en'},rhyme:{lang:'en',max:50}},theme:'square',urban:{limit:5},usage:true,verbose:true,wordmap:{limit:1},wordnik:{date:{interval:'hour',limit:15000,remain:15000,stamp:''},define:{canon:false,defdict:'all',limit:5,part:''},example:{canon:false,limit:5,skip:0},hyphen:{canon:false,dict:'all',limit:5},origin:{canon:false},phrase:{canon:false,limit:5,weight:13},pronounce:{canon:false,dict:'',limit:5,type:''},relate:{canon:false,limit:10,type:''}}};config.dmuse.date.stamp='';config.dmuse.date.remain=100000;config.onelook.date.stamp='';config.onelook.date.remain=10000;config.rbrain.date.stamp='';config.rbrain.date.remain=350;config.wordnik.date.stamp='';config.wordnik.date.remain=15000;expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/Created [a-z\/\.]*/mig);expect(config).to.deep.equal(obj);done(err);});});it('force overwrites existing and prints config',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js config init -f -v > test/output/config-init.out',function(err){var stdout=fs.readFileSync('test/output/config-init.out','utf8');expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/[a-z0-9 \/\.\[\]:\-\s|]*/mig);done(err);});});});describe('set',function(){it('sets value of option onelook.links to false',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js config set onelook.links false > test/output/config-set.out',function(err){var stdout=fs.readFileSync('test/output/config-set.out','utf8');expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/Set option onelook.links to (true|false)\./mig);done(err);});});it('enforces hardcoded date',function(done){try{child.exec('node '+process.cwd()+'/bin/leximaven.js config set onelook.date false > test/output/config-set.out',function(err){});}catch(e){console.log(e);}done();});});describe('datamuse commands',function(){before(function(done){fs.mkdirpSync('test/output');var obj=noon.load(TFILE);obj.dmuse.date.stamp=new Date().toJSON();obj.onelook.date.stamp=new Date().toJSON();obj.rbrain.date.stamp=new Date().toJSON();obj.wordnik.date.stamp=new Date().toJSON();var fileExists=null;try{fs.statSync(CFILE);fileExists=true;}catch(e){if(e.code==='ENOENT'){fileExists=false;}}if(fileExists){var config=noon.load(CFILE);obj.dmuse.date.stamp=config.dmuse.date.stamp;obj.dmuse.date.remain=config.dmuse.date.remain;obj.onelook.date.stamp=config.onelook.date.stamp;obj.onelook.date.remain=config.onelook.date.remain;obj.rbrain.date.stamp=config.rbrain.date.stamp;obj.rbrain.date.remain=config.rbrain.date.remain;obj.wordnik.date.stamp=config.wordnik.date.stamp;obj.wordnik.date.remain=config.wordnik.date.remain;fs.copySync(CFILE,'test/output/saved.config.noon');}noon.save(CFILE,obj);done();});after(function(done){fs.removeSync('test/output');done();});describe('get',function(){it('shows output',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js datamuse get -s -o '+process.cwd()+'/test/output/dmuse.json ml=ubiquity > test/output/dmuse-get.out',function(err){var obj={type:'datamuse',source:'http://datamuse.com/api',url:'http://api.datamuse.com/words?max=5&&ml=ubiquity',match0:'ubiquitousness',tags1:'noun',match1:'omnipresence',match2:'pervasiveness',tags0:'noun',match3:'prevalence'};var json=fs.readJsonSync(process.cwd()+'/test/output/dmuse.json');expect(json).to.deep.equal(obj);});done();});});describe('info',function(){it('shows metrics',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js dmuse info > test/output/dmuse-info.out',function(err){var stdout=fs.readFileSync('test/output/dmuse-info.out','utf8');expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/\d+\/\d+[a-z0-9 ,\.\s\(\):\/%]*/);done(err);});});});});describe('rhymebrain commands',function(){before(function(done){fs.mkdirpSync('test/output');var obj=noon.load(TFILE);obj.dmuse.date.stamp=new Date().toJSON();obj.onelook.date.stamp=new Date().toJSON();obj.rbrain.date.stamp=new Date().toJSON();obj.wordnik.date.stamp=new Date().toJSON();var fileExists=null;try{fs.statSync(CFILE);fileExists=true;}catch(e){if(e.code==='ENOENT'){fileExists=false;}}if(fileExists){var config=noon.load(CFILE);obj.dmuse.date.stamp=config.dmuse.date.stamp;obj.dmuse.date.remain=config.dmuse.date.remain;obj.onelook.date.stamp=config.onelook.date.stamp;obj.onelook.date.remain=config.onelook.date.remain;obj.rbrain.date.stamp=config.rbrain.date.stamp;obj.rbrain.date.remain=config.rbrain.date.remain;obj.wordnik.date.stamp=config.wordnik.date.stamp;obj.wordnik.date.remain=config.wordnik.date.remain;fs.copySync(CFILE,'test/output/saved.config.noon');}noon.save(CFILE,obj);done();});after(function(done){fs.removeSync('test/output');done();});describe('combine',function(){it('shows output',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js rbrain combine -s -m1 -o '+process.cwd()+'/test/output/combine.json value > test/output/combine.out',function(err){var stdout=fs.readFileSync('test/output/combine.out','utf8');var obj={type:'portmanteau',source:'http://rhymebrain.com',url:'http://rhymebrain.com/talk?function=getPortmanteaus&word=value&lang=en&maxResults=1&',set0:'value,unique',portmanteau0:'valunique'};var json=fs.readJsonSync(process.cwd()+'/test/output/combine.json');expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/[\[\]a-z0-9,→ -\/\.]*/mig);expect(json).to.deep.equal(obj);done(err);});});});describe('info',function(){it('shows output',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js rbrain info -s -o '+process.cwd()+'/test/output/info.json fuck > test/output/info.out',function(err){var stdout=fs.readFileSync('test/output/info.out','utf8');var obj={type:'word info',source:'http://rhymebrain.com',url:'http://rhymebrain.com/talk?function=getWordInfo&word=fuck&lang=en',arpabet:'F AH1 K',ipa:'ˈfʌk',syllables:'1',offensive:true,dict:true,trusted:true};var json=fs.readJsonSync(process.cwd()+'/test/output/info.json');expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/[\[\]a-z0-9 -→ˈʌ\/\.,]*/mig);expect(json).to.deep.equal(obj);done(err);});});});describe('rhyme',function(){it('shows output',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js rbrain rhyme -s -m1 -o '+process.cwd()+'/test/output/rhyme.json too > test/output/rhyme.out',function(err){var stdout=fs.readFileSync('test/output/rhyme.out','utf8');var obj={type:'rhyme',source:'http://rhymebrain.com',url:'http://rhymebrain.com/talk?function=getRhymes&word=too&lang=en&maxResults=1&',rhyme0:'to'};var json=fs.readJsonSync(process.cwd()+'/test/output/rhyme.json');expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/\[Rhymes\]→[a-z*, ]*\sWrote data to [a-z\/\.]*\s\d*\/\d*[a-z0-9 ,\.]*/mig);expect(json).to.deep.equal(obj);done(err);});});});});describe('wordnik commands',function(){before(function(done){fs.mkdirpSync('test/output');var obj=noon.load(TFILE);obj.dmuse.date.stamp=new Date().toJSON();obj.onelook.date.stamp=new Date().toJSON();obj.rbrain.date.stamp=new Date().toJSON();obj.wordnik.date.stamp=new Date().toJSON();var fileExists=null;try{fs.statSync(CFILE);fileExists=true;}catch(e){if(e.code==='ENOENT'){fileExists=false;}}if(fileExists){var config=noon.load(CFILE);obj.dmuse.date.stamp=config.dmuse.date.stamp;obj.dmuse.date.remain=config.dmuse.date.remain;obj.onelook.date.stamp=config.onelook.date.stamp;obj.onelook.date.remain=config.onelook.date.remain;obj.rbrain.date.stamp=config.rbrain.date.stamp;obj.rbrain.date.remain=config.rbrain.date.remain;obj.wordnik.date.stamp=config.wordnik.date.stamp;obj.wordnik.date.remain=config.wordnik.date.remain;fs.copySync(CFILE,'test/output/saved.config.noon');}noon.save(CFILE,obj);done();});after(function(done){var fileExists=null;try{fs.statSync('test/output/saved.config.noon');fileExists=true;}catch(e){if(e.code==='ENOENT'){fileExists=false;}}if(fileExists){fs.removeSync(CFILE);fs.copySync('test/output/saved.config.noon',CFILE);}else{fs.removeSync(CFILE);}fs.removeSync('test/output');done();});describe('define',function(){it('shows output',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js wordnik define -s -l1 -o '+process.cwd()+'/test/output/define.json ubiquity > test/output/define.out',function(err){var stdout=fs.readFileSync('test/output/define.out','utf8');var obj={type:'definition',source:'http://www.wordnik.com',text0:'Existence or apparent existence everywhere at the same time; omnipresence: "the repetitiveness, the selfsameness, and the ubiquity of modern mass culture” ( Theodor Adorno ). ',deftype0:'noun',source0:'ahd-legacy'};var json=fs.readJsonSync(process.cwd()+'/test/output/define.json');expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/[a-z\[\]→ ;:",\-\(\)\.\/”]*Wrote data to [a-z\/\.]*/mig);expect(json).to.deep.equal(obj);done(err);});});});describe('example',function(){it('shows output',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js wordnik example -s -l1 -o '+process.cwd()+'/test/output/example.json ubiquity > test/output/example.out',function(err){var stdout=fs.readFileSync('test/output/example.out','utf8');var obj={type:'example',source:'http://www.wordnik.com',example0:'Both are characterized by their ubiquity and their antiquity: No known human culture lacks them, and musical instruments are among the oldest human artifacts, dating to the Late Pleistocene about 50,000 years ago.'};var json=fs.readJsonSync(process.cwd()+'/test/output/example.json');expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/[a-z0-9\[\] →:,\.]*\sWrote data to [a-z\/\.]*/mig);expect(json).to.deep.equal(obj);done(err);});});});describe('hyphen',function(){it('shows output',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js wordnik hyphen -s -o '+process.cwd()+'/test/output/hyphen.json ubiquity > test/output/hyphen.out',function(err){var stdout=fs.readFileSync('test/output/hyphen.out','utf8');var obj={type:'hyphenation',source:'http://www.wordnik.com',syllable0:'u',stress1:'biq',syllable2:'ui',syllable3:'ty'};var json=fs.readJsonSync(process.cwd()+'/test/output/hyphen.json');expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/\[Hyphenation\]→[a-z\-]*\sWrote data to [a-z\/\.]*\s\d*\/\d*[a-z0-9 ,\.]*/mig);expect(json).to.deep.equal(obj);done(err);});});});describe('origin',function(){it('shows output',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js wordnik origin -s -o '+process.cwd()+'/test/output/origin.json ubiquity > test/output/origin.out',function(err){var stdout=fs.readFileSync('test/output/origin.out','utf8');var obj={type:'etymology',source:'http://www.wordnik.com',etymology:'[L. everywhere, fr. where, perhaps for , (cf. anywhere), and if so akin to E. : cf. F. .]',origin:'ubique, ubi, cubi, quobi, alicubi, who, ubiquit√©'};var json=fs.readJsonSync(process.cwd()+'/test/output/origin.json');expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/[a-z \[\]→\.,\(\):√©]*Wrote data to [a-z\/\.]*/mig);expect(json).to.deep.equal(obj);done(err);});});});describe('phrase',function(){it('shows output',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js wordnik phrase -s -l1 -o '+process.cwd()+'/test/output/phrase.json ubiquitous > test/output/phrase.out',function(err){var stdout=fs.readFileSync('test/output/phrase.out','utf8');var obj={type:'phrase',source:'http://www.wordnik.com',agram0:'ubiquitous',bgram0:'amoeba'};var json=fs.readJsonSync(process.cwd()+'/test/output/phrase.json');expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/[a-z\[\]\-\s]*Wrote data to [a-z\/\.]*/mig);expect(json).to.deep.equal(obj);done(err);});});});describe('pronounce',function(){it('shows output',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js wordnik pronounce -s -o '+process.cwd()+'/test/output/pronounce.json ubiquity > test/output/pronounce.out',function(err){var stdout=fs.readFileSync('test/output/pronounce.out','utf8');var obj={type:'pronunciation',source:'http://www.wordnik.com',word:'ubiquity',pronunciation0:'(yo͞o-bĭkˈwĭ-tē)',type0:'ahd-legacy',pronunciation1:'Y UW0 B IH1 K W IH0 T IY0',type1:'arpabet'};var json=fs.readJsonSync(process.cwd()+'/test/output/pronounce.json');expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/[a-z0-9\[\]\(\) \-→ĭēˈ\so͞]*\sWrote data to [a-z\/\.]*/mig);expect(json).to.deep.equal(obj);done(err);});});});describe('relate',function(){it('shows output',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js wordnik related -s -l1 -o '+process.cwd()+'/test/output/relate.json ubiquity > test/output/relate.out',function(err){var stdout=fs.readFileSync('test/output/relate.out','utf8');var obj={type:'related words',source:'http://www.wordnik.com',word:'ubiquity',type0:'antonym',words0:'uniquity',type1:'hypernym',words1:'presence',type2:'cross-reference',words2:'ubiquity of the king',type3:'synonym',words3:'omnipresence',type4:'rhyme',words4:'iniquity',type5:'same-context',words5:'omnipresence'};var json=fs.readJsonSync(process.cwd()+'/test/output/relate.json');expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/[a-z \[\],\-→]*\sWrote data to [a-z\/\.]*/mig);expect(json).to.deep.equal(obj);done(err);});});});});describe('root commands',function(){before(function(done){fs.mkdirpSync('test/output');var obj=noon.load(TFILE);obj.dmuse.date.stamp=new Date().toJSON();obj.onelook.date.stamp=new Date().toJSON();obj.rbrain.date.stamp=new Date().toJSON();obj.wordnik.date.stamp=new Date().toJSON();var fileExists=null;try{fs.statSync(CFILE);fileExists=true;}catch(e){if(e.code==='ENOENT'){fileExists=false;}}if(fileExists){var config=noon.load(CFILE);obj.dmuse.date.stamp=config.dmuse.date.stamp;obj.dmuse.date.remain=config.dmuse.date.remain;obj.onelook.date.stamp=config.onelook.date.stamp;obj.onelook.date.remain=config.onelook.date.remain;obj.rbrain.date.stamp=config.rbrain.date.stamp;obj.rbrain.date.remain=config.rbrain.date.remain;obj.wordnik.date.stamp=config.wordnik.date.stamp;obj.wordnik.date.remain=config.wordnik.date.remain;fs.copySync(CFILE,'test/output/saved.config.noon');noon.save(CFILE,obj);}else{noon.save(CFILE,obj);}done();});describe('acronym',function(){it('shows output',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js acronym -o '+process.cwd()+'/test/output/acronym.json DDC > test/output/acronym.out',function(err){var stdout=fs.readFileSync('test/output/acronym.out','utf8');var json=fs.readJsonSync(process.cwd()+'/test/output/acronym.json');var obj={type:'acronym',source:'http://acronyms.silmaril.ie',url:'http://acronyms.silmaril.ie/cgi-bin/xaa?DDC',expansion0:'Dewey Decimal Classification',comment0:'library and knowledge classification system',url0:'http://www.oclc.org/dewey/',DDC0:'040',expansion1:'Digital Data Converter',DDC1:'040',expansion2:'Digital Down Converter',DDC2:'000',expansion3:'Direct Department Calling',DDC3:'040',expansion4:'Dodge City Municipal airport (code)',comment4:'United States',DDC4:'387'};expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/Found \d* acronyms for [a-z]*:\s[a-z0-9\s-:\/\.|(|)]*Wrote data to [a-z\/]*.json./mig);expect(json).to.deep.equal(obj);done(err);});});it('forces writing json',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js acronym -f -o '+process.cwd()+'/test/output/acronym.json DDC > test/output/acronym.out',function(err){var stdout=fs.readFileSync('test/output/acronym.out','utf8');var json=fs.readJsonSync(process.cwd()+'/test/output/acronym.json');var obj={type:'acronym',source:'http://acronyms.silmaril.ie',url:'http://acronyms.silmaril.ie/cgi-bin/xaa?DDC',expansion0:'Dewey Decimal Classification',comment0:'library and knowledge classification system',url0:'http://www.oclc.org/dewey/',DDC0:'040',expansion1:'Digital Data Converter',DDC1:'040',expansion2:'Digital Down Converter',DDC2:'000',expansion3:'Direct Department Calling',DDC3:'040',expansion4:'Dodge City Municipal airport (code)',comment4:'United States',DDC4:'387'};expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/Found \d* acronyms for [a-z]*:\s[a-z0-9\s-:\/\.|(|)]*Overwrote [a-z\/\.]* with data./mig);expect(json).to.deep.equal(obj);done(err);});});it('writes xml',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js acronym -o '+process.cwd()+'/test/output/acronym.xml DDC',function(err){var obj={type:'acronym',source:'http://acronyms.silmaril.ie',url:'http://acronyms.silmaril.ie/cgi-bin/xaa?DDC',expansion0:'Dewey Decimal Classification',comment0:'library and knowledge classification system',url0:'http://www.oclc.org/dewey/',DDC0:'040',expansion1:'Digital Data Converter',DDC1:'040',expansion2:'Digital Down Converter',DDC2:'000',expansion3:'Direct Department Calling',DDC3:'040',expansion4:'Dodge City Municipal airport (code)',comment4:'United States',DDC4:'387'};var xml=fs.readFileSync(process.cwd()+'/test/output/acronym.xml','utf8');var parser=new xml2js.Parser();parser.parseString(xml,function(err,result){var fixed=result.root;fixed.type=fixed.type[0];fixed.source=fixed.source[0];fixed.url=fixed.url[0];fixed.expansion0=fixed.expansion0[0];fixed.expansion1=fixed.expansion1[0];fixed.expansion2=fixed.expansion2[0];fixed.expansion3=fixed.expansion3[0];fixed.expansion4=fixed.expansion4[0];fixed.url0=fixed.url0[0];fixed.comment0=fixed.comment0[0];fixed.comment4=fixed.comment4[0];fixed.DDC0=fixed.DDC0[0];fixed.DDC1=fixed.DDC1[0];fixed.DDC2=fixed.DDC2[0];fixed.DDC3=fixed.DDC3[0];fixed.DDC4=fixed.DDC4[0];expect(fixed).to.deep.equal(obj);done(err);});});});it('forces writing xml',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js acronym -f -o '+process.cwd()+'/test/output/acronym.xml DDC',function(err){var obj={type:'acronym',source:'http://acronyms.silmaril.ie',url:'http://acronyms.silmaril.ie/cgi-bin/xaa?DDC',expansion0:'Dewey Decimal Classification',comment0:'library and knowledge classification system',url0:'http://www.oclc.org/dewey/',DDC0:'040',expansion1:'Digital Data Converter',DDC1:'040',expansion2:'Digital Down Converter',DDC2:'000',expansion3:'Direct Department Calling',DDC3:'040',expansion4:'Dodge City Municipal airport (code)',comment4:'United States',DDC4:'387'};var xml=fs.readFileSync(process.cwd()+'/test/output/acronym.xml','utf8');var parser=new xml2js.Parser();parser.parseString(xml,function(err,result){var fixed=result.root;fixed.type=fixed.type[0];fixed.source=fixed.source[0];fixed.url=fixed.url[0];fixed.expansion0=fixed.expansion0[0];fixed.expansion1=fixed.expansion1[0];fixed.expansion2=fixed.expansion2[0];fixed.expansion3=fixed.expansion3[0];fixed.expansion4=fixed.expansion4[0];fixed.url0=fixed.url0[0];fixed.comment0=fixed.comment0[0];fixed.comment4=fixed.comment4[0];fixed.DDC0=fixed.DDC0[0];fixed.DDC1=fixed.DDC1[0];fixed.DDC2=fixed.DDC2[0];fixed.DDC3=fixed.DDC3[0];fixed.DDC4=fixed.DDC4[0];expect(fixed).to.deep.equal(obj);done(err);});});});});describe('anagram',function(){it('shows output',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js anagram -s -o '+process.cwd()+'/test/output/anagram.json ubiquity > test/output/anagram.out',function(err){var stdout=fs.readFileSync('test/output/anagram.out','utf8');var json=fs.readJsonSync(process.cwd()+'/test/output/anagram.json');var obj={type:'anagram',source:'http://wordsmith.org/',url:'http://wordsmith.org/anagram/anagram.cgi?anagram=ubiquity&language=english&t=10&d=10&include=&exclude=&n=1&m=50&a=n&l=n&q=n&k=1&src=adv',found:'2',show:'all',alist:['Ubiquity','Buy I Quit']};expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/[Anagrams\]\sAnagrams for: [a-z]*\s\d* found. Displaying all:\s[a-z\/\.\s]*/mig);expect(json).to.deep.equal(obj);done(err);});});it('handles too long input',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js anagram johnjacobjingleheimerschmidtthatsmynametoo > test/output/anagram.out',function(err){var stdout=fs.readFileSync('test/output/anagram.out','utf8');expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/Input[a-z0-9 \(\)\.']*\s[a-z \.]*/mig);done(err);});});it('handles no found anagrams',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js anagram bcdfghjklmnp > test/output/anagram.out',function(err){var stdout=fs.readFileSync('test/output/anagram.out','utf8');expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/No anagrams found\./mig);done(err);});});});describe('comp',function(){it('outputs shell completion script',function(done){child.exec('node '+__dirname+'/../bin/leximaven.js comp > test/output/comp.out',function(err){var stdout=fs.readFileSync('test/output/comp.out','utf8');expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/[#\-a-z0-9\.\s:\/>~_\(\)\{\}\[\]="$@,;]*/mig);done(err);});});});describe('help',function(){it('shows usage',function(done){child.exec('node '+__dirname+'/../bin/leximaven.js --help > test/output/help.out',function(err){var stdout=fs.readFileSync('test/output/help.out','utf8');expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/[\/\\_\(\) '-|]+\sUsage:\s[a-z\/\.]* <command> \[options\]\s*Commands:\s*[a-z \<\>\[\]:\s,]*Options:\s*[a-z \-,\[\]\s]*/mig);done(err);});});});describe('ls',function(){it('demonstrates installed themes',function(done){child.exec('node '+__dirname+'/../bin/leximaven.js ls > test/output/ls.out',function(err){var stdout=fs.readFileSync('test/output/ls.out','utf8');expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/[a-z :|,.<>\-\[\]→]*/mig);done(err);});});});describe('map',function(){it('shows output',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js map -s ubiquity > test/output/map.out',function(err){var stdout=fs.readFileSync('test/output/map.out','utf8');expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/[a-z0-9\[\],→ ;:'\?"\(\)-…\/\.√©ĭēˈɪ”]*/mig);done(err);});});});describe('onelook',function(){it('shows output',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js onelook -s -o '+process.cwd()+'/test/output/onelook.json ubiquity > test/output/onelook.out',function(err){var stdout=fs.readFileSync('test/output/onelook.out','utf8');var obj={type:'onelook',source:'http://www.onelook.com',url:'http://onelook.com/?xml=1&w=ubiquity',definition:'noun: the state of being everywhere at once (or seeming to be everywhere at once)',phrase:'ubiquity records',sim:'omnipresence,ubiquitousness'};var json=fs.readJsonSync(process.cwd()+'/test/output/onelook.json');expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/[a-z0-9\[\]:\(\)→ \/\.,]*/mig);expect(json).to.deep.equal(obj);done(err);});});it('provides resource links',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js onelook -l ubiquity > test/output/onelook.out',function(err){var stdout=fs.readFileSync('test/output/onelook.out','utf8');expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/[a-z0-9\[\]:\(\)→ \/\.,]*\s\[Resources\]\s[a-z0-9 \s\[\]→:\/\._#\?=\-',&%\(\)\+]*/mig);done(err);});});});describe('random',function(){it('prints a word',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js random',function(err,stdout){expect(stdout).to.match(/[a-z]*/mig);done(err);});});});describe('urban',function(){it('shows output',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js urban -s -l1 -o '+process.cwd()+'/test/output/urban.json flip the bird > test/output/urban.out',function(err){var stdout=fs.readFileSync('test/output/urban.out','utf8');var obj={type:'urban',source:'http://www.urbandictionary.com',url:'http://api.urbandictionary.com/v0/define?term=flip+the+bird',definition0:'1. The act of rotating an avian creature through more than 90 degrees.\r\n\r\n2. The act of extending the central digit of the hand with the intent to cause offense.'};var json=fs.readJsonSync(process.cwd()+'/test/output/urban.json');expect(stdout.replace(/(\r\n|\n|\r)\s?/gm,'\n')).to.match(/[a-z0-9 \[\]→\.\/\s]*/mig);expect(json).to.deep.equal(obj);done(err);});});});describe('version',function(){it('prints the version number',function(done){child.exec('node '+process.cwd()+'/bin/leximaven.js random',function(err,stdout){expect(stdout).to.match(/[a-z]*/mig);done(err);});});});});});

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc