Socket
Socket
Sign inDemoInstall

leximaven

Package Overview
Dependencies
266
Maintainers
1
Versions
20
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 2.2.0 to 2.3.0

bin/commands/random.js

2

bin/commands/acronym.js

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

'use strict';var themes=require('../themes');var tools=require('../tools');var _=require('lodash');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='acronym <acronym>';exports.aliases=['ac'];exports.desc='Acronyms';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'}};exports.handler=function(argv){tools.checkConfig(CFILE);var config=noon.load(CFILE);var theme=themes.loadTheme(config.theme);if(config.verbose)themes.label(theme,'down','Acronyms');var acronym=argv.acronym.toUpperCase();var url='http://acronyms.silmaril.ie/cgi-bin/xaa?'+argv.acronym;var tofile={type:'acronym',source:'http://acronyms.silmaril.ie',url:url};var ctstyle=_.get(chalk,theme.content.style);http({url:url},function(error,response){if(!error&&response.statusCode===200){var body=response.body;var parser=new xml2js.Parser();parser.parseString(body,function(err,result){if(!err){var found=result.acronym.found[0];var count=found.$;if(count.n==='0'){console.log(ctstyle('Found 0 acronyms for '+acronym+'.'));}else{console.log(ctstyle('Found '+count.n+' acronyms for '+acronym+':'));var list=found.acro;for(var i=0;i<=list.length-1;i++){var item=list[i];process.stdout.write(ctstyle(''+item.expan));tofile[['expansion'+i]]=item.expan[0];var comm=item.comment[0];if(comm!==''){if(comm.a){var comment=comm.a[0];process.stdout.write(ctstyle(' - '+comment._+' - '+comment.$.href));tofile[['comment'+i]]=comment._;tofile[['url'+i]]=comment.$.href;}else{process.stdout.write(ctstyle(' - '+comm));tofile[['comment'+i]]=item.comment[0];}}console.log(ctstyle(' - DDC: '+item.$.dewey));tofile[['DDC'+i]]=item.$.dewey;}if(argv.o)tools.outFile(argv.o,argv.f,tofile);}}else{throw new Error(err);}});}else{throw new Error('HTTP '+error.statusCode+': '+error.reponse.body);}});};
'use strict';var themes=require('../themes');var tools=require('../tools');var _=require('lodash');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='acronym <acronym>';exports.aliases=['acro','ac'];exports.desc='Acronyms';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'}};exports.handler=function(argv){tools.checkConfig(CFILE);var config=noon.load(CFILE);var theme=themes.loadTheme(config.theme);if(config.verbose)themes.label(theme,'down','Acronyms');var acronym=argv.acronym.toUpperCase();var url='http://acronyms.silmaril.ie/cgi-bin/xaa?'+argv.acronym;var tofile={type:'acronym',source:'http://acronyms.silmaril.ie',url:url};var ctstyle=_.get(chalk,theme.content.style);http({url:url},function(error,response){if(!error&&response.statusCode===200){var body=response.body;var parser=new xml2js.Parser();parser.parseString(body,function(err,result){if(!err){var found=result.acronym.found[0];var count=found.$;if(count.n==='0'){console.log(ctstyle('Found 0 acronyms for '+acronym+'.'));}else{console.log(ctstyle('Found '+count.n+' acronyms for '+acronym+':'));var list=found.acro;for(var i=0;i<=list.length-1;i++){var item=list[i];process.stdout.write(ctstyle(''+item.expan));tofile[['expansion'+i]]=item.expan[0];var comm=item.comment[0];if(comm!==''){if(comm.a){var comment=comm.a[0];process.stdout.write(ctstyle(' - '+comment._+' - '+comment.$.href));tofile[['comment'+i]]=comment._;tofile[['url'+i]]=comment.$.href;}else{process.stdout.write(ctstyle(' - '+comm));tofile[['comment'+i]]=item.comment[0];}}console.log(ctstyle(' - DDC: '+item.$.dewey));tofile[['DDC'+i]]=item.$.dewey;}if(argv.o)tools.outFile(argv.o,argv.f,tofile);}}else{throw new Error(err);}});}else{throw new Error('HTTP '+error.statusCode+': '+error.reponse.body);}});};

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

