locutus 2.0.16 → 2.0.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (520) hide show
  1. package/_util/util.js +13 -13
  2. package/_util/util.js.map +1 -1
  3. package/c/math/abs.js.map +1 -1
  4. package/c/math/frexp.js.map +1 -1
  5. package/c/stdio/sprintf.js +1 -1
  6. package/c/stdio/sprintf.js.map +1 -1
  7. package/golang/strings/Contains.js.map +1 -1
  8. package/golang/strings/Count.js.map +1 -1
  9. package/golang/strings/Index2.js.map +1 -1
  10. package/golang/strings/LastIndex.js.map +1 -1
  11. package/package.json +62 -59
  12. package/php/_helpers/_bc.js +2 -3
  13. package/php/_helpers/_bc.js.map +1 -1
  14. package/php/_helpers/_phpCastString.js.map +1 -1
  15. package/php/_helpers/_php_cast_float.js +0 -1
  16. package/php/_helpers/_php_cast_float.js.map +1 -1
  17. package/php/_helpers/_php_cast_int.js +0 -1
  18. package/php/_helpers/_php_cast_int.js.map +1 -1
  19. package/php/array/array_change_key_case.js +0 -1
  20. package/php/array/array_change_key_case.js.map +1 -1
  21. package/php/array/array_chunk.js +6 -5
  22. package/php/array/array_chunk.js.map +1 -1
  23. package/php/array/array_column.js +1 -1
  24. package/php/array/array_column.js.map +1 -1
  25. package/php/array/array_combine.js +0 -1
  26. package/php/array/array_combine.js.map +1 -1
  27. package/php/array/array_count_values.js +0 -1
  28. package/php/array/array_count_values.js.map +1 -1
  29. package/php/array/array_diff.js +0 -2
  30. package/php/array/array_diff.js.map +1 -1
  31. package/php/array/array_diff_assoc.js +0 -2
  32. package/php/array/array_diff_assoc.js.map +1 -1
  33. package/php/array/array_diff_key.js +0 -2
  34. package/php/array/array_diff_key.js.map +1 -1
  35. package/php/array/array_diff_uassoc.js +0 -2
  36. package/php/array/array_diff_uassoc.js.map +1 -1
  37. package/php/array/array_diff_ukey.js +0 -2
  38. package/php/array/array_diff_ukey.js.map +1 -1
  39. package/php/array/array_fill.js +0 -1
  40. package/php/array/array_fill.js.map +1 -1
  41. package/php/array/array_fill_keys.js +0 -1
  42. package/php/array/array_fill_keys.js.map +1 -1
  43. package/php/array/array_filter.js +0 -1
  44. package/php/array/array_filter.js.map +1 -1
  45. package/php/array/array_flip.js +0 -1
  46. package/php/array/array_flip.js.map +1 -1
  47. package/php/array/array_intersect.js +0 -3
  48. package/php/array/array_intersect.js.map +1 -1
  49. package/php/array/array_intersect_assoc.js +0 -3
  50. package/php/array/array_intersect_assoc.js.map +1 -1
  51. package/php/array/array_intersect_key.js +0 -3
  52. package/php/array/array_intersect_key.js.map +1 -1
  53. package/php/array/array_intersect_uassoc.js +0 -3
  54. package/php/array/array_intersect_uassoc.js.map +1 -1
  55. package/php/array/array_intersect_ukey.js +0 -3
  56. package/php/array/array_intersect_ukey.js.map +1 -1
  57. package/php/array/array_key_exists.js +0 -1
  58. package/php/array/array_key_exists.js.map +1 -1
  59. package/php/array/array_keys.js +0 -1
  60. package/php/array/array_keys.js.map +1 -1
  61. package/php/array/array_map.js +0 -1
  62. package/php/array/array_map.js.map +1 -1
  63. package/php/array/array_merge.js +0 -1
  64. package/php/array/array_merge.js.map +1 -1
  65. package/php/array/array_merge_recursive.js +0 -1
  66. package/php/array/array_merge_recursive.js.map +1 -1
  67. package/php/array/array_multisort.js +0 -1
  68. package/php/array/array_multisort.js.map +1 -1
  69. package/php/array/array_pad.js +0 -1
  70. package/php/array/array_pad.js.map +1 -1
  71. package/php/array/array_pop.js +0 -1
  72. package/php/array/array_pop.js.map +1 -1
  73. package/php/array/array_product.js +0 -1
  74. package/php/array/array_product.js.map +1 -1
  75. package/php/array/array_push.js +0 -1
  76. package/php/array/array_push.js.map +1 -1
  77. package/php/array/array_rand.js +0 -1
  78. package/php/array/array_rand.js.map +1 -1
  79. package/php/array/array_reduce.js +0 -1
  80. package/php/array/array_reduce.js.map +1 -1
  81. package/php/array/array_replace.js +0 -1
  82. package/php/array/array_replace.js.map +1 -1
  83. package/php/array/array_replace_recursive.js +0 -1
  84. package/php/array/array_replace_recursive.js.map +1 -1
  85. package/php/array/array_reverse.js +0 -1
  86. package/php/array/array_reverse.js.map +1 -1
  87. package/php/array/array_search.js +1 -2
  88. package/php/array/array_search.js.map +1 -1
  89. package/php/array/array_shift.js +0 -1
  90. package/php/array/array_shift.js.map +1 -1
  91. package/php/array/array_slice.js +2 -2
  92. package/php/array/array_slice.js.map +1 -1
  93. package/php/array/array_splice.js +0 -1
  94. package/php/array/array_splice.js.map +1 -1
  95. package/php/array/array_sum.js +0 -1
  96. package/php/array/array_sum.js.map +1 -1
  97. package/php/array/array_udiff.js +0 -3
  98. package/php/array/array_udiff.js.map +1 -1
  99. package/php/array/array_udiff_assoc.js +0 -2
  100. package/php/array/array_udiff_assoc.js.map +1 -1
  101. package/php/array/array_udiff_uassoc.js +0 -2
  102. package/php/array/array_udiff_uassoc.js.map +1 -1
  103. package/php/array/array_uintersect.js +0 -3
  104. package/php/array/array_uintersect.js.map +1 -1
  105. package/php/array/array_uintersect_uassoc.js +0 -3
  106. package/php/array/array_uintersect_uassoc.js.map +1 -1
  107. package/php/array/array_unique.js +0 -1
  108. package/php/array/array_unique.js.map +1 -1
  109. package/php/array/array_unshift.js +0 -1
  110. package/php/array/array_unshift.js.map +1 -1
  111. package/php/array/array_values.js +0 -1
  112. package/php/array/array_values.js.map +1 -1
  113. package/php/array/array_walk.js +0 -1
  114. package/php/array/array_walk.js.map +1 -1
  115. package/php/array/array_walk_recursive.js +0 -1
  116. package/php/array/array_walk_recursive.js.map +1 -1
  117. package/php/array/arsort.js.map +1 -1
  118. package/php/array/asort.js.map +1 -1
  119. package/php/array/count.js.map +1 -1
  120. package/php/array/current.js.map +1 -1
  121. package/php/array/each.js.map +1 -1
  122. package/php/array/end.js.map +1 -1
  123. package/php/array/in_array.js +1 -2
  124. package/php/array/in_array.js.map +1 -1
  125. package/php/array/key.js.map +1 -1
  126. package/php/array/krsort.js.map +1 -1
  127. package/php/array/ksort.js.map +1 -1
  128. package/php/array/natcasesort.js.map +1 -1
  129. package/php/array/natsort.js.map +1 -1
  130. package/php/array/next.js.map +1 -1
  131. package/php/array/pos.js.map +1 -1
  132. package/php/array/prev.js.map +1 -1
  133. package/php/array/range.js.map +1 -1
  134. package/php/array/reset.js.map +1 -1
  135. package/php/array/rsort.js.map +1 -1
  136. package/php/array/shuffle.js.map +1 -1
  137. package/php/array/sizeof.js.map +1 -1
  138. package/php/array/sort.js.map +1 -1
  139. package/php/array/uasort.js.map +1 -1
  140. package/php/array/uksort.js.map +1 -1
  141. package/php/array/usort.js.map +1 -1
  142. package/php/bc/bcadd.js.map +1 -1
  143. package/php/bc/bccomp.js.map +1 -1
  144. package/php/bc/bcdiv.js.map +1 -1
  145. package/php/bc/bcmul.js.map +1 -1
  146. package/php/bc/bcround.js.map +1 -1
  147. package/php/bc/bcscale.js.map +1 -1
  148. package/php/bc/bcsub.js.map +1 -1
  149. package/php/ctype/ctype_alnum.js +0 -1
  150. package/php/ctype/ctype_alnum.js.map +1 -1
  151. package/php/ctype/ctype_alpha.js +0 -1
  152. package/php/ctype/ctype_alpha.js.map +1 -1
  153. package/php/ctype/ctype_cntrl.js +0 -1
  154. package/php/ctype/ctype_cntrl.js.map +1 -1
  155. package/php/ctype/ctype_digit.js +0 -1
  156. package/php/ctype/ctype_digit.js.map +1 -1
  157. package/php/ctype/ctype_graph.js +0 -1
  158. package/php/ctype/ctype_graph.js.map +1 -1
  159. package/php/ctype/ctype_lower.js +0 -1
  160. package/php/ctype/ctype_lower.js.map +1 -1
  161. package/php/ctype/ctype_print.js +0 -1
  162. package/php/ctype/ctype_print.js.map +1 -1
  163. package/php/ctype/ctype_punct.js +0 -1
  164. package/php/ctype/ctype_punct.js.map +1 -1
  165. package/php/ctype/ctype_space.js +0 -1
  166. package/php/ctype/ctype_space.js.map +1 -1
  167. package/php/ctype/ctype_upper.js +0 -1
  168. package/php/ctype/ctype_upper.js.map +1 -1
  169. package/php/ctype/ctype_xdigit.js +0 -1
  170. package/php/ctype/ctype_xdigit.js.map +1 -1
  171. package/php/datetime/checkdate.js.map +1 -1
  172. package/php/datetime/date.js +1 -2
  173. package/php/datetime/date.js.map +1 -1
  174. package/php/datetime/date_parse.js +0 -1
  175. package/php/datetime/date_parse.js.map +1 -1
  176. package/php/datetime/getdate.js +1 -2
  177. package/php/datetime/getdate.js.map +1 -1
  178. package/php/datetime/gettimeofday.js.map +1 -1
  179. package/php/datetime/gmdate.js.map +1 -1
  180. package/php/datetime/gmmktime.js.map +1 -1
  181. package/php/datetime/gmstrftime.js.map +1 -1
  182. package/php/datetime/idate.js.map +1 -1
  183. package/php/datetime/microtime.js.map +1 -1
  184. package/php/datetime/mktime.js.map +1 -1
  185. package/php/datetime/strftime.js.map +1 -1
  186. package/php/datetime/strptime.js.map +1 -1
  187. package/php/datetime/strtotime.js +28 -14
  188. package/php/datetime/strtotime.js.map +1 -1
  189. package/php/datetime/time.js.map +1 -1
  190. package/php/exec/escapeshellarg.js +1 -1
  191. package/php/exec/escapeshellarg.js.map +1 -1
  192. package/php/filesystem/basename.js.map +1 -1
  193. package/php/filesystem/dirname.js.map +1 -1
  194. package/php/filesystem/file_get_contents.js +0 -1
  195. package/php/filesystem/file_get_contents.js.map +1 -1
  196. package/php/filesystem/pathinfo.js.map +1 -1
  197. package/php/filesystem/realpath.js.map +1 -1
  198. package/php/funchand/call_user_func.js +0 -1
  199. package/php/funchand/call_user_func.js.map +1 -1
  200. package/php/funchand/call_user_func_array.js +0 -1
  201. package/php/funchand/call_user_func_array.js.map +1 -1
  202. package/php/funchand/create_function.js +0 -1
  203. package/php/funchand/create_function.js.map +1 -1
  204. package/php/funchand/function_exists.js +0 -1
  205. package/php/funchand/function_exists.js.map +1 -1
  206. package/php/funchand/get_defined_functions.js +0 -1
  207. package/php/funchand/get_defined_functions.js.map +1 -1
  208. package/php/i18n/i18n_loc_get_default.js +0 -1
  209. package/php/i18n/i18n_loc_get_default.js.map +1 -1
  210. package/php/i18n/i18n_loc_set_default.js +0 -1
  211. package/php/i18n/i18n_loc_set_default.js.map +1 -1
  212. package/php/info/assert_options.js +0 -1
  213. package/php/info/assert_options.js.map +1 -1
  214. package/php/info/getenv.js.map +1 -1
  215. package/php/info/ini_get.js +0 -1
  216. package/php/info/ini_get.js.map +1 -1
  217. package/php/info/ini_set.js +0 -1
  218. package/php/info/ini_set.js.map +1 -1
  219. package/php/info/set_time_limit.js +0 -1
  220. package/php/info/set_time_limit.js.map +1 -1
  221. package/php/info/version_compare.js +0 -1
  222. package/php/info/version_compare.js.map +1 -1
  223. package/php/json/json_decode.js +0 -1
  224. package/php/json/json_decode.js.map +1 -1
  225. package/php/json/json_encode.js +0 -1
  226. package/php/json/json_encode.js.map +1 -1
  227. package/php/json/json_last_error.js +0 -1
  228. package/php/json/json_last_error.js.map +1 -1
  229. package/php/math/abs.js.map +1 -1
  230. package/php/math/acos.js.map +1 -1
  231. package/php/math/acosh.js.map +1 -1
  232. package/php/math/asin.js.map +1 -1
  233. package/php/math/asinh.js.map +1 -1
  234. package/php/math/atan.js.map +1 -1
  235. package/php/math/atan2.js.map +1 -1
  236. package/php/math/atanh.js.map +1 -1
  237. package/php/math/base_convert.js +0 -1
  238. package/php/math/base_convert.js.map +1 -1
  239. package/php/math/bindec.js.map +1 -1
  240. package/php/math/ceil.js.map +1 -1
  241. package/php/math/cos.js.map +1 -1
  242. package/php/math/cosh.js.map +1 -1
  243. package/php/math/decbin.js +1 -1
  244. package/php/math/decbin.js.map +1 -1
  245. package/php/math/dechex.js +1 -1
  246. package/php/math/dechex.js.map +1 -1
  247. package/php/math/decoct.js +1 -1
  248. package/php/math/decoct.js.map +1 -1
  249. package/php/math/deg2rad.js.map +1 -1
  250. package/php/math/exp.js.map +1 -1
  251. package/php/math/expm1.js.map +1 -1
  252. package/php/math/floor.js.map +1 -1
  253. package/php/math/fmod.js.map +1 -1
  254. package/php/math/getrandmax.js.map +1 -1
  255. package/php/math/hexdec.js.map +1 -1
  256. package/php/math/hypot.js.map +1 -1
  257. package/php/math/is_finite.js +0 -1
  258. package/php/math/is_finite.js.map +1 -1
  259. package/php/math/is_infinite.js +0 -1
  260. package/php/math/is_infinite.js.map +1 -1
  261. package/php/math/is_nan.js +0 -1
  262. package/php/math/is_nan.js.map +1 -1
  263. package/php/math/lcg_value.js +0 -1
  264. package/php/math/lcg_value.js.map +1 -1
  265. package/php/math/log.js.map +1 -1
  266. package/php/math/log10.js.map +1 -1
  267. package/php/math/log1p.js.map +1 -1
  268. package/php/math/max.js.map +1 -1
  269. package/php/math/min.js.map +1 -1
  270. package/php/math/mt_getrandmax.js +0 -1
  271. package/php/math/mt_getrandmax.js.map +1 -1
  272. package/php/math/mt_rand.js +0 -1
  273. package/php/math/mt_rand.js.map +1 -1
  274. package/php/math/octdec.js.map +1 -1
  275. package/php/math/pi.js.map +1 -1
  276. package/php/math/pow.js.map +1 -1
  277. package/php/math/rad2deg.js.map +1 -1
  278. package/php/math/rand.js.map +1 -1
  279. package/php/math/round.js.map +1 -1
  280. package/php/math/sin.js.map +1 -1
  281. package/php/math/sinh.js.map +1 -1
  282. package/php/math/sqrt.js.map +1 -1
  283. package/php/math/tan.js.map +1 -1
  284. package/php/math/tanh.js.map +1 -1
  285. package/php/misc/pack.js +15 -15
  286. package/php/misc/pack.js.map +1 -1
  287. package/php/misc/uniqid.js.map +1 -1
  288. package/php/net-gopher/gopher_parsedir.js +0 -1
  289. package/php/net-gopher/gopher_parsedir.js.map +1 -1
  290. package/php/network/inet_ntop.js +0 -1
  291. package/php/network/inet_ntop.js.map +1 -1
  292. package/php/network/inet_pton.js +1 -2
  293. package/php/network/inet_pton.js.map +1 -1
  294. package/php/network/ip2long.js.map +1 -1
  295. package/php/network/long2ip.js +1 -1
  296. package/php/network/long2ip.js.map +1 -1
  297. package/php/network/setcookie.js.map +1 -1
  298. package/php/network/setrawcookie.js.map +1 -1
  299. package/php/pcre/preg_match.js +0 -1
  300. package/php/pcre/preg_match.js.map +1 -1
  301. package/php/pcre/preg_quote.js +0 -1
  302. package/php/pcre/preg_quote.js.map +1 -1
  303. package/php/pcre/preg_replace.js +0 -1
  304. package/php/pcre/preg_replace.js.map +1 -1
  305. package/php/pcre/sql_regcase.js +0 -1
  306. package/php/pcre/sql_regcase.js.map +1 -1
  307. package/php/strings/addcslashes.js.map +1 -1
  308. package/php/strings/addslashes.js.map +1 -1
  309. package/php/strings/bin2hex.js.map +1 -1
  310. package/php/strings/chop.js.map +1 -1
  311. package/php/strings/chr.js +2 -2
  312. package/php/strings/chr.js.map +1 -1
  313. package/php/strings/chunk_split.js +0 -1
  314. package/php/strings/chunk_split.js.map +1 -1
  315. package/php/strings/convert_cyr_string.js +0 -1
  316. package/php/strings/convert_cyr_string.js.map +1 -1
  317. package/php/strings/convert_uuencode.js +0 -1
  318. package/php/strings/convert_uuencode.js.map +1 -1
  319. package/php/strings/count_chars.js +0 -1
  320. package/php/strings/count_chars.js.map +1 -1
  321. package/php/strings/crc32.js +1 -1
  322. package/php/strings/crc32.js.map +1 -1
  323. package/php/strings/echo.js.map +1 -1
  324. package/php/strings/explode.js.map +1 -1
  325. package/php/strings/get_html_translation_table.js +0 -1
  326. package/php/strings/get_html_translation_table.js.map +1 -1
  327. package/php/strings/hex2bin.js.map +1 -1
  328. package/php/strings/html_entity_decode.js +0 -1
  329. package/php/strings/html_entity_decode.js.map +1 -1
  330. package/php/strings/htmlentities.js.map +1 -1
  331. package/php/strings/htmlspecialchars.js.map +1 -1
  332. package/php/strings/htmlspecialchars_decode.js +0 -1
  333. package/php/strings/htmlspecialchars_decode.js.map +1 -1
  334. package/php/strings/implode.js.map +1 -1
  335. package/php/strings/join.js.map +1 -1
  336. package/php/strings/lcfirst.js.map +1 -1
  337. package/php/strings/levenshtein.js.map +1 -1
  338. package/php/strings/localeconv.js.map +1 -1
  339. package/php/strings/ltrim.js.map +1 -1
  340. package/php/strings/md5.js +67 -67
  341. package/php/strings/md5.js.map +1 -1
  342. package/php/strings/md5_file.js +0 -1
  343. package/php/strings/md5_file.js.map +1 -1
  344. package/php/strings/metaphone.js +1 -1
  345. package/php/strings/metaphone.js.map +1 -1
  346. package/php/strings/money_format.js +0 -1
  347. package/php/strings/money_format.js.map +1 -1
  348. package/php/strings/nl2br.js.map +1 -1
  349. package/php/strings/nl_langinfo.js +0 -1
  350. package/php/strings/nl_langinfo.js.map +1 -1
  351. package/php/strings/number_format.js +0 -1
  352. package/php/strings/number_format.js.map +1 -1
  353. package/php/strings/ord.js +3 -3
  354. package/php/strings/ord.js.map +1 -1
  355. package/php/strings/parse_str.js +0 -1
  356. package/php/strings/parse_str.js.map +1 -1
  357. package/php/strings/printf.js.map +1 -1
  358. package/php/strings/quoted_printable_decode.js +0 -1
  359. package/php/strings/quoted_printable_decode.js.map +1 -1
  360. package/php/strings/quoted_printable_encode.js +0 -1
  361. package/php/strings/quoted_printable_encode.js.map +1 -1
  362. package/php/strings/quotemeta.js.map +1 -1
  363. package/php/strings/rtrim.js.map +1 -1
  364. package/php/strings/setlocale.js.map +1 -1
  365. package/php/strings/sha1.js +7 -7
  366. package/php/strings/sha1.js.map +1 -1
  367. package/php/strings/sha1_file.js +0 -1
  368. package/php/strings/sha1_file.js.map +1 -1
  369. package/php/strings/similar_text.js +1 -2
  370. package/php/strings/similar_text.js.map +1 -1
  371. package/php/strings/soundex.js.map +1 -1
  372. package/php/strings/split.js.map +1 -1
  373. package/php/strings/sprintf.js.map +1 -1
  374. package/php/strings/sscanf.js.map +1 -1
  375. package/php/strings/str_getcsv.js +0 -1
  376. package/php/strings/str_getcsv.js.map +1 -1
  377. package/php/strings/str_ireplace.js +0 -1
  378. package/php/strings/str_ireplace.js.map +1 -1
  379. package/php/strings/str_pad.js +0 -1
  380. package/php/strings/str_pad.js.map +1 -1
  381. package/php/strings/str_repeat.js +0 -1
  382. package/php/strings/str_repeat.js.map +1 -1
  383. package/php/strings/str_replace.js +0 -1
  384. package/php/strings/str_replace.js.map +1 -1
  385. package/php/strings/str_rot13.js +0 -1
  386. package/php/strings/str_rot13.js.map +1 -1
  387. package/php/strings/str_shuffle.js +0 -1
  388. package/php/strings/str_shuffle.js.map +1 -1
  389. package/php/strings/str_split.js +0 -1
  390. package/php/strings/str_split.js.map +1 -1
  391. package/php/strings/str_word_count.js +4 -5
  392. package/php/strings/str_word_count.js.map +1 -1
  393. package/php/strings/strcasecmp.js.map +1 -1
  394. package/php/strings/strchr.js.map +1 -1
  395. package/php/strings/strcmp.js.map +1 -1
  396. package/php/strings/strcoll.js.map +1 -1
  397. package/php/strings/strcspn.js.map +1 -1
  398. package/php/strings/strip_tags.js +0 -1
  399. package/php/strings/strip_tags.js.map +1 -1
  400. package/php/strings/stripos.js.map +1 -1
  401. package/php/strings/stripslashes.js.map +1 -1
  402. package/php/strings/stristr.js.map +1 -1
  403. package/php/strings/strlen.js +4 -4
  404. package/php/strings/strlen.js.map +1 -1
  405. package/php/strings/strnatcasecmp.js.map +1 -1
  406. package/php/strings/strnatcmp.js.map +1 -1
  407. package/php/strings/strncasecmp.js.map +1 -1
  408. package/php/strings/strncmp.js.map +1 -1
  409. package/php/strings/strpbrk.js.map +1 -1
  410. package/php/strings/strpos.js.map +1 -1
  411. package/php/strings/strrchr.js.map +1 -1
  412. package/php/strings/strrev.js.map +1 -1
  413. package/php/strings/strripos.js.map +1 -1
  414. package/php/strings/strrpos.js.map +1 -1
  415. package/php/strings/strspn.js.map +1 -1
  416. package/php/strings/strstr.js.map +1 -1
  417. package/php/strings/strtok.js.map +1 -1
  418. package/php/strings/strtolower.js.map +1 -1
  419. package/php/strings/strtoupper.js.map +1 -1
  420. package/php/strings/strtr.js.map +1 -1
  421. package/php/strings/substr.js.map +1 -1
  422. package/php/strings/substr_compare.js +0 -1
  423. package/php/strings/substr_compare.js.map +1 -1
  424. package/php/strings/substr_count.js +0 -1
  425. package/php/strings/substr_count.js.map +1 -1
  426. package/php/strings/substr_replace.js +0 -1
  427. package/php/strings/substr_replace.js.map +1 -1
  428. package/php/strings/trim.js.map +1 -1
  429. package/php/strings/ucfirst.js.map +1 -1
  430. package/php/strings/ucwords.js.map +1 -1
  431. package/php/strings/vprintf.js.map +1 -1
  432. package/php/strings/vsprintf.js.map +1 -1
  433. package/php/strings/wordwrap.js.map +1 -1
  434. package/php/url/base64_decode.js +0 -1
  435. package/php/url/base64_decode.js.map +1 -1
  436. package/php/url/base64_encode.js +0 -1
  437. package/php/url/base64_encode.js.map +1 -1
  438. package/php/url/http_build_query.js +0 -1
  439. package/php/url/http_build_query.js.map +1 -1
  440. package/php/url/parse_url.js +0 -1
  441. package/php/url/parse_url.js.map +1 -1
  442. package/php/url/rawurldecode.js.map +1 -1
  443. package/php/url/rawurlencode.js.map +1 -1
  444. package/php/url/urldecode.js.map +1 -1
  445. package/php/url/urlencode.js.map +1 -1
  446. package/php/var/boolval.js.map +1 -1
  447. package/php/var/doubleval.js.map +1 -1
  448. package/php/var/empty.js.map +1 -1
  449. package/php/var/floatval.js.map +1 -1
  450. package/php/var/gettype.js.map +1 -1
  451. package/php/var/intval.js.map +1 -1
  452. package/php/var/is_array.js +0 -1
  453. package/php/var/is_array.js.map +1 -1
  454. package/php/var/is_binary.js +0 -1
  455. package/php/var/is_binary.js.map +1 -1
  456. package/php/var/is_bool.js +0 -1
  457. package/php/var/is_bool.js.map +1 -1
  458. package/php/var/is_buffer.js +0 -1
  459. package/php/var/is_buffer.js.map +1 -1
  460. package/php/var/is_callable.js +1 -2
  461. package/php/var/is_callable.js.map +1 -1
  462. package/php/var/is_double.js +0 -1
  463. package/php/var/is_double.js.map +1 -1
  464. package/php/var/is_float.js +0 -1
  465. package/php/var/is_float.js.map +1 -1
  466. package/php/var/is_int.js +0 -1
  467. package/php/var/is_int.js.map +1 -1
  468. package/php/var/is_integer.js +0 -1
  469. package/php/var/is_integer.js.map +1 -1
  470. package/php/var/is_long.js +0 -1
  471. package/php/var/is_long.js.map +1 -1
  472. package/php/var/is_null.js +0 -1
  473. package/php/var/is_null.js.map +1 -1
  474. package/php/var/is_numeric.js +0 -1
  475. package/php/var/is_numeric.js.map +1 -1
  476. package/php/var/is_object.js +0 -1
  477. package/php/var/is_object.js.map +1 -1
  478. package/php/var/is_real.js +0 -1
  479. package/php/var/is_real.js.map +1 -1
  480. package/php/var/is_scalar.js +0 -1
  481. package/php/var/is_scalar.js.map +1 -1
  482. package/php/var/is_string.js +0 -1
  483. package/php/var/is_string.js.map +1 -1
  484. package/php/var/is_unicode.js +0 -1
  485. package/php/var/is_unicode.js.map +1 -1
  486. package/php/var/isset.js.map +1 -1
  487. package/php/var/print_r.js +0 -1
  488. package/php/var/print_r.js.map +1 -1
  489. package/php/var/serialize.js.map +1 -1
  490. package/php/var/strval.js.map +1 -1
  491. package/php/var/unserialize.js +12 -16
  492. package/php/var/unserialize.js.map +1 -1
  493. package/php/var/var_dump.js +0 -1
  494. package/php/var/var_dump.js.map +1 -1
  495. package/php/var/var_export.js +0 -1
  496. package/php/var/var_export.js.map +1 -1
  497. package/php/xdiff/xdiff_string_diff.js +0 -1
  498. package/php/xdiff/xdiff_string_diff.js.map +1 -1
  499. package/php/xdiff/xdiff_string_patch.js +0 -1
  500. package/php/xdiff/xdiff_string_patch.js.map +1 -1
  501. package/php/xml/utf8_decode.js +10 -11
  502. package/php/xml/utf8_decode.js.map +1 -1
  503. package/php/xml/utf8_encode.js +4 -5
  504. package/php/xml/utf8_encode.js.map +1 -1
  505. package/python/string/ascii_letters.js +0 -1
  506. package/python/string/ascii_letters.js.map +1 -1
  507. package/python/string/ascii_lowercase.js +0 -1
  508. package/python/string/ascii_lowercase.js.map +1 -1
  509. package/python/string/ascii_uppercase.js +0 -1
  510. package/python/string/ascii_uppercase.js.map +1 -1
  511. package/python/string/capwords.js.map +1 -1
  512. package/python/string/index.js +1 -0
  513. package/python/string/index.js.map +1 -1
  514. package/python/string/punctuation.js +2 -2
  515. package/python/string/punctuation.js.map +1 -1
  516. package/ruby/Math/acos.js.map +1 -1
  517. package/php/_locutus_shared/_locutus_shared_bc.js +0 -1255
  518. package/php/_locutus_shared/_locutus_shared_bc.js.map +0 -1
  519. package/php/_locutus_shared/index.js +0 -4
  520. package/php/_locutus_shared/index.js.map +0 -1
