diff options
Diffstat (limited to 'node_modules/locutus/_util/util.js.map')
-rw-r--r-- | node_modules/locutus/_util/util.js.map | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/node_modules/locutus/_util/util.js.map b/node_modules/locutus/_util/util.js.map deleted file mode 100644 index 9679611..0000000 --- a/node_modules/locutus/_util/util.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../src/_util/util.js"],"names":["globby","require","path","fs","async","YAML","mkdirp","debug","indentString","_","esprima","Util","argv","__src","dirname","__dirname","__root","__test","globals","pattern","concurrency","authorKeys","langDefaults","c","order","function_title_template","human","packageType","inspiration_urls","function_description_template","golang","python","ruby","php","alias","allowSkip","indexOf","_reindexBuffer","_injectwebBuffer","cb","self","_runFunctionOnAll","_injectwebOne","err","indexHtml","writeFileSync","_reindexOne","indexJs","requires","sort","join","_writetestOne","runFunc","q","queue","fullpath","callback","_load","bind","params","files","sync","push","drain","filepath","dir","basefile","basename","module","line","authors","forEach","key","headKeys","flattenDeep","langPath","language","langIndexPath","catPath","category","catIndexPath","funcPath","func_name","langTitle","langData","Object","assign","warning","type","layout","title","safeDump","trim","catTitle","catData","functionTitle","replace","functionDescription","funcData","examples","example","map","lines","i","estarget","returns","dependencies","notes","note","description","function","permalink","buf","code","Error","writeFile","name","relativeSrcForTest","JSON","stringify","subdir","testpath","testdir","relativeSrcForTestDir","relative","relativeTestFileForRoot","testProps","test","describeSkip","codez","global","_addRequire","length","humanIndex","parseInt","itSkip","body","testExpected","j","fileOrName","requesterParams","substr","msg","readFile","_opener","_parse","depCodePath","loaded","_findDependencies","parts","split","shift","codepath","pop","ast","parseScript","comment","loc","range","moduleExports","filter","leftArg","node","expression","left","rightArg","right","object","property","id","exp","funcName","funcParams","p","funcLoc","firstFuncBodyElementLoc","headComments","comments","start","end","value","_headKeys","func_arguments","headLines","keys","match","dmatch","val","num","exports"],"mappings":";;;;;;AAAA,IAAIA,SAASC,QAAQ,QAAR,CAAb;AACA,IAAIC,OAAOD,QAAQ,MAAR,CAAX;AACA,IAAIE,KAAKF,QAAQ,IAAR,CAAT;AACA,IAAIG,QAAQH,QAAQ,OAAR,CAAZ;AACA,IAAII,OAAOJ,QAAQ,SAAR,CAAX;AACA,IAAIK,SAASL,QAAQ,QAAR,CAAb;AACA,IAAIM,QAAQN,QAAQ,SAAR,EAAmB,SAAnB,CAAZ;AACA,IAAIO,eAAeP,QAAQ,eAAR,CAAnB;AACA,IAAIQ,IAAIR,QAAQ,QAAR,CAAR;AACA,IAAMS,UAAUT,QAAQ,SAAR,CAAhB;;IAEMU,I;AACJ,gBAAaC,IAAb,EAAmB;AAAA;;AACjB,QAAI,CAACA,IAAL,EAAW;AACTA,aAAO,EAAP;AACD;AACD,SAAKC,KAAL,GAAaX,KAAKY,OAAL,CAAaC,SAAb,CAAb;AACA,SAAKC,MAAL,GAAcd,KAAKY,OAAL,CAAaZ,KAAKY,OAAL,CAAaC,SAAb,CAAb,CAAd;AACA,SAAKE,MAAL,GAAcf,KAAKY,OAAL,CAAaZ,KAAKY,OAAL,CAAaC,SAAb,CAAb,IAAwC,OAAtD;;AAEA,SAAKG,OAAL,GAAe,EAAf;;AAEA,SAAKC,OAAL,GAAe,CAAC,KAAKN,KAAL,GAAa,aAAd,EAA6B,cAA7B,EAA6C,cAA7C,CAAf;AACA,SAAKO,WAAL,GAAmB,CAAnB;AACA,SAAKC,UAAL,GAAkB,CAChB,aADgB,EAEhB,aAFgB,EAGhB,kBAHgB,EAIhB,UAJgB,EAKhB,aALgB,EAMhB,YANgB,EAOhB,UAPgB,CAAlB;;AAUA,SAAKC,YAAL,GAAoB;AAClBC,SAAG;AACDC,eAAO,CADN;AAEDC,iCAAyB,mDAFxB;AAGDC,eAAO,GAHN;AAIDC,qBAAa,aAJZ;AAKDC,0BAAkB,CAChB,sFADgB,EAEhB,iGAFgB,CALjB;AASDC,uCAA+B;AAT9B,OADe;AAYlBC,cAAQ;AACNN,eAAO,CADD;AAENC,iCAAyB,mDAFnB;AAGNC,eAAO,IAHD;AAINC,qBAAa,SAJP;AAKNC,0BAAkB,CAChB,wEADgB,EAEhB,2EAFgB,EAGhB,yFAHgB,EAIhB,6CAJgB,CALZ;AAWNC,uCAA+B;AAXzB,OAZU;AAyBlBE,cAAQ;AACNP,eAAO,CADD;AAENC,iCAAyB,mDAFnB;AAGNC,eAAO,QAHD;AAINC,qBAAa,QAJP;AAKNC,0BAAkB,CAChB,uGADgB,CALZ;AAQNC,uCAA+B;AARzB,OAzBU;AAmClBG,YAAM;AACJR,eAAO,CADH;AAEJC,iCAAyB,mDAFrB;AAGJC,eAAO,MAHH;AAIJC,qBAAa,QAJT;AAKJC,0BAAkB,CAChB,oFADgB,CALd;AAQJC,uCAA+B;AAR3B,OAnCY;AA6ClBI,WAAK;AACHT,eAAO,CADJ;AAEHC,iCAAyB,wCAFtB;AAGHC,eAAO,KAHJ;AAIHC,qBAAa,WAJV;AAKHC,0BAAkB,CAChB,sFADgB,EAEhB,4GAFgB,EAGhB,gIAHgB,CALf;AAUHC,uCAA+B,4JAV5B;AAWHK,eAAO,CACL,cADK,EAEL,oBAFK,EAGL,iBAHK,EAIL,oBAJK,EAKL,uBALK,EAML,mBANK,EAOL,yBAPK,EAQL,uBARK,EASL,mBATK,EAUL,oBAVK,EAWL,mBAXK,EAYL,mBAZK,EAaL,mBAbK,EAcL,mBAdK,EAeL,kBAfK,EAgBL,sBAhBK,EAiBL,mBAjBK,EAkBL,sBAlBK,EAmBL,kBAnBK,EAoBL,kBApBK,EAqBL,oBArBK,EAsBL,kBAtBK,EAuBL,mBAvBK,EAwBL,aAxBK,EAyBL,YAzBK,EA0BL,kBA1BK;AAXJ;AA7Ca,KAApB;;AAuFA,SAAKC,SAAL,GAAkBvB,KAAKwB,OAAL,CAAa,UAAb,MAA6B,CAAC,CAAhD;;AAEA,SAAKC,cAAL,GAAsB,EAAtB;AACA,SAAKC,gBAAL,GAAwB,EAAxB;AACD;;;;8BAEUC,E,EAAI;AACb,UAAIC,OAAO,IAAX;AACA,WAAKC,iBAAL,CAAuB,KAAKC,aAA5B,EAA2C,UAAUC,GAAV,EAAe;AACxD,YAAIA,GAAJ,EAAS;AACP,iBAAOJ,GAAGI,GAAH,CAAP;AACD;AACD,aAAK,IAAIC,SAAT,IAAsBJ,KAAKF,gBAA3B,EAA6C;AAC3C/B,gBAAM,cAAcqC,SAApB;AACAzC,aAAG0C,aAAH,CAAiBD,SAAjB,EAA4BJ,KAAKF,gBAAL,CAAsBM,SAAtB,CAA5B,EAA8D,OAA9D;AACD;AACF,OARD;AASD;;;4BAEQL,E,EAAI;AACX,UAAIC,OAAO,IAAX;AACAA,WAAKH,cAAL,GAAsB,EAAtB;AACAG,WAAKC,iBAAL,CAAuBD,KAAKM,WAA5B,EAAyC,UAAUH,GAAV,EAAe;AACtD,YAAIA,GAAJ,EAAS;AACP,iBAAOJ,GAAGI,GAAH,CAAP;AACD;AACD,aAAK,IAAII,OAAT,IAAoBP,KAAKH,cAAzB,EAAyC;AACvC,cAAIW,WAAWR,KAAKH,cAAL,CAAoBU,OAApB,CAAf;AACAC,mBAASC,IAAT;AACA1C,gBAAM,cAAcwC,OAApB;AACA5C,aAAG0C,aAAH,CAAiBE,OAAjB,EAA0BC,SAASE,IAAT,CAAc,IAAd,IAAsB,IAAhD,EAAsD,OAAtD;AACD;AACF,OAVD;AAWD;;;+BAEWX,E,EAAI;AACd,WAAKE,iBAAL,CAAuB,KAAKU,aAA5B,EAA2CZ,EAA3C;AACD;;;sCAEkBa,O,EAASb,E,EAAI;AAC9B,UAAIC,OAAO,IAAX;;AAEA,UAAIa,IAAIjD,MAAMkD,KAAN,CAAY,UAAUC,QAAV,EAAoBC,QAApB,EAA8B;AAChDhB,aAAKiB,KAAL,CAAWC,IAAX,CAAgBlB,IAAhB,EAAsBe,QAAtB,EAAgC,EAAhC,EAAoC,UAAUZ,GAAV,EAAegB,MAAf,EAAuB;AACzD,cAAIhB,GAAJ,EAAS;AACP,mBAAOa,SAASb,GAAT,CAAP;AACD;;AAEDS,kBAAQM,IAAR,CAAalB,IAAb,EAAmBmB,MAAnB,EAA2BH,QAA3B;AACD,SAND;AAOD,OARO,EAQLhB,KAAKpB,WARA,CAAR;;AAUAb,YAAM;AACJY,iBAASqB,KAAKrB;AADV,OAAN;AAGA,UAAIyC,QAAQ5D,OAAO6D,IAAP,CAAYrB,KAAKrB,OAAjB,CAAZ;;AAEAkC,QAAES,IAAF,CAAOF,KAAP;;AAEAP,QAAEU,KAAF,GAAUxB,EAAV;AACD;;;gCAEYoB,M,EAAQpB,E,EAAI;AACvB,UAAIgB,WAAW,KAAK1C,KAAL,GAAa,GAAb,GAAmB8C,OAAOK,QAAzC;AACA,UAAIC,MAAM/D,KAAKY,OAAL,CAAayC,QAAb,CAAV;AACA,UAAIW,WAAWhE,KAAKiE,QAAL,CAAcZ,QAAd,EAAwB,KAAxB,CAAf;AACA,UAAIR,UAAUkB,MAAM,WAApB;;AAEA,UAAIG,SAASF,QAAb;AACA,UAAIA,aAAa,QAAjB,EAA2B;AACzBE,iBAAS,OAAT;AACD;;AAED,UAAI,CAAC,KAAK/B,cAAL,CAAoBU,OAApB,CAAL,EAAmC;AACjC,aAAKV,cAAL,CAAoBU,OAApB,IAA+B,EAA/B;AACD;;AAED,UAAIsB,OAAO,sBAAsBD,MAAtB,GAA+B,oBAA/B,GAAsDF,QAAtD,GAAiE,KAA5E;AACA,WAAK7B,cAAL,CAAoBU,OAApB,EAA6Be,IAA7B,CAAkCO,IAAlC;AACA,aAAO9B,GAAG,IAAH,CAAP;AACD;;;kCAEcoB,M,EAAQpB,E,EAAI;AACzB,UAAI+B,UAAU,EAAd;AACA,WAAKjD,UAAL,CAAgBkD,OAAhB,CAAwB,UAAUC,GAAV,EAAe;AACrC,YAAIb,OAAOc,QAAP,CAAgBD,GAAhB,CAAJ,EAA0B;AACxBF,kBAAQE,GAAR,IAAe/D,EAAEiE,WAAF,CAAcf,OAAOc,QAAP,CAAgBD,GAAhB,CAAd,CAAf;AACD;AACF,OAJD;;AAMA,UAAIG,WAAW,CACb,KAAK3D,MADQ,EAEb,kBAFa,EAGb2C,OAAOiB,QAHM,EAIb1B,IAJa,CAIR,EAJQ,CAAf;;AAMA,UAAI2B,gBAAgBF,WAAW,aAA/B;AACA,UAAIG,UAAUH,WAAW,GAAX,GAAiBhB,OAAOoB,QAAtC;AACA,UAAIC,eAAeF,UAAU,GAAV,GAAgB,YAAnC;AACA,UAAIG,WAAWH,UAAU,GAAV,GAAgBnB,OAAOuB,SAAvB,GAAmC,OAAlD;;AAEA,UAAI,CAAC,KAAK5C,gBAAL,CAAsBuC,aAAtB,CAAL,EAA2C;AACzC,YAAIM,YAAY,EAAhB;AACAA,qBAAa,KAAK7D,YAAL,CAAkBqC,OAAOiB,QAAzB,EAAmClD,KAAnC,GAA2C,GAAxD;AACAyD,qBAAa,KAAK7D,YAAL,CAAkBqC,OAAOiB,QAAzB,EAAmCjD,WAAnC,GAAiD,IAA9D;AACAwD,qBAAa,gBAAb;;AAEA,YAAIC,WAAWC,OAAOC,MAAP,CAAc,EAAd,EAAkB,KAAKhE,YAAL,CAAkBqC,OAAOiB,QAAzB,CAAlB,EAAsD;AACnEW,mBAAS,0EAD0D;AAEnEC,gBAAM,UAF6D;AAGnEC,kBAAQ,UAH2D;AAInEb,oBAAUjB,OAAOiB,QAJkD;AAKnEc,iBAAOP;AAL4D,SAAtD,CAAf;AAOA,aAAK7C,gBAAL,CAAsBuC,aAAtB,IAAuC,QAAQ,IAAR,GAAexE,KAAKsF,QAAL,CAAcP,QAAd,EAAwBQ,IAAxB,EAAf,GAAgD,IAAhD,GAAuD,KAAvD,GAA+D,IAAtG;AACD;;AAED,UAAI,CAAC,KAAKtD,gBAAL,CAAsB0C,YAAtB,CAAL,EAA0C;AACxC,YAAIa,WAAW,EAAf;AACAA,oBAAY,KAAKvE,YAAL,CAAkBqC,OAAOiB,QAAzB,EAAmClD,KAAnC,GAA2C,MAAvD;AACAmE,oBAAYlC,OAAOoB,QAAP,GAAkB,GAA9B;AACAc,oBAAY,KAAKvE,YAAL,CAAkBqC,OAAOiB,QAAzB,EAAmCjD,WAAnC,GAAiD,GAA7D;AACAkE,oBAAY,gBAAZ;;AAEA,YAAIC,UAAU;AACZP,mBAAS,0EADG;AAEZC,gBAAM,UAFM;AAGZC,kBAAQ,UAHI;AAIZb,oBAAUjB,OAAOiB,QAJL;AAKZG,oBAAUpB,OAAOoB,QALL;AAMZW,iBAAOG;AANK,SAAd;AAQA,aAAKvD,gBAAL,CAAsB0C,YAAtB,IAAsC,QAAQ,IAAR,GAAe3E,KAAKsF,QAAL,CAAcG,OAAd,EAAuBF,IAAvB,EAAf,GAA+C,IAA/C,GAAsD,KAAtD,GAA8D,IAApG;AACD;;AAED,UAAIG,gBAAgB,KAAKzE,YAAL,CAAkBqC,OAAOiB,QAAzB,EAAmCnD,uBAAnC,CACjBuE,OADiB,CACT,cADS,EACO,KAAK1E,YAAL,CAAkBqC,OAAOiB,QAAzB,EAAmClD,KAD1C,EAEjBsE,OAFiB,CAET,cAFS,EAEOrC,OAAOoB,QAFd,EAGjBiB,OAHiB,CAGT,cAHS,EAGOrC,OAAOuB,SAHd,EAIjBc,OAJiB,CAIT,oBAJS,EAIarC,OAAOuB,SAAP,CAAiBc,OAAjB,CAAyB,IAAzB,EAA+B,GAA/B,CAJb,CAApB;;AAMA,UAAIC,sBAAsB,KAAK3E,YAAL,CAAkBqC,OAAOiB,QAAzB,EAAmC/C,6BAAnC,CACvBmE,OADuB,CACf,cADe,EACC,KAAK1E,YAAL,CAAkBqC,OAAOiB,QAAzB,EAAmClD,KADpC,EAEvBsE,OAFuB,CAEf,cAFe,EAECrC,OAAOoB,QAFR,EAGvBiB,OAHuB,CAGf,cAHe,EAGCrC,OAAOuB,SAHR,EAIvBc,OAJuB,CAIf,oBAJe,EAIOrC,OAAOuB,SAAP,CAAiBc,OAAjB,CAAyB,IAAzB,EAA+B,GAA/B,CAJP,CAA1B;;AAMA,UAAIE,WAAW;AACbX,iBAAS,0EADI;AAEbY,kBAAU,CAACxC,OAAOc,QAAP,CAAgB2B,OAAhB,IAA2B,EAA5B,EAAgCC,GAAhC,CAAoC,UAAUC,KAAV,EAAiBC,CAAjB,EAAoB;AAChE,iBAAOD,MAAMpD,IAAN,CAAW,IAAX,CAAP;AACD,SAFS,CAFG;AAKbsD,kBAAU,CAAC7C,OAAOc,QAAP,CAAgB+B,QAAhB,IAA4B,EAA7B,EAAiCH,GAAjC,CAAqC,UAAUC,KAAV,EAAiBC,CAAjB,EAAoB;AACjE,iBAAOD,MAAMpD,IAAN,CAAW,IAAX,CAAP;AACD,SAFS,EAEPA,IAFO,CAEF,IAFE,EAEI0C,IAFJ,MAEc,KAPX;AAQba,iBAAS,CAAC9C,OAAOc,QAAP,CAAgBgC,OAAhB,IAA2B,EAA5B,EAAgCJ,GAAhC,CAAoC,UAAUC,KAAV,EAAiBC,CAAjB,EAAoB;AAC/D,iBAAOD,MAAMpD,IAAN,CAAW,IAAX,CAAP;AACD,SAFQ,CARI;AAWbwD,sBAAc,EAXD;AAYbpC,iBAASA,WAAW,EAZP;AAabqC,eAAO,CAAChD,OAAOc,QAAP,CAAgBmC,IAAhB,IAAwB,EAAzB,EAA6BP,GAA7B,CAAiC,UAAUC,KAAV,EAAiBC,CAAjB,EAAoB;AAC1D,iBAAOD,MAAMpD,IAAN,CAAW,IAAX,CAAP;AACD,SAFM,CAbM;AAgBbsC,cAAM,UAhBO;AAiBbC,gBAAQ,UAjBK;AAkBbC,eAAOK,aAlBM;AAmBbc,qBAAaZ,mBAnBA;AAoBba,kBAAUnD,OAAOuB,SApBJ;AAqBbH,kBAAUpB,OAAOoB,QArBJ;AAsBbH,kBAAUjB,OAAOiB,QAtBJ;AAuBbmC,mBAAWpD,OAAOiB,QAAP,GAAkB,GAAlB,GAAwBjB,OAAOoB,QAA/B,GAA0C,GAA1C,GAAgDpB,OAAOuB,SAAvD,GAAmE,GAvBjE;AAwBbhD,eAAO,CACL,gBAAgByB,OAAOiB,QAAvB,GAAkC,GAAlC,GAAwCjB,OAAOuB,SAA/C,GAA2D,GADtD,EAEL,gBAAgBvB,OAAOoB,QAAvB,GAAkC,GAAlC,GAAwCpB,OAAOuB,SAA/C,GAA2D,GAFtD,EAGL,MAAMvB,OAAOiB,QAAb,GAAwB,GAAxB,GAA8BjB,OAAOuB,SAArC,GAAiD,GAH5C;AAxBM,OAAf;;AA+BA,UAAIvB,OAAOiB,QAAP,KAAoB,KAAxB,EAA+B;AAC7BsB,iBAAShE,KAAT,CAAe4B,IAAf,CAAoB,gBAAgBH,OAAOuB,SAAvB,GAAmC,GAAvD;AACD;;AAED,UAAI8B,MAAM,QAAQ,IAAR,GAAe3G,KAAKsF,QAAL,CAAcO,QAAd,EAAwBN,IAAxB,EAAf,GAAgD,IAAhD,GAAuD,KAAvD,GAA+D,IAAzE;;AAEAoB,iDAAyCrD,OAAOsD,IAAhD;;AAEA3G,aAAOJ,KAAKY,OAAL,CAAamE,QAAb,CAAP,EAA+B,UAAUtC,GAAV,EAAe;AAC5C,YAAIA,GAAJ,EAAS;AACP,gBAAM,IAAIuE,KAAJ,CAAU,0BAA0BjC,QAA1B,GAAqC,IAArC,GAA4CtC,GAAtD,CAAN;AACD;AACDxC,WAAGgH,SAAH,CAAalC,QAAb,EAAuB+B,GAAvB,EAA4B,OAA5B,EAAqCzE,EAArC;AACD,OALD;AAMD;;;gCAEY6E,I,EAAMC,kB,EAAoB;AACrC,aAAO,CACL,MADK,EAELD,IAFK,EAGL,eAHK,EAILC,kBAJK,EAKL,qDALK,EAMLnE,IANK,CAMA,EANA,CAAP;AAOD;;;kCAEcS,M,EAAQpB,E,EAAI;AACzB,UAAIC,OAAO,IAAX;;AAEA,UAAI,CAACmB,OAAOuB,SAAZ,EAAuB;AACrB,cAAM,IAAIgC,KAAJ,CAAU,qBAAqBI,KAAKC,SAAL,CAAe5D,MAAf,CAA/B,CAAN;AACD;AACD,UAAI,CAACA,OAAOc,QAAZ,EAAsB;AACpB,cAAM,IAAIyC,KAAJ,CAAU,oBAAoBvD,OAAOuB,SAArC,CAAN;AACD;AACD,UAAI,CAACvB,OAAOc,QAAP,CAAgB2B,OAArB,EAA8B;AAC5B,cAAM,IAAIc,KAAJ,CAAU,mBAAmBvD,OAAOuB,SAApC,CAAN;AACD;;AAED,UAAIf,WAAWjE,KAAKiE,QAAL,CAAcR,OAAOK,QAArB,CAAf;AACA,UAAIwD,SAAStH,KAAKY,OAAL,CAAa6C,OAAOK,QAApB,CAAb;AACA,UAAIyD,WAAW,KAAKxG,MAAL,GAAc,aAAd,GAA8BuG,MAA9B,GAAuC,QAAvC,GAAkDrD,QAAjE;AACA,UAAIuD,UAAUxH,KAAKY,OAAL,CAAa2G,QAAb,CAAd;AACA,UAAIE,wBAAwBzH,KAAK0H,QAAL,CAAcF,OAAd,EAAuBlF,KAAK3B,KAA5B,CAA5B;AACA,UAAIgH,0BAA0B3H,KAAK0H,QAAL,CAAcpF,KAAKxB,MAAnB,EAA2ByG,QAA3B,CAA9B;;AAEA;AACA;;AAEA,UAAIK,YAAY,EAAhB;AACA,UAAInE,OAAOc,QAAP,CAAgBsD,IAApB,EAA0B;AACxBD,oBAAYnE,OAAOc,QAAP,CAAgBsD,IAAhB,CAAqB,CAArB,EAAwB,CAAxB,CAAZ;AACD;;AAED,UAAIC,eAAe,EAAnB;AACA,UAAIxF,KAAKL,SAAL,IAAkB2F,UAAU1F,OAAV,CAAkB,UAAlB,MAAkC,CAAC,CAAzD,EAA4D;AAC1D4F,uBAAe,OAAf;AACD;;AAED,UAAIC,QAAQ,EAAZ;;AAEAA,YAAMnE,IAAN,CAAW,kEAAX;AACAmE,YAAMnE,IAAN,CAAW,yBAAX;;AAEA;AACA,WAAK,IAAIoE,MAAT,IAAmB1F,KAAKtB,OAAxB,EAAiC;AAC/B+G,cAAMnE,IAAN,CAAW,SAASoE,MAAT,GAAkB,KAAlB,GAA0B1F,KAAKtB,OAAL,CAAagH,MAAb,CAArC;AACD;;AAED;AACA;AACAD,YAAMnE,IAAN,CAAW,0BAAX;;AAEAmE,YAAMnE,IAAN,CAAW,SAAS,QAAT,GAAoB,6BAA/B;;AAEA;AACA;AACA,UAAIH,OAAOiB,QAAP,KAAoB,KAAxB,EAA+B;AAC7BqD,cAAMnE,IAAN,CAAWtB,KAAK2F,WAAL,CAAiB,SAAjB,EAA4BR,wBAAwB,GAAxB,GAA8B,kBAA1D,CAAX;AACAM,cAAMnE,IAAN,CAAWtB,KAAK2F,WAAL,CAAiB,SAAjB,EAA4BR,wBAAwB,GAAxB,GAA8B,kBAA1D,CAAX;AACA,YAAIhE,OAAOuB,SAAP,KAAqB,YAAzB,EAAuC;AACrC+C,gBAAMnE,IAAN,CAAWtB,KAAK2F,WAAL,CACT,WADS,EAETR,wBAAwB,GAAxB,GAA8B,uBAFrB,CAAX;AAID;AACD,YAAIhE,OAAOuB,SAAP,KAAqB,sBAAzB,EAAiD;AAC/C+C,gBAAMnE,IAAN,CAAWtB,KAAK2F,WAAL,CACT,sBADS,EAETR,wBAAwB,GAAxB,GAA8B,+BAFrB,CAAX;AAID;AACF;;AAED;AACAM,YAAMnE,IAAN,CAAWtB,KAAK2F,WAAL,CACTxE,OAAOuB,SADE,EAETyC,wBAAwB,GAAxB,GAA8BhE,OAAOK,QAF5B,CAAX;;AAKAiE,YAAMnE,IAAN,CAAW,EAAX;;AAEAmE,YAAMnE,IAAN,CAAW,CACT,UADS,EAETkE,YAFS,EAGT,SAHS,EAITrE,OAAOK,QAJE,EAKT,cALS,EAMT6D,uBANS,EAOT,oBAPS,EAQT3E,IARS,CAQJ,EARI,CAAX;;AAUA;AACA,WAAK,IAAIqD,CAAT,IAAc5C,OAAOc,QAAP,CAAgB2B,OAA9B,EAAuC;AACrC,YAAI,CAACzC,OAAOc,QAAP,CAAgBgC,OAAhB,CAAwBF,CAAxB,CAAD,IAA+B,CAAC5C,OAAOc,QAAP,CAAgBgC,OAAhB,CAAwBF,CAAxB,EAA2B6B,MAA/D,EAAuE;AACrE,gBAAM,IAAIlB,KAAJ,CAAU,oCAAoCX,CAA9C,EAAiDwB,IAAjD,EAAuDpE,MAAvD,CAAN;AACD;;AAED,YAAI0E,aAAaC,SAAS/B,CAAT,EAAY,EAAZ,IAAkB,CAAnC;AACA,YAAIgC,SAAS,EAAb;AACA,YAAI/F,KAAKL,SAAL,IAAkB2F,UAAU1F,OAAV,CAAkB,UAAUiG,UAA5B,MAA4C,CAAC,CAAnE,EAAsE;AACpEE,mBAAS,OAAT;AACD;;AAEDN,cAAMnE,IAAN,CAAW,CACT,MADS,EAETyE,MAFS,EAGT,yBAHS,EAIRF,UAJQ,EAKT,uBALS,EAMTnF,IANS,CAMJ,EANI,CAAX;;AAQA,YAAIsF,OAAO,EAAX;;AAEA,YAAIC,eAAe9E,OAAOc,QAAP,CAAgBgC,OAAhB,CAAwBF,CAAxB,EAA2BrD,IAA3B,CAAgC,IAAhC,CAAnB;;AAEAsF,aAAK1E,IAAL,CAAU,oBAAoB2E,YAA9B;;AAEA;AACA;AACA,aAAK,IAAIC,CAAT,IAAc/E,OAAOc,QAAP,CAAgB2B,OAAhB,CAAwBG,CAAxB,CAAd,EAA0C;AACxC,cAAI+B,SAASI,CAAT,EAAY,EAAZ,MAAoB/E,OAAOc,QAAP,CAAgB2B,OAAhB,CAAwBG,CAAxB,EAA2B6B,MAA3B,GAAoC,CAA5D,EAA+D;AAC7D;AACAI,iBAAK1E,IAAL,CAAU,kBAAkBH,OAAOc,QAAP,CAAgB2B,OAAhB,CAAwBG,CAAxB,EAA2BmC,CAA3B,EAA8B1C,OAA9B,CAAsC,gBAAtC,EAAwD,EAAxD,CAA5B;AACD,WAHD,MAGO;AACLwC,iBAAK1E,IAAL,CAAUH,OAAOc,QAAP,CAAgB2B,OAAhB,CAAwBG,CAAxB,EAA2BmC,CAA3B,CAAV;AACD;AACF;;AAEDF,aAAK1E,IAAL,CAAU,wCAAV;AACA0E,aAAK1E,IAAL,CAAU,QAAV;;AAEAmE,cAAMnE,IAAN,CAAWtD,aAAagI,KAAKtF,IAAL,CAAU,IAAV,CAAb,EAA8B,GAA9B,EAAmC,CAAnC,CAAX;;AAEA+E,cAAMnE,IAAN,CAAW,MAAX;AACD;;AAEDmE,YAAMnE,IAAN,CAAW,IAAX;AACAmE,YAAMnE,IAAN,CAAW,EAAX;;AAEA,UAAImD,OAAOgB,MAAM/E,IAAN,CAAW,IAAX,CAAX;;AAEA;AACA5C,aAAOoH,OAAP,EAAgB,UAAU/E,GAAV,EAAe;AAC7B,YAAIA,GAAJ,EAAS;AACP,gBAAM,IAAIuE,KAAJ,CAAUvE,GAAV,CAAN;AACD;AACDpC,cAAM,cAAckH,QAApB;AACAtH,WAAGgH,SAAH,CAAaM,QAAb,EAAuBR,IAAvB,EAA6B,OAA7B,EAAsC1E,EAAtC;AACD,OAND;AAOD;;AAED;AACA;AACA;;;;4BACSoG,U,EAAYC,e,EAAiBrG,E,EAAI;AACxC,UAAIC,OAAO,IAAX;AACA,UAAIrB,OAAJ;;AAEA,UAAIyD,WAAWgE,gBAAgBhE,QAAhB,IAA4B,GAA3C;;AAEA,UAAI1E,KAAKiE,QAAL,CAAcwE,UAAd,EAA0B,KAA1B,EAAiCvG,OAAjC,CAAyC,GAAzC,MAAkD,CAAC,CAAvD,EAA0D;AACxD;AACAjB,kBAAUqB,KAAK3B,KAAL,GAAa,GAAb,GAAmB+D,QAAnB,GAA8B,GAA9B,GAAoC+D,WAAW3C,OAAX,CAAmB,KAAnB,EAA0B,GAA1B,CAApC,GAAqE,KAA/E;AACD,OAHD,MAGO,IAAI2C,WAAWvG,OAAX,CAAmB,GAAnB,MAA4B,CAAC,CAAjC,EAAoC;AACzC;AACAjB,kBAAUqB,KAAK3B,KAAL,GAAa,GAAb,GAAmB+D,QAAnB,GAA8B,KAA9B,GAAsC+D,UAAtC,GAAmD,KAA7D;AACD,OAHM,MAGA,IAAIA,WAAWE,MAAX,CAAkB,CAAlB,EAAqB,CAArB,MAA4B,GAAhC,EAAqC;AAC1C;AACA1H,kBAAUwH,UAAV;AACD,OAHM,MAGA;AACL;AACAxH,kBAAUqB,KAAK3B,KAAL,GAAa,GAAb,GAAmB8H,UAA7B;AACD;;AAEDxH,gBAAUA,QAAQ6E,OAAR,CAAgB,yBAAhB,EAA2C,0BAA3C,CAAV;AACAzF,YAAM,cAAcY,OAApB;AACA,UAAIyC,QAAQ5D,OAAO6D,IAAP,CAAY1C,OAAZ,EAAqB,EAArB,CAAZ;;AAEA,UAAIyC,MAAMwE,MAAN,KAAiB,CAArB,EAAwB;AACtB,YAAIU,iBAAelF,MAAMwE,MAArB,uBAA6CO,UAA7C,sBAAwExH,OAA5E;AACA,eAAOoB,GAAG,IAAI2E,KAAJ,CAAU4B,GAAV,CAAH,CAAP;AACD;;AAED,UAAI9E,WAAWJ,MAAM,CAAN,CAAf;;AAEA,UAAI1D,KAAKiE,QAAL,CAAcH,QAAd,MAA4B,UAAhC,EAA4C;AAC1C,eAAOzB,GAAG,IAAH,CAAP;AACD;;AAED,UAAI,CAACyB,QAAL,EAAe;AACb,eAAOzB,GAAG,IAAI2E,KAAJ,CAAU,oBAAoB/F,OAA9B,CAAH,CAAP;AACD;;AAEDhB,SAAG4I,QAAH,CAAY/E,QAAZ,EAAsB,OAAtB,EAA+B,UAAUrB,GAAV,EAAesE,IAAf,EAAqB;AAClD,YAAItE,GAAJ,EAAS;AACP,iBAAOJ,GAAG,IAAI2E,KAAJ,CAAU,yBAAyBlD,QAAzB,GAAoC,IAApC,GAA2CrB,GAArD,CAAH,CAAP;AACD;AACD,eAAOJ,GAAG,IAAH,EAASyB,QAAT,EAAmBiD,IAAnB,CAAP;AACD,OALD;AAMD;;;0BAEM0B,U,EAAYC,e,EAAiBrG,E,EAAI;AACtC,UAAIC,OAAO,IAAX;AACAA,WAAKwG,OAAL,CAAaL,UAAb,EAAyBC,eAAzB,EAA0C,UAAUjG,GAAV,EAAeY,QAAf,EAAyB0D,IAAzB,EAA+B;AACvE,YAAItE,GAAJ,EAAS;AACP,iBAAOJ,GAAGI,GAAH,CAAP;AACD;;AAED,YAAIqB,WAAW9D,KAAK0H,QAAL,CAAcpF,KAAK3B,KAAnB,EAA0B0C,QAA1B,CAAf;AACAf,aAAKyG,MAAL,CAAYjF,QAAZ,EAAsBiD,IAAtB,EAA4B1E,EAA5B;AACD,OAPD;AAQD;;;sCAEkBoG,U,EAAYC,e,EAAiBlC,Y,EAAcnE,E,EAAI;AAChE,UAAIC,OAAO,IAAX;;AAEA,UAAI,CAACoG,gBAAgBnE,QAAhB,CAAyB,YAAzB,CAAD,IAA2C,CAACmE,gBAAgBnE,QAAhB,CAAyB,YAAzB,EAAuC2D,MAAvF,EAA+F;AAC7F,YAAI7F,EAAJ,EAAQ;AACNA,aAAG,IAAH,EAAS,EAAT;AACD;AACD;AACD;;AAED,UAAIgE,CAAJ;AACA,UAAI2C,WAAJ;AACA,UAAIC,SAAS,CAAb;AACA,WAAK5C,CAAL,IAAUqC,gBAAgBnE,QAAhB,CAAyB,YAAzB,CAAV,EAAkD;AAChDyE,sBAAcN,gBAAgBnE,QAAhB,CAAyB,YAAzB,EAAuC8B,CAAvC,EAA0C,CAA1C,CAAd;;AAEA/D,aAAKiB,KAAL,CAAWyF,WAAX,EAAwBN,eAAxB,EAAyC,UAAUjG,GAAV,EAAegB,MAAf,EAAuB;AAC9D,cAAIhB,GAAJ,EAAS;AACP,mBAAOJ,GAAGI,GAAH,CAAP;AACD;;AAED+D,uBAAawC,WAAb,IAA4BvF,MAA5B;AACAnB,eAAK4G,iBAAL,CAAuBF,WAAvB,EAAoCvF,MAApC,EAA4C+C,YAA5C;;AAEA,cAAInE,MAAM,EAAE4G,MAAF,KAAaP,gBAAgBnE,QAAhB,CAAyB,YAAzB,EAAuC2D,MAA9D,EAAsE;AACpE7F,eAAG,IAAH,EAASmE,YAAT;AACD;AACF,SAXD;AAYD;AACF;;;2BAEO1C,Q,EAAUiD,I,EAAM1E,E,EAAI;AAC1B,UAAI,CAAC0E,IAAL,EAAW;AACT,eAAO1E,GAAG,IAAI2E,KAAJ,CAAU,qBAAqBlD,QAArB,GAAgC,oBAA1C,CAAH,CAAP;AACD;;AAED,UAAIA,SAAS5B,OAAT,CAAiB,GAAjB,MAA0B,CAAC,CAA/B,EAAkC;AAChC,eAAOG,GAAG,IAAI2E,KAAJ,CAAU,wDAAwDlD,QAAxD,GAAmE,IAA7E,CAAH,CAAP;AACD;;AAED,UAAIqF,QAAQrF,SAASsF,KAAT,CAAe,GAAf,CAAZ;AACA,UAAI1E,WAAWyE,MAAME,KAAN,EAAf;AACA,UAAIC,WAAWH,MAAMnG,IAAN,CAAW,GAAX,CAAf;AACA,UAAIkE,OAAOiC,MAAMI,GAAN,EAAX;AACA,UAAI1E,WAAWsE,MAAMnG,IAAN,CAAW,GAAX,CAAf;;AAEA,UAAIwG,MAAMhJ,QAAQiJ,WAAR,CAAoB1C,IAApB,EAA0B,EAAE2C,SAAS,IAAX,EAAiBC,KAAK,IAAtB,EAA4BC,OAAO,IAAnC,EAA1B,CAAV;;AAEA;AACA,UAAIC,gBAAgBL,IAAIlB,IAAJ,CAASwB,MAAT,CAAgB,gBAAQ;AAC1C,YAAI;AACF,cAAIC,UAAUC,KAAKC,UAAL,CAAgBC,IAA9B;AACA,cAAIC,WAAWH,KAAKC,UAAL,CAAgBG,KAA/B;;AAEA,iBAAOL,QAAQM,MAAR,CAAenD,IAAf,KAAwB,QAAxB,IACH6C,QAAQO,QAAR,CAAiBpD,IAAjB,KAA0B,SADvB,IAEHiD,SAAS7E,IAAT,KAAkB,oBAFf,IAGH6E,SAASI,EAAT,CAAYjF,IAAZ,KAAqB,YAHlB,IAIH,CAAC,CAAC6E,SAASI,EAAT,CAAYrD,IAJlB;AAKD,SATD,CASE,OAAOzE,GAAP,EAAY;AACZ,iBAAO,KAAP;AACD;AACF,OAbmB,CAApB;;AAeA;AACA,UAAIoH,cAAc3B,MAAd,KAAyB,CAA7B,EAAgC;AAC9B,eAAO7F,GAAG2E,gBAAclD,QAAd,uDAAH,CAAP;AACD;;AAED;AACA,UAAI0G,MAAMX,cAAc,CAAd,CAAV;;AAEA;AACA,UAAIY,WAAWD,IAAIP,UAAJ,CAAeG,KAAf,CAAqBG,EAArB,CAAwBrD,IAAvC;AACA,UAAIwD,aAAaF,IAAIP,UAAJ,CAAeG,KAAf,CAAqB3G,MAArB,CAA4B0C,GAA5B,CAAgC;AAAA,eAAKwE,EAAEzD,IAAP;AAAA,OAAhC,CAAjB;;AAEA;AACA,UAAI0D,UAAUJ,IAAIP,UAAJ,CAAeG,KAAf,CAAqBT,GAAnC;;AAEA;AACA;AACA;AACA,UAAIkB,0BAA0BL,IAAIP,UAAJ,CAAeG,KAAf,CAAqB9B,IAArB,CAA0BA,IAA1B,CAA+B,CAA/B,EAAkCqB,GAAhE;;AAEA;AACA;AACA,UAAImB,eAAetB,IAAIuB,QAAJ,CAAajB,MAAb,CAAoB;AAAA,eACrCzI,EAAEiE,IAAF,KAAW,MAAX,IACAjE,EAAEsI,GAAF,CAAMqB,KAAN,CAAY7G,IAAZ,IAAoByG,QAAQI,KAAR,CAAc7G,IADlC,IAEA9C,EAAEsI,GAAF,CAAMsB,GAAN,CAAU9G,IAAV,IAAkB0G,wBAAwBG,KAAxB,CAA8B7G,IAHX;AAAA,OAApB,EAGqCgC,GAHrC,CAGyC;AAAA,eAAK9E,EAAE6J,KAAF,CAAQxF,IAAR,EAAL;AAAA,OAHzC,CAAnB;;AAKA,UAAIoF,aAAa5C,MAAb,KAAwB,CAA5B,EAA+B;AAC7B,YAAIU,2BAAyB9E,QAAzB,uDAAJ;AACA,eAAOzB,GAAG,IAAI2E,KAAJ,CAAU4B,GAAV,CAAH,CAAP;AACD;;AAED,UAAIrE,WAAW,KAAK4G,SAAL,CAAeL,YAAf,CAAf;;AAEA,UAAIrH,SAAS;AACXc,kBAAUA,QADC;AAEX2C,cAAMA,IAFK;AAGXpD,kBAAUA,QAHC;AAIXwF,kBAAUA,QAJC;AAKX;AACA5E,kBAAUA,QANC;AAOXG,kBAAUA,QAPC;AAQXG,mBAAWyF,QARA;AASXW,wBAAgBV;AATL,OAAb;;AAYA,WAAKxB,iBAAL,CAAuBpF,QAAvB,EAAiCL,MAAjC,EAAyC,EAAzC,EAA6C,UAAUhB,GAAV,EAAe+D,YAAf,EAA6B;AACxE,YAAI/D,GAAJ,EAAS;AACP,iBAAOJ,GAAGI,GAAH,CAAP;AACD;;AAEDgB,eAAO+C,YAAP,GAAsBA,YAAtB;AACA,eAAOnE,GAAG,IAAH,EAASoB,MAAT,CAAP;AACD,OAPD;AAQD;;;8BAEU4H,S,EAAW;AACpB,UAAIhF,CAAJ;AACA,UAAIiF,OAAO,EAAX;AACA,UAAIC,QAAQ,EAAZ;AACA,UAAIC,SAAS,EAAb;AACA,UAAIlH,MAAM,EAAV;AACA,UAAImH,MAAM,EAAV;AACA,UAAIC,MAAM,CAAV;;AAEA,WAAKrF,CAAL,IAAUgF,SAAV,EAAqB;AACnB,YAAI,EAAEE,QAAQF,UAAUhF,CAAV,EAAakF,KAAb,CAAmB,uCAAnB,CAAV,CAAJ,EAA4E;AAC1E;AACD;AACDjH,cAAMiH,MAAM,CAAN,CAAN;AACAE,cAAMF,MAAM,CAAN,CAAN;;AAEA,YAAKC,SAASlH,IAAIiH,KAAJ,CAAU,iBAAV,CAAd,EAA6C;AAC3C;AACAjH,gBAAMkH,OAAO,CAAP,CAAN;AACAE,gBAAMF,OAAO,CAAP,IAAY,CAAlB;AACD,SAJD,MAIO;AACLE,gBAAM,CAAN;AACD;;AAED,YAAI,CAACJ,KAAKhH,GAAL,CAAL,EAAgB;AACdgH,eAAKhH,GAAL,IAAY,EAAZ;AACD;AACD,YAAI,CAACgH,KAAKhH,GAAL,EAAUoH,GAAV,CAAL,EAAqB;AACnBJ,eAAKhH,GAAL,EAAUoH,GAAV,IAAiB,EAAjB;AACD;AACDJ,aAAKhH,GAAL,EAAUoH,GAAV,EAAe9H,IAAf,CAAoB6H,GAApB;AACD;;AAED,aAAOH,IAAP;AACD;;;;;;AAGHpH,OAAOyH,OAAP,GAAiBlL,IAAjB","file":"util.js","sourcesContent":["var globby = require('globby')\nvar path = require('path')\nvar fs = require('fs')\nvar async = require('async')\nvar YAML = require('js-yaml')\nvar mkdirp = require('mkdirp')\nvar debug = require('depurar')('locutus')\nvar indentString = require('indent-string')\nvar _ = require('lodash')\nconst esprima = require('esprima')\n\nclass Util {\n constructor (argv) {\n if (!argv) {\n argv = []\n }\n this.__src = path.dirname(__dirname)\n this.__root = path.dirname(path.dirname(__dirname))\n this.__test = path.dirname(path.dirname(__dirname)) + '/test'\n\n this.globals = {}\n\n this.pattern = [this.__src + '/**/**/*.js', '!**/index.js', '!**/_util/**']\n this.concurrency = 8\n this.authorKeys = [\n 'original by',\n 'improved by',\n 'reimplemented by',\n 'parts by',\n 'bugfixed by',\n 'revised by',\n 'input by'\n ]\n\n this.langDefaults = {\n c: {\n order: 1,\n function_title_template: '[language]\\'s [category].[function] in JavaScript',\n human: 'C',\n packageType: 'header file',\n inspiration_urls: [\n '<a href=\"http://en.cppreference.com/w/c/numeric/math\">the C math.h documentation</a>',\n '<a href=\"https://sourceware.org/git/?p=glibc.git;a=tree;f=math;hb=HEAD\">the C math.h source</a>'\n ],\n function_description_template: 'Here’s what our current JavaScript equivalent to <a href=\"http://en.cppreference.com/w/c/numeric/[category]/[function]\">[language]\\'s [function] found in the [category].h header file</a> looks like.'\n },\n golang: {\n order: 2,\n function_title_template: '[language]\\'s [category].[function] in JavaScript',\n human: 'Go',\n packageType: 'package',\n inspiration_urls: [\n '<a href=\"https://golang.org/pkg/strings/\">Go strings documentation</a>',\n '<a href=\"https://golang.org/src/strings/strings.go\">Go strings source</a>',\n '<a href=\"https://golang.org/src/strings/example_test.go\">Go strings examples source</a>',\n '<a href=\"http://gophersjs.com\">GopherJS</a>'\n ],\n function_description_template: 'Here’s what our current JavaScript equivalent to <a href=\"https://golang.org/pkg/[category]/#[function]\">[language]\\'s [category].[function]</a> looks like.'\n },\n python: {\n order: 3,\n function_title_template: '[language]\\'s [category].[function] in JavaScript',\n human: 'Python',\n packageType: 'module',\n inspiration_urls: [\n '<a href=\"https://docs.python.org/3/library/string.html\">the Python 3 standard library string page</a>'\n ],\n function_description_template: 'Here’s what our current JavaScript equivalent to <a href=\"https://docs.python.org/3/library/[category].html#[category].[function]\">[language]\\'s [category].[function]</a> looks like.'\n },\n ruby: {\n order: 4,\n function_title_template: '[language]\\'s [category].[function] in JavaScript',\n human: 'Ruby',\n packageType: 'module',\n inspiration_urls: [\n '<a href=\"http://ruby-doc.org/core-2.2.2/Math.html\">the Ruby core documentation</a>'\n ],\n function_description_template: 'Here’s what our current JavaScript equivalent to <a href=\"http://ruby-doc.org/core-2.2.2/[category].html#method-c-[function]\">[language]\\'s [category].[function]</a> looks like.'\n },\n php: {\n order: 5,\n function_title_template: '[language]\\'s [function] in JavaScript',\n human: 'PHP',\n packageType: 'extension',\n inspiration_urls: [\n '<a href=\"http://php.net/manual/en/book.strings.php\">the PHP string documentation</a>',\n '<a href=\"https://github.com/php/php-src/blob/master/ext/standard/string.c#L5338\">the PHP string source</a>',\n '<a href=\"https://github.com/php/php-src/blob/master/ext/standard/tests/strings/str_pad_variation1.phpt\">a PHP str_pad test</a>'\n ],\n function_description_template: 'Here’s what our current JavaScript equivalent to <a href=\"http://php.net/manual/en/function.[functiondashed].php\">[language]\\'s [function]</a> looks like.',\n alias: [\n '/categories/',\n '/categories/array/',\n '/categories/bc/',\n '/categories/ctype/',\n '/categories/datetime/',\n '/categories/exec/',\n '/categories/filesystem/',\n '/categories/funchand/',\n '/categories/i18n/',\n '/categories/index/',\n '/categories/info/',\n '/categories/json/',\n '/categories/math/',\n '/categories/misc/',\n '/categories/net/',\n '/categories/network/',\n '/categories/pcre/',\n '/categories/strings/',\n '/categories/url/',\n '/categories/var/',\n '/categories/xdiff/',\n '/categories/xml/',\n '/functions/index/',\n '/functions/',\n '/packages/',\n '/packages/index/'\n ]\n }\n }\n\n this.allowSkip = (argv.indexOf('--noskip') === -1)\n\n this._reindexBuffer = {}\n this._injectwebBuffer = {}\n }\n\n injectweb (cb) {\n var self = this\n this._runFunctionOnAll(this._injectwebOne, function (err) {\n if (err) {\n return cb(err)\n }\n for (var indexHtml in self._injectwebBuffer) {\n debug('writing: ' + indexHtml)\n fs.writeFileSync(indexHtml, self._injectwebBuffer[indexHtml], 'utf-8')\n }\n })\n }\n\n reindex (cb) {\n var self = this\n self._reindexBuffer = {}\n self._runFunctionOnAll(self._reindexOne, function (err) {\n if (err) {\n return cb(err)\n }\n for (var indexJs in self._reindexBuffer) {\n var requires = self._reindexBuffer[indexJs]\n requires.sort()\n debug('writing: ' + indexJs)\n fs.writeFileSync(indexJs, requires.join('\\n') + '\\n', 'utf-8')\n }\n })\n }\n\n writetests (cb) {\n this._runFunctionOnAll(this._writetestOne, cb)\n }\n\n _runFunctionOnAll (runFunc, cb) {\n var self = this\n\n var q = async.queue(function (fullpath, callback) {\n self._load.bind(self, fullpath, {}, function (err, params) {\n if (err) {\n return callback(err)\n }\n\n runFunc.bind(self, params, callback)()\n })()\n }, self.concurrency)\n\n debug({\n pattern: self.pattern\n })\n var files = globby.sync(self.pattern)\n\n q.push(files)\n\n q.drain = cb\n }\n\n _reindexOne (params, cb) {\n var fullpath = this.__src + '/' + params.filepath\n var dir = path.dirname(fullpath)\n var basefile = path.basename(fullpath, '.js')\n var indexJs = dir + '/index.js'\n\n var module = basefile\n if (basefile === 'Index2') {\n module = 'Index'\n }\n\n if (!this._reindexBuffer[indexJs]) {\n this._reindexBuffer[indexJs] = []\n }\n\n var line = 'module.exports[\\'' + module + '\\'] = require(\\'./' + basefile + '\\')'\n this._reindexBuffer[indexJs].push(line)\n return cb(null)\n }\n\n _injectwebOne (params, cb) {\n var authors = {}\n this.authorKeys.forEach(function (key) {\n if (params.headKeys[key]) {\n authors[key] = _.flattenDeep(params.headKeys[key])\n }\n })\n\n var langPath = [\n this.__root,\n '/website/source/',\n params.language\n ].join('')\n\n var langIndexPath = langPath + '/index.html'\n var catPath = langPath + '/' + params.category\n var catIndexPath = catPath + '/' + 'index.html'\n var funcPath = catPath + '/' + params.func_name + '.html'\n\n if (!this._injectwebBuffer[langIndexPath]) {\n var langTitle = ''\n langTitle += this.langDefaults[params.language].human + ' '\n langTitle += this.langDefaults[params.language].packageType + 's '\n langTitle += ' in JavaScript'\n\n var langData = Object.assign({}, this.langDefaults[params.language], {\n warning: 'This file is auto generated by `npm run web:inject`, do not edit by hand',\n type: 'language',\n layout: 'language',\n language: params.language,\n title: langTitle\n })\n this._injectwebBuffer[langIndexPath] = '---' + '\\n' + YAML.safeDump(langData).trim() + '\\n' + '---' + '\\n'\n }\n\n if (!this._injectwebBuffer[catIndexPath]) {\n var catTitle = ''\n catTitle += this.langDefaults[params.language].human + '\\'s '\n catTitle += params.category + ' '\n catTitle += this.langDefaults[params.language].packageType + ' '\n catTitle += ' in JavaScript'\n\n var catData = {\n warning: 'This file is auto generated by `npm run web:inject`, do not edit by hand',\n type: 'category',\n layout: 'category',\n language: params.language,\n category: params.category,\n title: catTitle\n }\n this._injectwebBuffer[catIndexPath] = '---' + '\\n' + YAML.safeDump(catData).trim() + '\\n' + '---' + '\\n'\n }\n\n var functionTitle = this.langDefaults[params.language].function_title_template\n .replace(/\\[language]/g, this.langDefaults[params.language].human)\n .replace(/\\[category]/g, params.category)\n .replace(/\\[function]/g, params.func_name)\n .replace(/\\[functiondashed]/g, params.func_name.replace(/_/g, '-'))\n\n var functionDescription = this.langDefaults[params.language].function_description_template\n .replace(/\\[language]/g, this.langDefaults[params.language].human)\n .replace(/\\[category]/g, params.category)\n .replace(/\\[function]/g, params.func_name)\n .replace(/\\[functiondashed]/g, params.func_name.replace(/_/g, '-'))\n\n var funcData = {\n warning: 'This file is auto generated by `npm run web:inject`, do not edit by hand',\n examples: (params.headKeys.example || []).map(function (lines, i) {\n return lines.join('\\n')\n }),\n estarget: (params.headKeys.estarget || []).map(function (lines, i) {\n return lines.join('\\n')\n }).join('\\n').trim() || 'es5',\n returns: (params.headKeys.returns || []).map(function (lines, i) {\n return lines.join('\\n')\n }),\n dependencies: [],\n authors: authors || {},\n notes: (params.headKeys.note || []).map(function (lines, i) {\n return lines.join('\\n')\n }),\n type: 'function',\n layout: 'function',\n title: functionTitle,\n description: functionDescription,\n function: params.func_name,\n category: params.category,\n language: params.language,\n permalink: params.language + '/' + params.category + '/' + params.func_name + '/',\n alias: [\n '/functions/' + params.language + '/' + params.func_name + '/',\n '/functions/' + params.category + '/' + params.func_name + '/',\n '/' + params.language + '/' + params.func_name + '/'\n ]\n }\n\n if (params.language === 'php') {\n funcData.alias.push('/functions/' + params.func_name + '/')\n }\n\n var buf = '---' + '\\n' + YAML.safeDump(funcData).trim() + '\\n' + '---' + '\\n'\n\n buf += `{% codeblock lang:javascript %}${params.code}{% endcodeblock %}`\n\n mkdirp(path.dirname(funcPath), function (err) {\n if (err) {\n throw new Error('Could not mkdir for ' + funcPath + '. ' + err)\n }\n fs.writeFile(funcPath, buf, 'utf-8', cb)\n })\n }\n\n _addRequire (name, relativeSrcForTest) {\n return [\n 'var ',\n name,\n ' = require(\\'',\n relativeSrcForTest,\n '\\') // eslint-disable-line no-unused-vars,camelcase'\n ].join('')\n }\n\n _writetestOne (params, cb) {\n var self = this\n\n if (!params.func_name) {\n throw new Error('No func_name in ' + JSON.stringify(params))\n }\n if (!params.headKeys) {\n throw new Error('No headKeys in ' + params.func_name)\n }\n if (!params.headKeys.example) {\n throw new Error('No example in ' + params.func_name)\n }\n\n var basename = path.basename(params.filepath)\n var subdir = path.dirname(params.filepath)\n var testpath = this.__test + '/languages/' + subdir + '/test-' + basename\n var testdir = path.dirname(testpath)\n var relativeSrcForTestDir = path.relative(testdir, self.__src)\n var relativeTestFileForRoot = path.relative(self.__root, testpath)\n\n // console.log(relativeSrcForTestDir)\n // process.exit(1)\n\n var testProps = ''\n if (params.headKeys.test) {\n testProps = params.headKeys.test[0][0]\n }\n\n var describeSkip = ''\n if (self.allowSkip && testProps.indexOf('skip-all') !== -1) {\n describeSkip = '.skip'\n }\n\n var codez = []\n\n codez.push('// warning: This file is auto generated by `npm run build:tests`')\n codez.push('// Do not edit by hand!')\n\n // Add globals\n for (var global in self.globals) {\n codez.push('var ' + global + ' = ' + self.globals[global])\n }\n\n // Set timezone for testing dates\n // Not ideal: http://stackoverflow.com/questions/8083410/how-to-set-default-timezone-in-node-js\n codez.push('process.env.TZ = \\'UTC\\'')\n\n codez.push('var ' + 'expect' + ' = require(\\'chai\\').expect')\n\n // Add language-wide dependencies\n // @todo: It would be great if we could remove this\n if (params.language === 'php') {\n codez.push(self._addRequire('ini_set', relativeSrcForTestDir + '/' + 'php/info/ini_set'))\n codez.push(self._addRequire('ini_get', relativeSrcForTestDir + '/' + 'php/info/ini_get'))\n if (params.func_name === 'localeconv') {\n codez.push(self._addRequire(\n 'setlocale',\n relativeSrcForTestDir + '/' + 'php/strings/setlocale'\n ))\n }\n if (params.func_name === 'i18n_loc_get_default') {\n codez.push(self._addRequire(\n 'i18n_loc_set_default',\n relativeSrcForTestDir + '/' + 'php/i18n/i18n_loc_set_default'\n ))\n }\n }\n\n // Add the main function to test\n codez.push(self._addRequire(\n params.func_name,\n relativeSrcForTestDir + '/' + params.filepath\n ))\n\n codez.push('')\n\n codez.push([\n 'describe',\n describeSkip,\n '(\\'src/',\n params.filepath,\n ' (tested in ',\n relativeTestFileForRoot,\n ')\\', function () {'\n ].join(''))\n\n // Run each example\n for (var i in params.headKeys.example) {\n if (!params.headKeys.returns[i] || !params.headKeys.returns[i].length) {\n throw new Error('There is no return for example ' + i, test, params)\n }\n\n var humanIndex = parseInt(i, 10) + 1\n var itSkip = ''\n if (self.allowSkip && testProps.indexOf('skip-' + humanIndex) !== -1) {\n itSkip = '.skip'\n }\n\n codez.push([\n ' it',\n itSkip,\n '(\\'should pass example ',\n (humanIndex),\n '\\', function (done) {'\n ].join(''))\n\n var body = []\n\n var testExpected = params.headKeys.returns[i].join('\\n')\n\n body.push('var expected = ' + testExpected)\n\n // Execute line by line (see date.js why)\n // We need result be the last result of the example code\n for (var j in params.headKeys.example[i]) {\n if (parseInt(j, 10) === params.headKeys.example[i].length - 1) {\n // last action gets saved\n body.push('var result = ' + params.headKeys.example[i][j].replace('var $result = ', ''))\n } else {\n body.push(params.headKeys.example[i][j])\n }\n }\n\n body.push('expect(result).to.deep.equal(expected)')\n body.push('done()')\n\n codez.push(indentString(body.join('\\n'), ' ', 4))\n\n codez.push(' })')\n }\n\n codez.push('})')\n codez.push('')\n\n var code = codez.join('\\n')\n\n // Write to disk\n mkdirp(testdir, function (err) {\n if (err) {\n throw new Error(err)\n }\n debug('writing: ' + testpath)\n fs.writeFile(testpath, code, 'utf-8', cb)\n })\n }\n\n // Environment-specific file opener. function name needs to\n // be translated to code. The difficulty is in finding the\n // category.\n _opener (fileOrName, requesterParams, cb) {\n var self = this\n var pattern\n\n var language = requesterParams.language || '*'\n\n if (path.basename(fileOrName, '.js').indexOf('.') !== -1) {\n // periods in the basename, like: unicode.utf8.RuneCountInString or strings.sprintf\n pattern = self.__src + '/' + language + '/' + fileOrName.replace(/\\./g, '/') + '.js'\n } else if (fileOrName.indexOf('/') === -1) {\n // no slashes, like: sprintf\n pattern = self.__src + '/' + language + '/*/' + fileOrName + '.js'\n } else if (fileOrName.substr(0, 1) === '/') {\n // absolute path, like: /Users/john/code/locutus/php/strings/sprintf.js\n pattern = fileOrName\n } else {\n // relative path, like: php/strings/sprintf.js\n pattern = self.__src + '/' + fileOrName\n }\n\n pattern = pattern.replace('golang/strings/Index.js', 'golang/strings/Index2.js')\n debug('loading: ' + pattern)\n var files = globby.sync(pattern, {})\n\n if (files.length !== 1) {\n var msg = `Found ${files.length} occurances of ${fileOrName} via pattern: ${pattern}`\n return cb(new Error(msg))\n }\n\n var filepath = files[0]\n\n if (path.basename(filepath) === 'index.js') {\n return cb(null)\n }\n\n if (!filepath) {\n return cb(new Error('Could not find ' + pattern))\n }\n\n fs.readFile(filepath, 'utf-8', function (err, code) {\n if (err) {\n return cb(new Error('Error while opening ' + filepath + '. ' + err))\n }\n return cb(null, filepath, code)\n })\n }\n\n _load (fileOrName, requesterParams, cb) {\n var self = this\n self._opener(fileOrName, requesterParams, function (err, fullpath, code) {\n if (err) {\n return cb(err)\n }\n\n var filepath = path.relative(self.__src, fullpath)\n self._parse(filepath, code, cb)\n })\n }\n\n _findDependencies (fileOrName, requesterParams, dependencies, cb) {\n var self = this\n\n if (!requesterParams.headKeys['depends on'] || !requesterParams.headKeys['depends on'].length) {\n if (cb) {\n cb(null, {})\n }\n return\n }\n\n var i\n var depCodePath\n var loaded = 0\n for (i in requesterParams.headKeys['depends on']) {\n depCodePath = requesterParams.headKeys['depends on'][i][0]\n\n self._load(depCodePath, requesterParams, function (err, params) {\n if (err) {\n return cb(err)\n }\n\n dependencies[depCodePath] = params\n self._findDependencies(depCodePath, params, dependencies)\n\n if (cb && ++loaded === requesterParams.headKeys['depends on'].length) {\n cb(null, dependencies)\n }\n })\n }\n }\n\n _parse (filepath, code, cb) {\n if (!code) {\n return cb(new Error('Unable to parse ' + filepath + '. Received no code'))\n }\n\n if (filepath.indexOf('/') === -1) {\n return cb(new Error('Parse only accepts relative filepaths. Received: \\'' + filepath + '\\''))\n }\n\n var parts = filepath.split('/')\n var language = parts.shift()\n var codepath = parts.join('.')\n var name = parts.pop()\n var category = parts.join('.')\n\n var ast = esprima.parseScript(code, { comment: true, loc: true, range: true })\n\n // find module.exports in the code\n var moduleExports = ast.body.filter(node => {\n try {\n var leftArg = node.expression.left\n var rightArg = node.expression.right\n\n return leftArg.object.name === 'module' &&\n leftArg.property.name === 'exports' &&\n rightArg.type === 'FunctionExpression' &&\n rightArg.id.type === 'Identifier' &&\n !!rightArg.id.name\n } catch (err) {\n return false\n }\n })\n\n // if file contains more than one export, fail\n if (moduleExports.length !== 1) {\n return cb(Error(`File ${filepath} is allowed to contain exactly one module.exports`))\n }\n\n // get the only export\n var exp = moduleExports[0]\n\n // look for function name and param list\n var funcName = exp.expression.right.id.name\n var funcParams = exp.expression.right.params.map(p => p.name)\n\n // remember the lines where the function is defined\n var funcLoc = exp.expression.right.loc\n\n // since comments are not included in the AST\n // but are offered in ast.comments\n // remember the location of first function body statement/expression\n var firstFuncBodyElementLoc = exp.expression.right.body.body[0].loc\n\n // get all line comments which are located between function signature definition\n // and first function body element\n var headComments = ast.comments.filter(c =>\n c.type === 'Line' &&\n c.loc.start.line >= funcLoc.start.line &&\n c.loc.end.line <= firstFuncBodyElementLoc.start.line).map(c => c.value.trim())\n\n if (headComments.length === 0) {\n var msg = `Unable to parse ${filepath}. Did not find any comments in function definition`\n return cb(new Error(msg))\n }\n\n var headKeys = this._headKeys(headComments)\n\n var params = {\n headKeys: headKeys,\n name: name,\n filepath: filepath,\n codepath: codepath,\n // code: code,\n language: language,\n category: category,\n func_name: funcName,\n func_arguments: funcParams\n }\n\n this._findDependencies(filepath, params, {}, function (err, dependencies) {\n if (err) {\n return cb(err)\n }\n\n params.dependencies = dependencies\n return cb(null, params)\n })\n }\n\n _headKeys (headLines) {\n var i\n var keys = {}\n var match = []\n var dmatch = []\n var key = ''\n var val = ''\n var num = 0\n\n for (i in headLines) {\n if (!(match = headLines[i].match(/^\\s*\\W?\\s*([a-z 0-9]+)\\s*:\\s*(.*)\\s*$/))) {\n continue\n }\n key = match[1]\n val = match[2]\n\n if ((dmatch = key.match(/^(\\w+)\\s+(\\d+)$/))) {\n // Things like examples and notes can be grouped\n key = dmatch[1]\n num = dmatch[2] - 1\n } else {\n num = 0\n }\n\n if (!keys[key]) {\n keys[key] = []\n }\n if (!keys[key][num]) {\n keys[key][num] = []\n }\n keys[key][num].push(val)\n }\n\n return keys\n }\n}\n\nmodule.exports = Util\n"]}
\ No newline at end of file |