'use strict';/* eslint max-len: 0, no-useless-escape: 0 */var themes=require('../themes');var tools=require('../tools');var _=require('lodash');var chalk=require('chalk');var noon=require('noon');var ora=require('ora');var xray=require('x-ray');var CFILE=process.env.HOME+'/.leximaven.noon';var langs=['english','english-obscure','german','spanish','esperanto','french','italian','latin','dutch','portuguese','swedish','names'];exports.command='anagram <query>';exports.aliases=['an'];exports.desc='Wordsmith anagrams';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'},case:{alias:'c',desc:'0 - lowercase, 1 - First Letter, 2 - UPPERCASE',default:1,type:'number'},exclude:{alias:'e',desc:'Anagrams must exclude this word',default:'',type:'string'},include:{alias:'i',desc:'Anagrams must include this word',default:'',type:'string'},lang:{alias:'a',desc:langs.join(', '),default:'english',type:'string'},linenum:{alias:'u',desc:'Show line numbers with anagrams',default:false,type:'boolean'},list:{alias:'l',desc:'Show candidate word list only',default:false,type:'boolean'},limit:{alias:'t',desc:'Limit number of results',default:10,type:'number'},minletter:{alias:'n',desc:'Minimum letters in each word',default:1,type:'number'},maxletter:{alias:'x',desc:'Maximum letters in each word',default:50,type:'number'},maxword:{alias:'w',desc:'Maximum words in each anagram',default:10,type:'number'},repeat:{alias:'r',desc:'Repeat occurences of a word OK',default:false,type:'boolean'}};exports.handler=function(argv){tools.checkConfig(CFILE);var config=noon.load(CFILE);var userConfig={anagram:{case:argv.c,lang:argv.a,linenum:argv.u,list:argv.l,limit:argv.t,minletter:argv.n,maxletter:argv.x,maxword:argv.w,repeat:argv.r}};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','Wordsmith');var prefix='http://wordsmith.org/anagram/anagram.cgi?anagram=';var query=argv.query;var uri=''+prefix+query;var pcont=[];var repeat=config.anagram.repeat?'y':'n';var list=config.anagram.list?'y':'n';var linenum=config.anagram.linenum?'y':'n';pcont.push('&language='+config.anagram.lang);pcont.push('&t='+config.anagram.limit);pcont.push('&d='+config.anagram.maxword);pcont.push('&include='+argv.i);pcont.push('&exclude='+argv.e);pcont.push('&n='+config.anagram.minletter);pcont.push('&m='+config.anagram.maxletter);pcont.push('&a='+repeat);pcont.push('&l='+list);pcont.push('&q='+linenum);pcont.push('&k='+config.anagram.case);pcont.push('&src=adv');var rest=pcont.join('');var url=''+uri+rest;url=encodeURI(url);var tofile={type:'anagram',source:'http://wordsmith.org/',url:url};var ctstyle=_.get(chalk,theme.content.style);var spinner=ora({text:''+chalk.bold.cyan('Loading anagrams...'),spinner:'dots8',color:'yellow'});spinner.start();var x=xray();x(url,{p:'.p402_premium'})(function(err,block){if(!err){spinner.stop();spinner.clear();if(/Input[a-z0-9 \(\)\.']*/i.test(block.p)){var data=block.p.match(/(Input[a-z0-9 \(\)\.']*)/i);var msg=data[1];msg=msg.replace(/letters\.Please/i,'letters.\nPlease');console.log(chalk.red(msg));}else if(/No anagrams found/i.test(block.p)){console.log(ctstyle('No anagrams found.'));}else{var _data=block.p.match(/(\d*) found\. Displaying ([a-z0-9 ]*):([a-z\s]*)document/i);var found=_data[1];var show=_data[2];var alist=_data[3].trim();themes.label(theme,'down','Anagrams');console.log(ctstyle('Anagrams for: '+query+'\n'+found+' found. Displaying '+show+':'));console.log(ctstyle(alist));tofile.found=found;tofile.show=show;tofile.alist=alist.split('\n');if(argv.o)tools.outFile(argv.o,argv.f,tofile);}}else{throw new Error(err);}});};
'use strict';/* eslint max-len: 0, no-useless-escape: 0 */var themes=require('../themes');var tools=require('../tools');var _=require('lodash');var chalk=require('chalk');var noon=require('noon');var ora=require('ora');var xray=require('x-ray');var CFILE=process.env.HOME+'/.leximaven.noon';var langs=['english','english-obscure','german','spanish','esperanto','french','italian','latin','dutch','portuguese','swedish','names'];exports.command='anagram <query>';exports.aliases=['an'];exports.desc='Wordsmith anagrams';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'},case:{alias:'c',desc:'0 - lowercase, 1 - First Letter, 2 - UPPERCASE',default:1,type:'number'},exclude:{alias:'e',desc:'Anagrams must exclude this word',default:'',type:'string'},include:{alias:'i',desc:'Anagrams must include this word',default:'',type:'string'},lang:{alias:'a',desc:langs.join(', '),default:'english',type:'string'},linenum:{alias:'u',desc:'Show line numbers with anagrams',default:false,type:'boolean'},list:{alias:'l',desc:'Show candidate word list only',default:false,type:'boolean'},limit:{alias:'t',desc:'Limit number of results',default:10,type:'number'},minletter:{alias:'n',desc:'Minimum letters in each word',default:1,type:'number'},maxletter:{alias:'x',desc:'Maximum letters in each word',default:50,type:'number'},maxword:{alias:'w',desc:'Maximum words in each anagram',default:10,type:'number'},repeat:{alias:'r',desc:'Repeat occurences of a word OK',default:false,type:'boolean'}};exports.handler=function(argv){tools.checkConfig(CFILE);var config=noon.load(CFILE);var spinner=ora({text:''+chalk.bold.cyan('Loading anagrams...'),spinner:'dots8',color:'yellow'});spinner.start();var userConfig={anagram:{case:argv.c,lang:argv.a,linenum:argv.u,list:argv.l,limit:argv.t,minletter:argv.n,maxletter:argv.x,maxword:argv.w,repeat:argv.r}};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','Wordsmith');var prefix='http://wordsmith.org/anagram/anagram.cgi?anagram=';var query=argv.query;var uri=''+prefix+query;var pcont=[];var repeat=config.anagram.repeat?'y':'n';var list=config.anagram.list?'y':'n';var linenum=config.anagram.linenum?'y':'n';pcont.push('&language='+config.anagram.lang);pcont.push('&t='+config.anagram.limit);pcont.push('&d='+config.anagram.maxword);pcont.push('&include='+argv.i);pcont.push('&exclude='+argv.e);pcont.push('&n='+config.anagram.minletter);pcont.push('&m='+config.anagram.maxletter);pcont.push('&a='+repeat);pcont.push('&l='+list);pcont.push('&q='+linenum);pcont.push('&k='+config.anagram.case);pcont.push('&src=adv');var rest=pcont.join('');var url=''+uri+rest;url=encodeURI(url);var tofile={type:'anagram',source:'http://wordsmith.org/',url:url};var ctstyle=_.get(chalk,theme.content.style);var x=xray();x(url,{p:'.p402_premium'})(function(err,block){if(!err){if(/Input[a-z0-9 \(\)\.']*/i.test(block.p)){var data=block.p.match(/(Input[a-z0-9 \(\)\.']*)/i);var msg=data[1];spinner.stop();spinner.clear();msg=msg.replace(/letters\.Please/i,'letters.\nPlease');console.log(chalk.red(msg));}else if(/No anagrams found/i.test(block.p)){spinner.stop();spinner.clear();console.log(ctstyle('No anagrams found.'));}else{var _data=block.p.match(/(\d*) found\. Displaying ([a-z0-9 ]*):([a-z\s]*)document/i);var found=_data[1];var show=_data[2];var alist=_data[3].trim();spinner.stop();spinner.clear();themes.label(theme,'down','Anagrams');console.log(ctstyle('Anagrams for: '+query+'\n'+found+' found. Displaying '+show+':'));console.log(ctstyle(alist));tofile.found=found;tofile.show=show;tofile.alist=alist.split('\n');if(argv.o)tools.outFile(argv.o,argv.f,tofile);}}else{throw new Error(err);}});};