package/_util/util.js CHANGED
@@ -35,7 +35,7 @@ var Util = function () {
35
35
  this.langDefaults = {
36
36
  c: {
37
37
  order: 1,
38
- function_title_template: '[language]\'s [category].[function] in JavaScript',
38
+ function_title_template: "[language]'s [category].[function] in JavaScript",
39
39
  human: 'C',
40
40
  packageType: 'header file',
41
41
  inspiration_urls: ['<a href="https://en.cppreference.com/w/c/numeric/math">the C math.h documentation</a>', '<a href="https://sourceware.org/git/?p=glibc.git;a=tree;f=math;hb=HEAD">the C math.h source</a>'],
@@ -43,7 +43,7 @@ var Util = function () {
43
43
  },
44
44
  golang: {
45
45
  order: 2,
46
- function_title_template: '[language]\'s [category].[function] in JavaScript',
46
+ function_title_template: "[language]'s [category].[function] in JavaScript",
47
47
  human: 'Go',
48
48
  packageType: 'package',
49
49
  inspiration_urls: ['<a href="https://golang.org/pkg/strings/">Go strings documentation</a>', '<a href="https://golang.org/src/strings/strings.go">Go strings source</a>', '<a href="https://golang.org/src/strings/example_test.go">Go strings examples source</a>', '<a href="https://gophersjs.com">GopherJS</a>'],
@@ -51,7 +51,7 @@ var Util = function () {
51
51
  },
52
52
  python: {
53
53
  order: 3,
54
- function_title_template: '[language]\'s [category].[function] in JavaScript',
54
+ function_title_template: "[language]'s [category].[function] in JavaScript",
55
55
  human: 'Python',
56
56
  packageType: 'module',
57
57
  inspiration_urls: ['<a href="https://docs.python.org/3/library/string.html">the Python 3 standard library string page</a>'],
@@ -59,7 +59,7 @@ var Util = function () {
59
59
  },
60
60
  ruby: {
61
61
  order: 4,
62
- function_title_template: '[language]\'s [category].[function] in JavaScript',
62
+ function_title_template: "[language]'s [category].[function] in JavaScript",
63
63
  human: 'Ruby',
64
64
  packageType: 'module',
65
65
  inspiration_urls: ['<a href="https://ruby-doc.org/core-2.2.2/Math.html">the Ruby core documentation</a>'],
@@ -67,7 +67,7 @@ var Util = function () {
67
67
  },
68
68
  php: {
69
69
  order: 5,
70
- function_title_template: '[language]\'s [function] in JavaScript',
70
+ function_title_template: "[language]'s [function] in JavaScript",
71
71
  human: 'PHP',
72
72
  packageType: 'extension',
73
73
  inspiration_urls: ['<a href="https://php.net/manual/en/book.strings.php">the PHP string documentation</a>', '<a href="https://github.com/php/php-src/blob/master/ext/standard/string.c#L5338">the PHP string source</a>', '<a href="https://github.com/php/php-src/blob/master/ext/standard/tests/strings/str_pad_variation1.phpt">a PHP str_pad test</a>'],
@@ -159,7 +159,7 @@ var Util = function () {
159
159
  this._reindexBuffer[indexJs] = [];
160
160
  }
161
161
 
162
- var line = 'module.exports.' + module + ' = require(\'./' + basefile + '\')';
162
+ var line = 'module.exports.' + module + " = require('./" + basefile + "')";
163
163
  this._reindexBuffer[indexJs].push(line);
164
164
  return cb(null);
165
165
  }
@@ -198,7 +198,7 @@ var Util = function () {
198
198
 
199
199
  if (!this._injectwebBuffer[catIndexPath]) {
200
200
  var catTitle = '';
201
- catTitle += this.langDefaults[params.language].human + '\'s ';
201
+ catTitle += this.langDefaults[params.language].human + "'s ";
202
202
  catTitle += params.category + ' ';
203
203
  catTitle += this.langDefaults[params.language].packageType + ' ';
204
204
  catTitle += ' in JavaScript';
@@ -259,7 +259,7 @@ var Util = function () {
259
259
  }, {
260
260
  key: '_addRequire',
261
261
  value: function _addRequire(name, relativeSrcForTest) {
262
- return ['var ', name, ' = require(\'', relativeSrcForTest, '\') // eslint-disable-line no-unused-vars,camelcase'].join('');
262
+ return ['var ', name, " = require('", relativeSrcForTest, "') // eslint-disable-line no-unused-vars,camelcase"].join('');
263
263
  }
264
264
  }, {
265
265
  key: '_writetestOne',
@@ -308,9 +308,9 @@ var Util = function () {
308
308
 
309
309
  // Set timezone for testing dates
310
310
  // Not ideal: https://stackoverflow.com/questions/8083410/how-to-set-default-timezone-in-node-js
311
- codez.push('process.env.TZ = \'UTC\'');
311
+ codez.push("process.env.TZ = 'UTC'");
312
312
 
313
- codez.push('var ' + 'expect' + ' = require(\'chai\').expect');
313
+ codez.push('var ' + 'expect' + " = require('chai').expect");
314
314
 
315
315
  // Add language-wide dependencies
316
316
  // @todo: It would be great if we could remove this
@@ -330,7 +330,7 @@ var Util = function () {
330
330
 
331
331
  codez.push('');
332
332
 
333
- codez.push(['describe', describeSkip, '(\'src/', params.filepath, ' (tested in ', relativeTestFileForRoot, ')\', function () {'].join(''));
333
+ codez.push(['describe', describeSkip, "('src/", params.filepath, ' (tested in ', relativeTestFileForRoot, ")', function () {"].join(''));
334
334
 
335
335
  // Run each example
336
336
  for (var i in params.headKeys.example) {
@@ -344,7 +344,7 @@ var Util = function () {
344
344
  itSkip = '.skip';
345
345
  }
346
346
 
347
- codez.push([' it', itSkip, '(\'should pass example ', humanIndex, '\', function (done) {'].join(''));
347
+ codez.push([' it', itSkip, "('should pass example ", humanIndex, "', function (done) {"].join(''));
348
348
 
349
349
  var body = [];
350
350
 
@@ -490,7 +490,7 @@ var Util = function () {
490
490
  }
491
491
 
492
492
  if (filepath.indexOf('/') === -1) {
493
- return cb(new Error('Parse only accepts relative filepaths. Received: \'' + filepath + '\''));
493
+ return cb(new Error("Parse only accepts relative filepaths. Received: '" + filepath + "'"));
494
494
  }
495
495
 
496
496
  var parts = filepath.split('/');
package/_util/util.js.map CHANGED
@@ -1 +1 @@
1
- {"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","returns","dependencies","notes","note","description","function","permalink","buf","code","then","writeFile","Error","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":"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","file":"util.js","sourcesContent":["const globby = require('globby')\nconst path = require('path')\nconst fs = require('fs')\nconst async = require('async')\nconst YAML = require('js-yaml')\nconst mkdirp = require('mkdirp')\nconst debug = require('depurar')('locutus')\nconst indentString = require('indent-string')\nconst _ = 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=\"https://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=\"https://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=\"https://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=\"https://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=\"https://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=\"https://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=\"https://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 const self = this\n this._runFunctionOnAll(this._injectwebOne, function (err) {\n if (err) {\n return cb(err)\n }\n for (const 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 const self = this\n self._reindexBuffer = {}\n self._runFunctionOnAll(self._reindexOne, function (err) {\n if (err) {\n return cb(err)\n }\n for (const indexJs in self._reindexBuffer) {\n const 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 const self = this\n\n const 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 const files = globby.sync(self.pattern)\n\n q.push(files)\n\n q.drain = cb\n }\n\n _reindexOne (params, cb) {\n const fullpath = this.__src + '/' + params.filepath\n const dir = path.dirname(fullpath)\n const basefile = path.basename(fullpath, '.js')\n const indexJs = dir + '/index.js'\n\n let module = basefile\n if (basefile === 'Index2') {\n module = 'Index'\n }\n\n if (!this._reindexBuffer[indexJs]) {\n this._reindexBuffer[indexJs] = []\n }\n\n const line = 'module.exports.' + module + ' = require(\\'./' + basefile + '\\')'\n this._reindexBuffer[indexJs].push(line)\n return cb(null)\n }\n\n _injectwebOne (params, cb) {\n const authors = {}\n this.authorKeys.forEach(function (key) {\n if (params.headKeys[key]) {\n authors[key] = _.flattenDeep(params.headKeys[key])\n }\n })\n\n const langPath = [\n this.__root,\n '/website/source/',\n params.language\n ].join('')\n\n const langIndexPath = langPath + '/index.html'\n const catPath = langPath + '/' + params.category\n const catIndexPath = catPath + '/' + 'index.html'\n const funcPath = catPath + '/' + params.func_name + '.html'\n\n if (!this._injectwebBuffer[langIndexPath]) {\n let langTitle = ''\n langTitle += this.langDefaults[params.language].human + ' '\n langTitle += this.langDefaults[params.language].packageType + 's '\n langTitle += ' in JavaScript'\n\n const 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 let 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 const 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 const 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 const 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 const 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 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 let buf = '---' + '\\n' + YAML.safeDump(funcData).trim() + '\\n' + '---' + '\\n'\n\n buf += `{% codeblock lang:javascript %}${params.code}{% endcodeblock %}`\n\n mkdirp(path.dirname(funcPath)).then(function () {\n fs.writeFile(funcPath, buf, 'utf-8', cb)\n }, function (err) {\n throw new Error('Could not mkdir for ' + funcPath + '. ' + err)\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 const 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 const basename = path.basename(params.filepath)\n const subdir = path.dirname(params.filepath)\n const testpath = this.__test + '/languages/' + subdir + '/test-' + basename\n const testdir = path.dirname(testpath)\n const relativeSrcForTestDir = path.relative(testdir, self.__src)\n const relativeTestFileForRoot = path.relative(self.__root, testpath)\n\n // console.log(relativeSrcForTestDir)\n // process.exit(1)\n\n let testProps = ''\n if (params.headKeys.test) {\n testProps = params.headKeys.test[0][0]\n }\n\n let describeSkip = ''\n if (self.allowSkip && testProps.indexOf('skip-all') !== -1) {\n describeSkip = '.skip'\n }\n\n const 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 (const global in self.globals) {\n codez.push('var ' + global + ' = ' + self.globals[global])\n }\n\n // Set timezone for testing dates\n // Not ideal: https://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 (const 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 const humanIndex = parseInt(i, 10) + 1\n let 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 const body = []\n\n const 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 (const 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 const code = codez.join('\\n')\n\n // Write to disk\n mkdirp(testdir).then(function () {\n debug('writing: ' + testpath)\n fs.writeFile(testpath, code, 'utf-8', cb)\n }, function (err) {\n throw new Error(err)\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 const self = this\n let pattern\n\n const 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 const files = globby.sync(pattern, {})\n\n if (files.length !== 1) {\n const msg = `Found ${files.length} occurances of ${fileOrName} via pattern: ${pattern}`\n return cb(new Error(msg))\n }\n\n const 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 const self = this\n self._opener(fileOrName, requesterParams, function (err, fullpath, code) {\n if (err) {\n return cb(err)\n }\n\n const filepath = path.relative(self.__src, fullpath)\n self._parse(filepath, code, cb)\n })\n }\n\n _findDependencies (fileOrName, requesterParams, dependencies, cb) {\n const 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 let i\n let depCodePath\n let 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 const parts = filepath.split('/')\n const language = parts.shift()\n const codepath = parts.join('.')\n const name = parts.pop()\n const category = parts.join('.')\n\n const ast = esprima.parseScript(code, { comment: true, loc: true, range: true })\n\n // find module.exports in the code\n const moduleExports = ast.body.filter(node => {\n try {\n const leftArg = node.expression.left\n const 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 const exp = moduleExports[0]\n\n // look for function name and param list\n const funcName = exp.expression.right.id.name\n const funcParams = exp.expression.right.params.map(p => p.name)\n\n // remember the lines where the function is defined\n const 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 const 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 const 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 const msg = `Unable to parse ${filepath}. Did not find any comments in function definition`\n return cb(new Error(msg))\n }\n\n const headKeys = this._headKeys(headComments)\n\n const 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 let i\n const keys = {}\n let match = []\n let dmatch = []\n let key = ''\n let val = ''\n let 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"]}
1
+ {"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","returns","dependencies","notes","note","description","function","permalink","buf","code","then","writeFile","Error","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","node","leftArg","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":"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","file":"util.js","sourcesContent":["const globby = require('globby')\nconst path = require('path')\nconst fs = require('fs')\nconst async = require('async')\nconst YAML = require('js-yaml')\nconst mkdirp = require('mkdirp')\nconst debug = require('depurar')('locutus')\nconst indentString = require('indent-string')\nconst _ = 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=\"https://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:\n 'Here’s what our current JavaScript equivalent to <a href=\"https://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=\"https://gophersjs.com\">GopherJS</a>',\n ],\n function_description_template:\n '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:\n '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: ['<a href=\"https://ruby-doc.org/core-2.2.2/Math.html\">the Ruby core documentation</a>'],\n function_description_template:\n 'Here’s what our current JavaScript equivalent to <a href=\"https://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=\"https://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:\n 'Here’s what our current JavaScript equivalent to <a href=\"https://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 const self = this\n this._runFunctionOnAll(this._injectwebOne, function (err) {\n if (err) {\n return cb(err)\n }\n for (const 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 const self = this\n self._reindexBuffer = {}\n self._runFunctionOnAll(self._reindexOne, function (err) {\n if (err) {\n return cb(err)\n }\n for (const indexJs in self._reindexBuffer) {\n const 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 const self = this\n\n const 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 const files = globby.sync(self.pattern)\n\n q.push(files)\n\n q.drain = cb\n }\n\n _reindexOne(params, cb) {\n const fullpath = this.__src + '/' + params.filepath\n const dir = path.dirname(fullpath)\n const basefile = path.basename(fullpath, '.js')\n const indexJs = dir + '/index.js'\n\n let module = basefile\n if (basefile === 'Index2') {\n module = 'Index'\n }\n\n if (!this._reindexBuffer[indexJs]) {\n this._reindexBuffer[indexJs] = []\n }\n\n const line = 'module.exports.' + module + \" = require('./\" + basefile + \"')\"\n this._reindexBuffer[indexJs].push(line)\n return cb(null)\n }\n\n _injectwebOne(params, cb) {\n const authors = {}\n this.authorKeys.forEach(function (key) {\n if (params.headKeys[key]) {\n authors[key] = _.flattenDeep(params.headKeys[key])\n }\n })\n\n const langPath = [this.__root, '/website/source/', params.language].join('')\n\n const langIndexPath = langPath + '/index.html'\n const catPath = langPath + '/' + params.category\n const catIndexPath = catPath + '/' + 'index.html'\n const funcPath = catPath + '/' + params.func_name + '.html'\n\n if (!this._injectwebBuffer[langIndexPath]) {\n let langTitle = ''\n langTitle += this.langDefaults[params.language].human + ' '\n langTitle += this.langDefaults[params.language].packageType + 's '\n langTitle += ' in JavaScript'\n\n const 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 let 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 const 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 const 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 const 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 const 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 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 let buf = '---' + '\\n' + YAML.safeDump(funcData).trim() + '\\n' + '---' + '\\n'\n\n buf += `{% codeblock lang:javascript %}${params.code}{% endcodeblock %}`\n\n mkdirp(path.dirname(funcPath)).then(\n function () {\n fs.writeFile(funcPath, buf, 'utf-8', cb)\n },\n function (err) {\n throw new Error('Could not mkdir for ' + funcPath + '. ' + err)\n },\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 const 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 const basename = path.basename(params.filepath)\n const subdir = path.dirname(params.filepath)\n const testpath = this.__test + '/languages/' + subdir + '/test-' + basename\n const testdir = path.dirname(testpath)\n const relativeSrcForTestDir = path.relative(testdir, self.__src)\n const relativeTestFileForRoot = path.relative(self.__root, testpath)\n\n // console.log(relativeSrcForTestDir)\n // process.exit(1)\n\n let testProps = ''\n if (params.headKeys.test) {\n testProps = params.headKeys.test[0][0]\n }\n\n let describeSkip = ''\n if (self.allowSkip && testProps.indexOf('skip-all') !== -1) {\n describeSkip = '.skip'\n }\n\n const 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 (const global in self.globals) {\n codez.push('var ' + global + ' = ' + self.globals[global])\n }\n\n // Set timezone for testing dates\n // Not ideal: https://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('setlocale', relativeSrcForTestDir + '/' + 'php/strings/setlocale'))\n }\n if (params.func_name === 'i18n_loc_get_default') {\n codez.push(\n self._addRequire('i18n_loc_set_default', relativeSrcForTestDir + '/' + 'php/i18n/i18n_loc_set_default'),\n )\n }\n }\n\n // Add the main function to test\n codez.push(self._addRequire(params.func_name, relativeSrcForTestDir + '/' + params.filepath))\n\n codez.push('')\n\n codez.push(\n [\n 'describe',\n describeSkip,\n \"('src/\",\n params.filepath,\n ' (tested in ',\n relativeTestFileForRoot,\n \")', function () {\",\n ].join(''),\n )\n\n // Run each example\n for (const 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 const humanIndex = parseInt(i, 10) + 1\n let itSkip = ''\n if (self.allowSkip && testProps.indexOf('skip-' + humanIndex) !== -1) {\n itSkip = '.skip'\n }\n\n codez.push([' it', itSkip, \"('should pass example \", humanIndex, \"', function (done) {\"].join(''))\n\n const body = []\n\n const 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 (const 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 const code = codez.join('\\n')\n\n // Write to disk\n mkdirp(testdir).then(\n function () {\n debug('writing: ' + testpath)\n fs.writeFile(testpath, code, 'utf-8', cb)\n },\n function (err) {\n throw new Error(err)\n },\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 const self = this\n let pattern\n\n const 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 const files = globby.sync(pattern, {})\n\n if (files.length !== 1) {\n const msg = `Found ${files.length} occurances of ${fileOrName} via pattern: ${pattern}`\n return cb(new Error(msg))\n }\n\n const 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 const self = this\n self._opener(fileOrName, requesterParams, function (err, fullpath, code) {\n if (err) {\n return cb(err)\n }\n\n const filepath = path.relative(self.__src, fullpath)\n self._parse(filepath, code, cb)\n })\n }\n\n _findDependencies(fileOrName, requesterParams, dependencies, cb) {\n const 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 let i\n let depCodePath\n let 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 const parts = filepath.split('/')\n const language = parts.shift()\n const codepath = parts.join('.')\n const name = parts.pop()\n const category = parts.join('.')\n\n const ast = esprima.parseScript(code, { comment: true, loc: true, range: true })\n\n // find module.exports in the code\n const moduleExports = ast.body.filter((node) => {\n try {\n const leftArg = node.expression.left\n const rightArg = node.expression.right\n\n return (\n leftArg.object.name === 'module' &&\n leftArg.property.name === 'exports' &&\n rightArg.type === 'FunctionExpression' &&\n rightArg.id.type === 'Identifier' &&\n !!rightArg.id.name\n )\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 const exp = moduleExports[0]\n\n // look for function name and param list\n const funcName = exp.expression.right.id.name\n const funcParams = exp.expression.right.params.map((p) => p.name)\n\n // remember the lines where the function is defined\n const 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 const 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 const headComments = ast.comments\n .filter(\n (c) =>\n c.type === 'Line' &&\n c.loc.start.line >= funcLoc.start.line &&\n c.loc.end.line <= firstFuncBodyElementLoc.start.line,\n )\n .map((c) => c.value.trim())\n\n if (headComments.length === 0) {\n const msg = `Unable to parse ${filepath}. Did not find any comments in function definition`\n return cb(new Error(msg))\n }\n\n const headKeys = this._headKeys(headComments)\n\n const params = {\n headKeys,\n name,\n filepath,\n codepath,\n code,\n language,\n 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 let i\n const keys = {}\n let match = []\n let dmatch = []\n let key = ''\n let val = ''\n let 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"]}
package/c/math/abs.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/c/math/abs.js"],"names":["module","exports","abs","mixedNumber","Math"],"mappings":";;AAAAA,OAAOC,OAAP,GAAiB,SAASC,GAAT,CAAcC,WAAd,EAA2B;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAOC,KAAKF,GAAL,CAASC,WAAT,KAAyB,CAAhC;AACD,CAhBD","file":"abs.js","sourcesContent":["module.exports = function abs (mixedNumber) {\n // discuss at: https://locutus.io/c/abs/\n // original by: Waldo Malqui Silva (https://waldo.malqui.info)\n // improved by: Karol Kowalski\n // improved by: Kevin van Zonneveld (https://kvz.io)\n // improved by: Jonas Raoni Soares Silva (https://www.jsfromhell.com)\n // example 1: abs(4.2)\n // returns 1: 4.2\n // example 2: abs(-4.2)\n // returns 2: 4.2\n // example 3: abs(-5)\n // returns 3: 5\n // example 4: abs('_argos')\n // returns 4: 0\n\n return Math.abs(mixedNumber) || 0\n}\n"]}
1
+ {"version":3,"sources":["../../../src/c/math/abs.js"],"names":["module","exports","abs","mixedNumber","Math"],"mappings":";;AAAAA,OAAOC,OAAP,GAAiB,SAASC,GAAT,CAAaC,WAAb,EAA0B;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAOC,KAAKF,GAAL,CAASC,WAAT,KAAyB,CAAhC;AACD,CAhBD","file":"abs.js","sourcesContent":["module.exports = function abs(mixedNumber) {\n // discuss at: https://locutus.io/c/abs/\n // original by: Waldo Malqui Silva (https://waldo.malqui.info)\n // improved by: Karol Kowalski\n // improved by: Kevin van Zonneveld (https://kvz.io)\n // improved by: Jonas Raoni Soares Silva (https://www.jsfromhell.com)\n // example 1: abs(4.2)\n // returns 1: 4.2\n // example 2: abs(-4.2)\n // returns 2: 4.2\n // example 3: abs(-5)\n // returns 3: 5\n // example 4: abs('_argos')\n // returns 4: 0\n\n return Math.abs(mixedNumber) || 0\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/c/math/frexp.js"],"names":["module","exports","frexp","arg","Number","result","isFinite","absArg","Math","abs","log2","n","log","LOG2E","exp","max","floor","x","pow"],"mappings":";;AAAAA,OAAOC,OAAP,GAAiB,SAASC,KAAT,CAAgBC,GAAhB,EAAqB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEAA,QAAMC,OAAOD,GAAP,CAAN;;AAEA,MAAME,SAAS,CAACF,GAAD,EAAM,CAAN,CAAf;;AAEA,MAAIA,QAAQ,CAAR,IAAaC,OAAOE,QAAP,CAAgBH,GAAhB,CAAjB,EAAuC;AACrC,QAAMI,SAASC,KAAKC,GAAL,CAASN,GAAT,CAAf;AACA;AACA,QAAMO,OAAOF,KAAKE,IAAL,IAAa,SAASA,IAAT,CAAeC,CAAf,EAAkB;AAAE,aAAOH,KAAKI,GAAL,CAASD,CAAT,IAAcH,KAAKK,KAA1B;AAAiC,KAA/E;AACA,QAAIC,MAAMN,KAAKO,GAAL,CAAS,CAAC,IAAV,EAAgBP,KAAKQ,KAAL,CAAWN,KAAKH,MAAL,CAAX,IAA2B,CAA3C,CAAV;AACA,QAAIU,IAAIV,SAASC,KAAKU,GAAL,CAAS,CAAT,EAAY,CAACJ,GAAb,CAAjB;;AAEA;AACA;AACA,WAAOG,IAAI,GAAX,EAAgB;AACdA,WAAK,CAAL;AACAH;AACD;AACD,WAAOG,KAAK,CAAZ,EAAe;AACbA,WAAK,GAAL;AACAH;AACD;;AAED,QAAIX,MAAM,CAAV,EAAa;AACXc,UAAI,CAACA,CAAL;AACD;AACDZ,WAAO,CAAP,IAAYY,CAAZ;AACAZ,WAAO,CAAP,IAAYS,GAAZ;AACD;AACD,SAAOT,MAAP;AACD,CArED","file":"frexp.js","sourcesContent":["module.exports = function frexp (arg) {\n // discuss at: https://locutus.io/c/frexp/\n // original by: Oskar Larsson Högfeldt (https://oskar-lh.name/)\n // note 1: Instead of\n // note 1: double frexp( double arg, int* exp );\n // note 1: this is built as\n // note 1: [double, int] frexp( double arg );\n // note 1: due to the lack of pointers in JavaScript.\n // note 1: See code comments for further information.\n // example 1: frexp(1)\n // returns 1: [0.5, 1]\n // example 2: frexp(1.5)\n // returns 2: [0.75, 1]\n // example 3: frexp(3 * Math.pow(2, 500))\n // returns 3: [0.75, 502]\n // example 4: frexp(-4)\n // returns 4: [-0.5, 3]\n // example 5: frexp(Number.MAX_VALUE)\n // returns 5: [0.9999999999999999, 1024]\n // example 6: frexp(Number.MIN_VALUE)\n // returns 6: [0.5, -1073]\n // example 7: frexp(-Infinity)\n // returns 7: [-Infinity, 0]\n // example 8: frexp(-0)\n // returns 8: [-0, 0]\n // example 9: frexp(NaN)\n // returns 9: [NaN, 0]\n\n // Potential issue with this implementation:\n // the precisions of Math.pow and the ** operator are undefined in the ECMAScript standard,\n // however, sane implementations should give the same results for Math.pow(2, <integer>) operations\n\n // Like frexp of C and std::frexp of C++,\n // but returns an array instead of using a pointer argument for passing the exponent result.\n // Object.is(n, frexp(n)[0] * 2 ** frexp(n)[1]) for all number values of n except when Math.isFinite(n) && Math.abs(n) > 2**1023\n // Object.is(n, (2 * frexp(n)[0]) * 2 ** (frexp(n)[1] - 1)) for all number values of n\n // Object.is(n, frexp(n)[0]) for these values of n: 0, -0, NaN, Infinity, -Infinity\n // Math.abs(frexp(n)[0]) is >= 0.5 and < 1.0 for any other number-type value of n\n // See https://en.cppreference.com/w/c/numeric/math/frexp for a more detailed description\n\n arg = Number(arg)\n\n const result = [arg, 0]\n\n if (arg !== 0 && Number.isFinite(arg)) {\n const absArg = Math.abs(arg)\n // Math.log2 was introduced in ES2015, use it when available\n const log2 = Math.log2 || function log2 (n) { return Math.log(n) * Math.LOG2E }\n let exp = Math.max(-1023, Math.floor(log2(absArg)) + 1)\n let x = absArg * Math.pow(2, -exp)\n\n // These while loops compensate for rounding errors that sometimes occur because of ECMAScript's Math.log2's undefined precision\n // and also works around the issue of Math.pow(2, -exp) === Infinity when exp <= -1024\n while (x < 0.5) {\n x *= 2\n exp--\n }\n while (x >= 1) {\n x *= 0.5\n exp++\n }\n\n if (arg < 0) {\n x = -x\n }\n result[0] = x\n result[1] = exp\n }\n return result\n}\n"]}
1
+ {"version":3,"sources":["../../../src/c/math/frexp.js"],"names":["module","exports","frexp","arg","Number","result","isFinite","absArg","Math","abs","log2","n","log","LOG2E","exp","max","floor","x","pow"],"mappings":";;AAAAA,OAAOC,OAAP,GAAiB,SAASC,KAAT,CAAeC,GAAf,EAAoB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEAA,QAAMC,OAAOD,GAAP,CAAN;;AAEA,MAAME,SAAS,CAACF,GAAD,EAAM,CAAN,CAAf;;AAEA,MAAIA,QAAQ,CAAR,IAAaC,OAAOE,QAAP,CAAgBH,GAAhB,CAAjB,EAAuC;AACrC,QAAMI,SAASC,KAAKC,GAAL,CAASN,GAAT,CAAf;AACA;AACA,QAAMO,OACJF,KAAKE,IAAL,IACA,SAASA,IAAT,CAAcC,CAAd,EAAiB;AACf,aAAOH,KAAKI,GAAL,CAASD,CAAT,IAAcH,KAAKK,KAA1B;AACD,KAJH;AAKA,QAAIC,MAAMN,KAAKO,GAAL,CAAS,CAAC,IAAV,EAAgBP,KAAKQ,KAAL,CAAWN,KAAKH,MAAL,CAAX,IAA2B,CAA3C,CAAV;AACA,QAAIU,IAAIV,SAASC,KAAKU,GAAL,CAAS,CAAT,EAAY,CAACJ,GAAb,CAAjB;;AAEA;AACA;AACA,WAAOG,IAAI,GAAX,EAAgB;AACdA,WAAK,CAAL;AACAH;AACD;AACD,WAAOG,KAAK,CAAZ,EAAe;AACbA,WAAK,GAAL;AACAH;AACD;;AAED,QAAIX,MAAM,CAAV,EAAa;AACXc,UAAI,CAACA,CAAL;AACD;AACDZ,WAAO,CAAP,IAAYY,CAAZ;AACAZ,WAAO,CAAP,IAAYS,GAAZ;AACD;AACD,SAAOT,MAAP;AACD,CAzED","file":"frexp.js","sourcesContent":["module.exports = function frexp(arg) {\n // discuss at: https://locutus.io/c/frexp/\n // original by: Oskar Larsson Högfeldt (https://oskar-lh.name/)\n // note 1: Instead of\n // note 1: double frexp( double arg, int* exp );\n // note 1: this is built as\n // note 1: [double, int] frexp( double arg );\n // note 1: due to the lack of pointers in JavaScript.\n // note 1: See code comments for further information.\n // example 1: frexp(1)\n // returns 1: [0.5, 1]\n // example 2: frexp(1.5)\n // returns 2: [0.75, 1]\n // example 3: frexp(3 * Math.pow(2, 500))\n // returns 3: [0.75, 502]\n // example 4: frexp(-4)\n // returns 4: [-0.5, 3]\n // example 5: frexp(Number.MAX_VALUE)\n // returns 5: [0.9999999999999999, 1024]\n // example 6: frexp(Number.MIN_VALUE)\n // returns 6: [0.5, -1073]\n // example 7: frexp(-Infinity)\n // returns 7: [-Infinity, 0]\n // example 8: frexp(-0)\n // returns 8: [-0, 0]\n // example 9: frexp(NaN)\n // returns 9: [NaN, 0]\n\n // Potential issue with this implementation:\n // the precisions of Math.pow and the ** operator are undefined in the ECMAScript standard,\n // however, sane implementations should give the same results for Math.pow(2, <integer>) operations\n\n // Like frexp of C and std::frexp of C++,\n // but returns an array instead of using a pointer argument for passing the exponent result.\n // Object.is(n, frexp(n)[0] * 2 ** frexp(n)[1]) for all number values of n except when Math.isFinite(n) && Math.abs(n) > 2**1023\n // Object.is(n, (2 * frexp(n)[0]) * 2 ** (frexp(n)[1] - 1)) for all number values of n\n // Object.is(n, frexp(n)[0]) for these values of n: 0, -0, NaN, Infinity, -Infinity\n // Math.abs(frexp(n)[0]) is >= 0.5 and < 1.0 for any other number-type value of n\n // See https://en.cppreference.com/w/c/numeric/math/frexp for a more detailed description\n\n arg = Number(arg)\n\n const result = [arg, 0]\n\n if (arg !== 0 && Number.isFinite(arg)) {\n const absArg = Math.abs(arg)\n // Math.log2 was introduced in ES2015, use it when available\n const log2 =\n Math.log2 ||\n function log2(n) {\n return Math.log(n) * Math.LOG2E\n }\n let exp = Math.max(-1023, Math.floor(log2(absArg)) + 1)\n let x = absArg * Math.pow(2, -exp)\n\n // These while loops compensate for rounding errors that sometimes occur because of ECMAScript's Math.log2's undefined precision\n // and also works around the issue of Math.pow(2, -exp) === Infinity when exp <= -1024\n while (x < 0.5) {\n x *= 2\n exp--\n }\n while (x >= 1) {\n x *= 0.5\n exp++\n }\n\n if (arg < 0) {\n x = -x\n }\n result[0] = x\n result[1] = exp\n }\n return result\n}\n"]}
@@ -105,7 +105,7 @@ module.exports = function sprintf(format) {
105
105
  case 'X':
106
106
  {
107
107
  var _number2 = +arg || 0;
108
- var intVal = Math.trunc(_number2) + (_number2 < 0 ? 0xFFFFFFFF + 1 : 0);
108
+ var intVal = Math.trunc(_number2) + (_number2 < 0 ? 0xffffffff + 1 : 0);
109
109
  var base = [2, 8, 10, 16, 16]['bouxX'.indexOf(modifier)];
110
110
  var _prefix2 = intVal && flags.includes('#') ? ['', '0', '', '0x', '0X']['bouxXX'.indexOf(modifier)] : '';
111
111
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/c/stdio/sprintf.js"],"names":["pad","str","minLength","padChar","leftJustify","diff","length","padStr","repeat","Math","max","module","exports","sprintf","format","args","placeholderRegex","index","replace","match","param","flags","width","prec","modifier","includes","split","reduce","pc","c","positiveSign","minWidth","precision","Error","arg","undefined","isNaN","String","number","trunc","abs","prefix","toString","op","Number","prototype","toExponential","toFixed","toPrecision","indexOf","toLowerCase","tr","toUpperCase","isSpecial","isFinite","substr","call","intVal","base","chr","charAt","fromCharCode"],"mappings":"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","file":"sprintf.js","sourcesContent":["function pad (str, minLength, padChar, leftJustify) {\n const diff = minLength - str.length\n const padStr = padChar.repeat(Math.max(0, diff))\n\n return leftJustify ? str + padStr : padStr + str\n}\n\nmodule.exports = function sprintf (format, ...args) {\n // original by: Rafał Kukawski\n // bugfixed by: Param Siddharth\n // example 1: sprintf('%+10.*d', 5, 1)\n // returns 1: ' +00001'\n // example 2: sprintf('%s is a %d%% %s %s.', 'Param', 90, 'good', 'boy')\n // returns 2: 'Param is a 90% good boy.'\n const placeholderRegex = /%(?:(\\d+)\\$)?([-+#0 ]*)(\\*|\\d+)?(?:\\.(\\*|\\d*))?([\\s\\S])/g\n\n let index = 0\n\n return format.replace(placeholderRegex, function (match, param, flags, width, prec, modifier) {\n const leftJustify = flags.includes('-')\n\n // flag '0' is ignored when flag '-' is present\n const padChar = leftJustify\n ? ' '\n : flags.split('').reduce((pc, c) => [' ', '0'].includes(c) ? c : pc, ' ')\n\n const positiveSign = flags.includes('+') ? '+' : flags.includes(' ') ? ' ' : ''\n\n const minWidth = width === '*' ? args[index++] : +width || 0\n let precision = prec === '*' ? args[index++] : +prec\n\n if (param && !+param) {\n throw Error('Param index must be greater than 0')\n }\n\n if (param && +param > args.length) {\n throw Error('Too few arguments')\n }\n\n // compiling with default clang params, mixed positional and non-positional params\n // give only a warning\n const arg = param ? args[param - 1] : args[index]\n\n if (modifier !== '%') {\n index++\n }\n\n if (precision === undefined || isNaN(precision)) {\n precision = 'eEfFgG'.includes(modifier) ? 6 : (modifier === 's' ? String(arg).length : undefined)\n }\n\n switch (modifier) {\n case '%':\n return '%'\n case 'd':\n case 'i': {\n const number = Math.trunc(+arg || 0)\n const abs = Math.abs(number)\n const prefix = number < 0 ? '-' : positiveSign\n\n const str = pad(abs.toString(), precision || 0, '0', false)\n\n if (padChar === '0') {\n return prefix + pad(str, minWidth - prefix.length, padChar, leftJustify)\n }\n\n return pad(prefix + str, minWidth, padChar, leftJustify)\n }\n case 'e':\n case 'E':\n case 'f':\n case 'F':\n case 'g':\n case 'G': {\n const number = +arg\n const abs = Math.abs(number)\n const prefix = number < 0 ? '-' : positiveSign\n\n const op = [\n Number.prototype.toExponential,\n Number.prototype.toFixed,\n Number.prototype.toPrecision\n ]['efg'.indexOf(modifier.toLowerCase())]\n\n const tr = [\n String.prototype.toLowerCase,\n String.prototype.toUpperCase\n ]['eEfFgG'.indexOf(modifier) % 2]\n\n const isSpecial = isNaN(abs) || !isFinite(abs)\n\n const str = isSpecial ? abs.toString().substr(0, 3) : op.call(abs, precision)\n\n if (padChar === '0' && !isSpecial) {\n return prefix + pad(tr.call(str), minWidth - prefix.length, padChar, leftJustify)\n }\n\n return pad(tr.call(prefix + str), minWidth, isSpecial ? ' ' : padChar, leftJustify)\n }\n case 'b':\n case 'o':\n case 'u':\n case 'x':\n case 'X': {\n const number = +arg || 0\n const intVal = Math.trunc(number) + (number < 0 ? 0xFFFFFFFF + 1 : 0)\n const base = [2, 8, 10, 16, 16]['bouxX'.indexOf(modifier)]\n const prefix = intVal && flags.includes('#') ? ['', '0', '', '0x', '0X']['bouxXX'.indexOf(modifier)] : ''\n\n if (padChar === '0' && prefix) {\n return prefix + pad(pad(intVal.toString(base), precision, '0', false), minWidth - prefix.length, padChar, leftJustify)\n }\n\n return pad(prefix + pad(intVal.toString(base), precision, '0', false), minWidth, padChar, leftJustify)\n }\n case 'p':\n case 'n': {\n throw Error(`'${modifier}' modifier not supported`)\n }\n case 's': {\n return pad(String(arg).substr(0, precision), minWidth, padChar, leftJustify)\n }\n case 'c': {\n // extension, if arg is string, take first char\n const chr = typeof arg === 'string' ? arg.charAt(0) : String.fromCharCode(+arg)\n return pad(chr, minWidth, padChar, leftJustify)\n }\n case 'a':\n case 'A':\n throw Error(`'${modifier}' modifier not yet implemented`)\n default:\n // for unknown modifiers, return the modifier char\n return modifier\n }\n })\n}\n"]}
1
+ {"version":3,"sources":["../../../src/c/stdio/sprintf.js"],"names":["pad","str","minLength","padChar","leftJustify","diff","length","padStr","repeat","Math","max","module","exports","sprintf","format","args","placeholderRegex","index","replace","match","param","flags","width","prec","modifier","includes","split","reduce","pc","c","positiveSign","minWidth","precision","Error","arg","undefined","isNaN","String","number","trunc","abs","prefix","toString","op","Number","prototype","toExponential","toFixed","toPrecision","indexOf","toLowerCase","tr","toUpperCase","isSpecial","isFinite","substr","call","intVal","base","chr","charAt","fromCharCode"],"mappings":"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","file":"sprintf.js","sourcesContent":["function pad(str, minLength, padChar, leftJustify) {\n const diff = minLength - str.length\n const padStr = padChar.repeat(Math.max(0, diff))\n\n return leftJustify ? str + padStr : padStr + str\n}\n\nmodule.exports = function sprintf(format, ...args) {\n // original by: Rafał Kukawski\n // bugfixed by: Param Siddharth\n // example 1: sprintf('%+10.*d', 5, 1)\n // returns 1: ' +00001'\n // example 2: sprintf('%s is a %d%% %s %s.', 'Param', 90, 'good', 'boy')\n // returns 2: 'Param is a 90% good boy.'\n const placeholderRegex = /%(?:(\\d+)\\$)?([-+#0 ]*)(\\*|\\d+)?(?:\\.(\\*|\\d*))?([\\s\\S])/g\n\n let index = 0\n\n return format.replace(placeholderRegex, function (match, param, flags, width, prec, modifier) {\n const leftJustify = flags.includes('-')\n\n // flag '0' is ignored when flag '-' is present\n const padChar = leftJustify ? ' ' : flags.split('').reduce((pc, c) => ([' ', '0'].includes(c) ? c : pc), ' ')\n\n const positiveSign = flags.includes('+') ? '+' : flags.includes(' ') ? ' ' : ''\n\n const minWidth = width === '*' ? args[index++] : +width || 0\n let precision = prec === '*' ? args[index++] : +prec\n\n if (param && !+param) {\n throw Error('Param index must be greater than 0')\n }\n\n if (param && +param > args.length) {\n throw Error('Too few arguments')\n }\n\n // compiling with default clang params, mixed positional and non-positional params\n // give only a warning\n const arg = param ? args[param - 1] : args[index]\n\n if (modifier !== '%') {\n index++\n }\n\n if (precision === undefined || isNaN(precision)) {\n precision = 'eEfFgG'.includes(modifier) ? 6 : modifier === 's' ? String(arg).length : undefined\n }\n\n switch (modifier) {\n case '%':\n return '%'\n case 'd':\n case 'i': {\n const number = Math.trunc(+arg || 0)\n const abs = Math.abs(number)\n const prefix = number < 0 ? '-' : positiveSign\n\n const str = pad(abs.toString(), precision || 0, '0', false)\n\n if (padChar === '0') {\n return prefix + pad(str, minWidth - prefix.length, padChar, leftJustify)\n }\n\n return pad(prefix + str, minWidth, padChar, leftJustify)\n }\n case 'e':\n case 'E':\n case 'f':\n case 'F':\n case 'g':\n case 'G': {\n const number = +arg\n const abs = Math.abs(number)\n const prefix = number < 0 ? '-' : positiveSign\n\n const op = [Number.prototype.toExponential, Number.prototype.toFixed, Number.prototype.toPrecision][\n 'efg'.indexOf(modifier.toLowerCase())\n ]\n\n const tr = [String.prototype.toLowerCase, String.prototype.toUpperCase]['eEfFgG'.indexOf(modifier) % 2]\n\n const isSpecial = isNaN(abs) || !isFinite(abs)\n\n const str = isSpecial ? abs.toString().substr(0, 3) : op.call(abs, precision)\n\n if (padChar === '0' && !isSpecial) {\n return prefix + pad(tr.call(str), minWidth - prefix.length, padChar, leftJustify)\n }\n\n return pad(tr.call(prefix + str), minWidth, isSpecial ? ' ' : padChar, leftJustify)\n }\n case 'b':\n case 'o':\n case 'u':\n case 'x':\n case 'X': {\n const number = +arg || 0\n const intVal = Math.trunc(number) + (number < 0 ? 0xffffffff + 1 : 0)\n const base = [2, 8, 10, 16, 16]['bouxX'.indexOf(modifier)]\n const prefix = intVal && flags.includes('#') ? ['', '0', '', '0x', '0X']['bouxXX'.indexOf(modifier)] : ''\n\n if (padChar === '0' && prefix) {\n return (\n prefix +\n pad(pad(intVal.toString(base), precision, '0', false), minWidth - prefix.length, padChar, leftJustify)\n )\n }\n\n return pad(prefix + pad(intVal.toString(base), precision, '0', false), minWidth, padChar, leftJustify)\n }\n case 'p':\n case 'n': {\n throw Error(`'${modifier}' modifier not supported`)\n }\n case 's': {\n return pad(String(arg).substr(0, precision), minWidth, padChar, leftJustify)\n }\n case 'c': {\n // extension, if arg is string, take first char\n const chr = typeof arg === 'string' ? arg.charAt(0) : String.fromCharCode(+arg)\n return pad(chr, minWidth, padChar, leftJustify)\n }\n case 'a':\n case 'A':\n throw Error(`'${modifier}' modifier not yet implemented`)\n default:\n // for unknown modifiers, return the modifier char\n return modifier\n }\n })\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/golang/strings/Contains.js"],"names":["module","exports","Contains","s","substr","indexOf"],"mappings":";;AAAAA,OAAOC,OAAP,GAAiB,SAASC,QAAT,CAAmBC,CAAnB,EAAsBC,MAAtB,EAA8B;AAC7C;AACA;AACA;AACA;;AAEA,SAAO,CAACD,IAAI,EAAL,EAASE,OAAT,CAAiBD,MAAjB,MAA6B,CAAC,CAArC;AACD,CAPD","file":"Contains.js","sourcesContent":["module.exports = function Contains (s, substr) {\n // discuss at: https://locutus.io/golang/strings/Contains\n // original by: Kevin van Zonneveld (https://kvz.io)\n // example 1: Contains('Kevin', 'K')\n // returns 1: true\n\n return (s + '').indexOf(substr) !== -1\n}\n"]}
1
+ {"version":3,"sources":["../../../src/golang/strings/Contains.js"],"names":["module","exports","Contains","s","substr","indexOf"],"mappings":";;AAAAA,OAAOC,OAAP,GAAiB,SAASC,QAAT,CAAkBC,CAAlB,EAAqBC,MAArB,EAA6B;AAC5C;AACA;AACA;AACA;;AAEA,SAAO,CAACD,IAAI,EAAL,EAASE,OAAT,CAAiBD,MAAjB,MAA6B,CAAC,CAArC;AACD,CAPD","file":"Contains.js","sourcesContent":["module.exports = function Contains(s, substr) {\n // discuss at: https://locutus.io/golang/strings/Contains\n // original by: Kevin van Zonneveld (https://kvz.io)\n // example 1: Contains('Kevin', 'K')\n // returns 1: true\n\n return (s + '').indexOf(substr) !== -1\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/golang/strings/Count.js"],"names":["module","exports","Count","s","sep","pos","n","length","split","indexOf","substring"],"mappings":";;AAAAA,OAAOC,OAAP,GAAiB,SAASC,KAAT,CAAgBC,CAAhB,EAAmBC,GAAnB,EAAwB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAIC,YAAJ;AACA,MAAIC,IAAI,CAAR;;AAEA,MAAKF,IAAIG,MAAJ,KAAe,CAApB,EAAwB;AACtB,WAAOJ,EAAEK,KAAF,CAAQJ,GAAR,EAAaG,MAAb,GAAsB,CAA7B;AACD,GAFD,MAEO,IAAIH,IAAIG,MAAJ,GAAaJ,EAAEI,MAAnB,EAA2B;AAChC,WAAO,CAAP;AACD,GAFM,MAEA,IAAKH,IAAIG,MAAJ,KAAeJ,EAAEI,MAAtB,EAA+B;AACpC,QAAIH,QAAQD,CAAZ,EAAe;AACb,aAAO,CAAP;AACD;AACD,WAAO,CAAP;AACD;AACD,SAAO,IAAP,EAAa;AACXE,UAAM,CAACF,IAAI,EAAL,EAASM,OAAT,CAAiBL,GAAjB,CAAN;AACA,QAAIC,QAAQ,CAAC,CAAb,EAAgB;AACd;AACD;AACDC,QAAIA,IAAK,CAAL,IAAW,CAAf;AACAH,QAAIA,EAAEO,SAAF,CAAaL,MAAMD,IAAIG,MAAV,IAAoB,CAAjC,CAAJ;AACD;AACD,SAAOD,CAAP;AACD,CA/BD","file":"Count.js","sourcesContent":["module.exports = function Count (s, sep) {\n // discuss at: https://locutus.io/php/printf/\n // original by: Kevin van Zonneveld (https://kvz.io)\n // input by: GopherJS (https://www.gopherjs.org/)\n // example 1: Count(\"cheese\", \"e\")\n // returns 1: 3\n // example 2: Count(\"five\", \"\") // before & after each rune\n // returns 2: 5\n\n let pos\n let n = 0\n\n if ((sep.length === 0)) {\n return s.split(sep).length + 1\n } else if (sep.length > s.length) {\n return 0\n } else if ((sep.length === s.length)) {\n if (sep === s) {\n return 1\n }\n return 0\n }\n while (true) {\n pos = (s + '').indexOf(sep)\n if (pos === -1) {\n break\n }\n n = n + (1) >> 0\n s = s.substring((pos + sep.length >> 0))\n }\n return n\n}\n"]}
1
+ {"version":3,"sources":["../../../src/golang/strings/Count.js"],"names":["module","exports","Count","s","sep","pos","n","length","split","indexOf","substring"],"mappings":";;AAAAA,OAAOC,OAAP,GAAiB,SAASC,KAAT,CAAeC,CAAf,EAAkBC,GAAlB,EAAuB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAIC,YAAJ;AACA,MAAIC,IAAI,CAAR;;AAEA,MAAIF,IAAIG,MAAJ,KAAe,CAAnB,EAAsB;AACpB,WAAOJ,EAAEK,KAAF,CAAQJ,GAAR,EAAaG,MAAb,GAAsB,CAA7B;AACD,GAFD,MAEO,IAAIH,IAAIG,MAAJ,GAAaJ,EAAEI,MAAnB,EAA2B;AAChC,WAAO,CAAP;AACD,GAFM,MAEA,IAAIH,IAAIG,MAAJ,KAAeJ,EAAEI,MAArB,EAA6B;AAClC,QAAIH,QAAQD,CAAZ,EAAe;AACb,aAAO,CAAP;AACD;AACD,WAAO,CAAP;AACD;AACD,SAAO,IAAP,EAAa;AACXE,UAAM,CAACF,IAAI,EAAL,EAASM,OAAT,CAAiBL,GAAjB,CAAN;AACA,QAAIC,QAAQ,CAAC,CAAb,EAAgB;AACd;AACD;AACDC,QAAKA,IAAI,CAAL,IAAW,CAAf;AACAH,QAAIA,EAAEO,SAAF,CAAaL,MAAMD,IAAIG,MAAX,IAAsB,CAAlC,CAAJ;AACD;AACD,SAAOD,CAAP;AACD,CA/BD","file":"Count.js","sourcesContent":["module.exports = function Count(s, sep) {\n // discuss at: https://locutus.io/php/printf/\n // original by: Kevin van Zonneveld (https://kvz.io)\n // input by: GopherJS (https://www.gopherjs.org/)\n // example 1: Count(\"cheese\", \"e\")\n // returns 1: 3\n // example 2: Count(\"five\", \"\") // before & after each rune\n // returns 2: 5\n\n let pos\n let n = 0\n\n if (sep.length === 0) {\n return s.split(sep).length + 1\n } else if (sep.length > s.length) {\n return 0\n } else if (sep.length === s.length) {\n if (sep === s) {\n return 1\n }\n return 0\n }\n while (true) {\n pos = (s + '').indexOf(sep)\n if (pos === -1) {\n break\n }\n n = (n + 1) >> 0\n s = s.substring((pos + sep.length) >> 0)\n }\n return n\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/golang/strings/Index2.js"],"names":["module","exports","Index","s","sep","indexOf"],"mappings":";;AAAAA,OAAOC,OAAP,GAAiB,SAASC,KAAT,CAAgBC,CAAhB,EAAmBC,GAAnB,EAAwB;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAO,CAACD,IAAI,EAAL,EAASE,OAAT,CAAiBD,GAAjB,CAAP;AACD,CATD","file":"Index2.js","sourcesContent":["module.exports = function Index (s, sep) {\n // discuss at: https://locutus.io/golang/strings/Index\n // original by: Kevin van Zonneveld (https://kvz.io)\n // example 1: Index('Kevin', 'K')\n // returns 1: 0\n // example 2: Index('Kevin', 'Z')\n // returns 2: -1\n\n return (s + '').indexOf(sep)\n}\n"]}
1
+ {"version":3,"sources":["../../../src/golang/strings/Index2.js"],"names":["module","exports","Index","s","sep","indexOf"],"mappings":";;AAAAA,OAAOC,OAAP,GAAiB,SAASC,KAAT,CAAeC,CAAf,EAAkBC,GAAlB,EAAuB;AACtC;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAO,CAACD,IAAI,EAAL,EAASE,OAAT,CAAiBD,GAAjB,CAAP;AACD,CATD","file":"Index2.js","sourcesContent":["module.exports = function Index(s, sep) {\n // discuss at: https://locutus.io/golang/strings/Index\n // original by: Kevin van Zonneveld (https://kvz.io)\n // example 1: Index('Kevin', 'K')\n // returns 1: 0\n // example 2: Index('Kevin', 'Z')\n // returns 2: -1\n\n return (s + '').indexOf(sep)\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/golang/strings/LastIndex.js"],"names":["module","exports","LastIndex","s","sep","parseInt","lastIndexOf"],"mappings":";;AAAAA,OAAOC,OAAP,GAAiB,SAASC,SAAT,CAAoBC,CAApB,EAAuBC,GAAvB,EAA4B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAOC,SAASF,EAAEG,WAAF,CAAcF,GAAd,CAAT,EAA6B,EAA7B,KAAoC,CAA3C;AACD,CAVD","file":"LastIndex.js","sourcesContent":["module.exports = function LastIndex (s, sep) {\n // discuss at: https://locutus.io/golang/strings/LastIndex\n // original by: Kevin van Zonneveld (https://kvz.io)\n // input by: GopherJS (https://www.gopherjs.org/)\n // example 1: LastIndex('go gopher', 'go')\n // returns 1: 3\n // example 2: LastIndex('go gopher', 'rodent')\n // returns 2: -1\n\n return parseInt(s.lastIndexOf(sep), 10) >> 0\n}\n"]}
1
+ {"version":3,"sources":["../../../src/golang/strings/LastIndex.js"],"names":["module","exports","LastIndex","s","sep","parseInt","lastIndexOf"],"mappings":";;AAAAA,OAAOC,OAAP,GAAiB,SAASC,SAAT,CAAmBC,CAAnB,EAAsBC,GAAtB,EAA2B;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAOC,SAASF,EAAEG,WAAF,CAAcF,GAAd,CAAT,EAA6B,EAA7B,KAAoC,CAA3C;AACD,CAVD","file":"LastIndex.js","sourcesContent":["module.exports = function LastIndex(s, sep) {\n // discuss at: https://locutus.io/golang/strings/LastIndex\n // original by: Kevin van Zonneveld (https://kvz.io)\n // input by: GopherJS (https://www.gopherjs.org/)\n // example 1: LastIndex('go gopher', 'go')\n // returns 1: 3\n // example 2: LastIndex('go gopher', 'rodent')\n // returns 2: -1\n\n return parseInt(s.lastIndexOf(sep), 10) >> 0\n}\n"]}