@@ -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='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){_.each(argv._,function(value){ccont.push(value);});}var prefix='http://api.datamuse.com/words?';var conditions='max='+config.dmuse.max+'&';_.each(ccont,function(value){conditions=conditions+'&'+value;});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);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);for(var i=0;i<=resp.length-1;i++){var item=resp[i];themes.label(theme,'right','Match',item.word+' ');tofile[['match'+i]]=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 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+'.');};

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

'use strict';/* eslint no-unused-vars: 0 */var themes=require('../themes');var _=require('lodash');var sample='Morbi ornare pulvinar metus, non faucibus arcu ultricies non.';exports.command='list';exports.aliases=['ls','themes'];exports.desc='Get a list of installed themes';exports.builder={};exports.handler=function(argv){var list=themes.getThemes();_.each(list,function(value){var name=value;var currentTheme=themes.loadTheme(name);themes.label(currentTheme,'down',name,sample);});};
'use strict';/* eslint no-unused-vars: 0 */var themes=require('../themes');exports.command='list';exports.aliases=['ls','themes'];exports.desc='Get a list of installed themes';exports.builder={};exports.handler=function(argv){var list=themes.getThemes();for(var i=0;i<=list.length-1;i++){var currentTheme=themes.loadTheme(list[i]);var sample='Morbi ornare pulvinar metus, non faucibus arcu ultricies non.';themes.label(currentTheme,'down',list[i],sample);}};

@@ -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 url='http://onelook.com/?xml=1&w='+argv.word;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 _i=0;_i<=resources.length-1;_i++){var _item=resources[_i];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'+_i]]=res;tofile[['link'+_i]]=link;tofile[['home'+_i]]=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 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+'.');};

@@ -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){(function(){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=[];_.each(list,function(item){return lcont.push(item.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 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+'.');};

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

'use strict';/* eslint max-len:0 */var themes=require('../themes');var tools=require('../tools');var _=require('lodash');var http=require('good-guy-http')();var noon=require('noon');var CFILE=process.env.HOME+'/.leximaven.noon';exports.command='urban <query>';exports.aliases=['urb','slang'];exports.desc='Urban Dictionary 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'}};exports.handler=function(argv){tools.checkConfig(CFILE);var config=noon.load(CFILE);var userConfig={urban:{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','Urban Dictionary');var ucont=[];ucont.push(argv.query);if(argv._.length>1){_.each(argv._,function(value){if(value!=='urban')ucont.push(value);});}var words='';if(ucont.length>1){words=ucont.join('+');}else{words=ucont[0];}var url='http://api.urbandictionary.com/v0/define?term='+words;url=encodeURI(url);var tofile={type:'urban',source:'http://www.urbandictionary.com',url:url};http({url:url},function(error,response){if(!error&&response.statusCode===200){var body=JSON.parse(response.body);var limit=config.urban.limit;var list=body.list.slice(0,limit);for(var i=0;i<=list.length-1;i++){var result=list[i];themes.label(theme,'down','Definition',result.definition);tofile[['definition'+i]]=result.definition;}if(argv.o)tools.outFile(argv.o,argv.f,tofile);}else{throw new Error('HTTP '+error.statusCode+': '+error.reponse.body);}});};
'use strict';/* eslint max-len:0 */var themes=require('../themes');var tools=require('../tools');var _=require('lodash');var http=require('good-guy-http')();var noon=require('noon');var CFILE=process.env.HOME+'/.leximaven.noon';exports.command='urban <query>';exports.aliases=['urb','slang'];exports.desc='Urban Dictionary 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'}};exports.handler=function(argv){tools.checkConfig(CFILE);var config=noon.load(CFILE);var userConfig={urban:{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','Urban Dictionary');var ucont=[];ucont.push(argv.query);if(argv._.length>1){for(var i=0;i<=argv._.length-1;i++){if(argv._[i]!=='urban'&&argv._[i]!=='urb'&&argv._[i]!=='slang')ucont.push(argv._[i]);}}var words='';if(ucont.length>1){words=ucont.join('+');}else{words=ucont[0];}var url='http://api.urbandictionary.com/v0/define?term='+words;url=encodeURI(url);var tofile={type:'urban',source:'http://www.urbandictionary.com',url:url};http({url:url},function(error,response){if(!error&&response.statusCode===200){var body=JSON.parse(response.body);var limit=config.urban.limit;var list=body.list.slice(0,limit);for(var _i=0;_i<=list.length-1;_i++){var result=list[_i];themes.label(theme,'down','Definition',result.definition);tofile[['definition'+_i]]=result.definition;}if(argv.o)tools.outFile(argv.o,argv.f,tofile);}else{throw new Error('HTTP '+error.statusCode+': '+error.reponse.body);}});};

@@ -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','bigram'];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 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+'.');};

@@ -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='related <word>';exports.aliases=['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 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+'.');};

@@ -13,3 +13,3 @@ 'use strict';/* eslint max-len:0 */var _=require('lodash');var chalk=require('chalk');var fs=require('fs');var glob=require('glob');var noon=require('noon');var TDIR=null;var themeDirExists=null;try{fs.statSync('themes');themeDirExists=true;}catch(e){if(e.code==='ENOENT')themeDirExists=false;}themeDirExists?TDIR='themes/':TDIR=process.env.NODE_PATH+'/leximaven/themes/';/**

* @return {Array} List of theme names
*/exports.getThemes=function(){var list=[];var dirExists=null;var files=[];try{fs.statSync('themes');dirExists=true;}catch(e){if(e.code==='ENOENT')dirExists=false;}if(!dirExists)console.log(chalk.white(process.cwd()+'/themes does not exist, falling back to '+process.env.NODE_PATH+'/leximaven/themes.'));files=glob.sync(TDIR+'*.noon');_.each(files,function(path){var name=path.replace(/[a-z0-9/_.]*themes\//,'').replace(/\.noon/,'');list.push(name);});return list;};/**
*/exports.getThemes=function(){var list=[];var dirExists=null;var files=[];try{fs.statSync('themes');dirExists=true;}catch(e){if(e.code==='ENOENT')dirExists=false;}if(!dirExists)console.log(chalk.white(process.cwd()+'/themes does not exist, falling back to '+process.env.NODE_PATH+'/leximaven/themes.'));files=glob.sync(TDIR+'*.noon');for(var i=0;i<=files.length-1;i++){list.push(files[i].replace(/[a-z0-9/_.]*themes\//,'').replace(/\.noon/,''));}return list;};/**
* Prints label, connector, and content

@@ -16,0 +16,0 @@ * @public

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

<a name="2.3.0"></a>
# [2.3.0](https://github.com/drawnepicenter/leximaven/compare/v2.2.0...v2.3.0) (2017-01-23)
### Features
* **project:** add random word command ([4d782be](https://github.com/drawnepicenter/leximaven/commit/4d782be)), closes [#14](https://github.com/drawnepicenter/leximaven/issues/14)
<a name="2.2.0"></a>

@@ -7,0 +17,0 @@ # [2.2.0](https://github.com/drawnepicenter/leximaven/compare/v2.1.0...v2.2.0) (2017-01-21)

@@ -7,4 +7,18 @@ ## Contributing

- Managed with npm scripts. [redrun](https://github.com/coderaiser/redrun) is my task runner.
- Mocha is the test harness and Chai is assertions
- Test style is BDD
- Build is managed with npm scripts. [redrun](https://github.com/coderaiser/redrun) is my task runner. Here are the tasks:
- **bin** - transpiles src into bin
- **bump** - after release task, pushes version to repo and publishes npm package
- **clean** - deletes all generated files
- **climate** - CI-only task to submit test coverage
- **cover** - instruments code, calculates coverage, generates lcov and cleans up
- **lcov** - generates lcov.info from nyc data
- **lint** - fixes stylistic issues in src folder
- **test** - compiles test file, uses test runner
- **release** - uses standard-version to update the CHANGELOG and modify the version in package.json
- **report** - generates a nice HTML test report to load in your browser
- **watch** - watches src directory for changes and automatically compiles to bin folder
### Changelog & Versioning

@@ -11,0 +25,0 @@

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

@@ -51,2 +51,3 @@ "author": "Andrew Prentice",

"ora": "^1.0.0",
"random-word": "^2.0.0",
"term-size": "^0.1.0",

@@ -53,0 +54,0 @@ "wrap-ansi": "^2.1.0",

# leximaven
[![Greenkeeper badge](https://badges.greenkeeper.io/drawnepicenter/leximaven.svg)](https://greenkeeper.io/)
[![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) [![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/)
[![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)

@@ -8,0 +6,0 @@

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

exports.command = 'acronym <acronym>'
exports.aliases = ['ac']
exports.aliases = ['acro', 'ac']
exports.desc = 'Acronyms'

@@ -16,0 +16,0 @@ exports.builder = {

@@ -117,2 +117,8 @@ /* eslint max-len: 0, no-useless-escape: 0 */

let config = noon.load(CFILE)
const spinner = ora({
text: `${chalk.bold.cyan('Loading anagrams...')}`,
spinner: 'dots8',
color: 'yellow'
})
spinner.start()
const userConfig = {

@@ -164,8 +170,2 @@ anagram: {

const ctstyle = _.get(chalk, theme.content.style)
const spinner = ora({
text: `${chalk.bold.cyan('Loading anagrams...')}`,
spinner: 'dots8',
color: 'yellow'
})
spinner.start()
const x = xray()

@@ -176,10 +176,12 @@ x(url, {

if (!err) {
spinner.stop()
spinner.clear()
if (/Input[a-z0-9 \(\)\.']*/i.test(block.p)) {
const data = block.p.match(/(Input[a-z0-9 \(\)\.']*)/i)
let msg = data[1]
spinner.stop()
spinner.clear()
msg = msg.replace(/letters\.Please/i, 'letters.\nPlease')
console.log(chalk.red(msg))
} else if (/No anagrams found/i.test(block.p)) {
spinner.stop()
spinner.clear()
console.log(ctstyle('No anagrams found.'))

@@ -191,2 +193,4 @@ } else {

const alist = data[3].trim()
spinner.stop()
spinner.clear()
themes.label(theme, 'down', 'Anagrams')

@@ -193,0 +197,0 @@ console.log(ctstyle(`Anagrams for: ${query}\n${found} found. Displaying ${show}:`))

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

const noon = require('noon')
const ora = require('ora')

@@ -68,11 +69,11 @@ const CFILE = `${process.env.HOME}/.leximaven.noon`

if (argv._.length > 1) {
_.each(argv._, (value) => {
ccont.push(value)
})
for (let i = 0; i <= argv._.length - 1; i++) {
if (argv._[i] !== 'datamuse' && argv._[i] !== 'dmuse' && argv._[i] !== 'dm' && argv._[i] !== 'get') {
ccont.push(argv._[i])
}
}
}
const prefix = 'http://api.datamuse.com/words?'
let conditions = `max=${config.dmuse.max}&`
_.each(ccont, (value) => {
conditions = `${conditions}&${value}`
})
for (let i = 0; i <= ccont.length - 1; i++) { conditions = `${conditions}&${ccont[i]}` }
let url = `${prefix}${conditions}`

@@ -92,2 +93,7 @@ url = encodeURI(url)

const ctstyle = _.get(chalk, theme.content.style)
const spinner = ora({
text: `${chalk.bold.cyan('Loading results...')}`,
spinner: 'dots8',
color: 'yellow'
})
http({ url }, (error, response) => {

@@ -101,2 +107,4 @@ if (!error && response.statusCode === 200) {

const resp = JSON.parse(response.body)
spinner.stop()
spinner.clear()
for (let i = 0; i <= resp.length - 1; i++) {

@@ -103,0 +111,0 @@ const item = resp[i]

/* eslint no-unused-vars: 0 */
const themes = require('../themes')
const _ = require('lodash')
const sample = 'Morbi ornare pulvinar metus, non faucibus arcu ultricies non.'
exports.command = 'list'

@@ -14,7 +10,7 @@ exports.aliases = ['ls', 'themes']

const list = themes.getThemes()
_.each(list, (value) => {
const name = value
const currentTheme = themes.loadTheme(name)
themes.label(currentTheme, 'down', name, sample)
})
for (let i = 0; i <= list.length - 1; i++) {
const currentTheme = themes.loadTheme(list[i])
const sample = 'Morbi ornare pulvinar metus, non faucibus arcu ultricies non.'
themes.label(currentTheme, 'down', list[i], sample)
}
}

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

if (config.verbose) themes.label(theme, 'down', 'Onelook')
let url = `http://onelook.com/?xml=1&w=${argv.word}`
const acont = []
acont.push(argv.word)
if (argv._.length > 1) {
for (let i = 0; i <= argv._.length - 1; i++) {
if (argv._[i] !== 'onelook' && argv._[i] !== 'one' && argv._[i] !== 'ol') acont.push(argv._[i])
}
}
let url = `http://onelook.com/?xml=1&w=${acont.join('+')}`
url = encodeURI(url)

@@ -69,0 +76,0 @@ const tofile = {

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

const lcont = []
_.each(list, (item) => lcont.push(item.word))
for (let i = 0; i <= list.length - 1; i++) {
lcont.push(list[i].word)
}
lcont.sort((a, b) => {

@@ -101,0 +103,0 @@ if (a < b) return -1

@@ -56,5 +56,5 @@ /* eslint max-len:0 */

if (argv._.length > 1) {
_.each(argv._, (value) => {
if (value !== 'urban') ucont.push(value)
})
for (let i = 0; i <= argv._.length - 1; i++) {
if (argv._[i] !== 'urban' && argv._[i] !== 'urb' && argv._[i] !== 'slang') ucont.push(argv._[i])
}
}

@@ -61,0 +61,0 @@ let words = ''

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

exports.command = 'phrase <word>'
exports.aliases = ['ph', 'bigram']
exports.aliases = ['ph', 'ngram']
exports.desc = 'Wordnik bi-gram phrases'

@@ -16,0 +16,0 @@ exports.builder = {

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

exports.command = 'related <word>'
exports.aliases = ['rel']
exports.command = 'relate <word>'
exports.aliases = ['related', 'rel']
exports.desc = 'Wordnik related words'

@@ -16,0 +16,0 @@ exports.builder = {

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

files = glob.sync(`${TDIR}*.noon`)
_.each(files, (path) => {
const name = path.replace(/[a-z0-9/_.]*themes\//, '').replace(/\.noon/, '')
list.push(name)
})
for (let i = 0; i <= files.length - 1; i++) {
list.push(files[i].replace(/[a-z0-9/_.]*themes\//, '').replace(/\.noon/, ''))
}
return list

@@ -66,0 +65,0 @@ }

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

'use strict';/* eslint max-len: 0 */var themes=require('../src/themes');var tools=require('../src/tools');var _=require('lodash');var chalk=require('chalk');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('dmuse 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 dmuse 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&dmuse&get',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('rbrain 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 */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);});});});});

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