locutus 2.0.16 → 2.0.30

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 +24 -24
  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 +65 -60
  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
@@ -7,10 +7,10 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
7
7
  var globby = require('globby');
8
8
  var path = require('path');
9
9
  var fs = require('fs');
10
+ var fsPromises = fs.promises;
10
11
  var async = require('async');
11
12
  var YAML = require('js-yaml');
12
- var mkdirp = require('mkdirp');
13
- var debug = require('depurar')('locutus');
13
+ var debug = require('debug')('locutus:utils');
14
14
  var indentString = require('indent-string');
15
15
  var _ = require('lodash');
16
16
  var esprima = require('esprima');
@@ -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
  }
@@ -187,31 +187,31 @@ var Util = function () {
187
187
  langTitle += ' in JavaScript';
188
188
 
189
189
  var langData = Object.assign({}, this.langDefaults[params.language], {
190
- warning: 'This file is auto generated by `npm run web:inject`, do not edit by hand',
190
+ warning: 'This file is auto generated by `yarn web:inject`, do not edit by hand',
191
191
  type: 'language',
192
192
  layout: 'language',
193
193
  language: params.language,
194
194
  title: langTitle
195
195
  });
196
- this._injectwebBuffer[langIndexPath] = '---' + '\n' + YAML.safeDump(langData).trim() + '\n' + '---' + '\n';
196
+ this._injectwebBuffer[langIndexPath] = '---' + '\n' + YAML.dump(langData).trim() + '\n' + '---' + '\n';
197
197
  }
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';
205
205
 
206
206
  var catData = {
207
- warning: 'This file is auto generated by `npm run web:inject`, do not edit by hand',
207
+ warning: 'This file is auto generated by `yarn web:inject`, do not edit by hand',
208
208
  type: 'category',
209
209
  layout: 'category',
210
210
  language: params.language,
211
211
  category: params.category,
212
212
  title: catTitle
213
213
  };
214
- this._injectwebBuffer[catIndexPath] = '---' + '\n' + YAML.safeDump(catData).trim() + '\n' + '---' + '\n';
214
+ this._injectwebBuffer[catIndexPath] = '---' + '\n' + YAML.dump(catData).trim() + '\n' + '---' + '\n';
215
215
  }
216
216
 
217
217
  var functionTitle = this.langDefaults[params.language].function_title_template.replace(/\[language]/g, this.langDefaults[params.language].human).replace(/\[category]/g, params.category).replace(/\[function]/g, params.func_name).replace(/\[functiondashed]/g, params.func_name.replace(/_/g, '-'));
@@ -219,7 +219,7 @@ var Util = function () {
219
219
  var functionDescription = this.langDefaults[params.language].function_description_template.replace(/\[language]/g, this.langDefaults[params.language].human).replace(/\[category]/g, params.category).replace(/\[function]/g, params.func_name).replace(/\[functiondashed]/g, params.func_name.replace(/_/g, '-'));
220
220
 
221
221
  var funcData = {
222
- warning: 'This file is auto generated by `npm run web:inject`, do not edit by hand',
222
+ warning: 'This file is auto generated by `yarn web:inject`, do not edit by hand',
223
223
  examples: (params.headKeys.example || []).map(function (lines, i) {
224
224
  return lines.join('\n');
225
225
  }),
@@ -246,11 +246,11 @@ var Util = function () {
246
246
  funcData.alias.push('/functions/' + params.func_name + '/');
247
247
  }
248
248
 
249
- var buf = '---' + '\n' + YAML.safeDump(funcData).trim() + '\n' + '---' + '\n';
249
+ var buf = '---' + '\n' + YAML.dump(funcData).trim() + '\n' + '---' + '\n';
250
250
 
251
251
  buf += '{% codeblock lang:javascript %}' + params.code + '{% endcodeblock %}';
252
252
 
253
- mkdirp(path.dirname(funcPath)).then(function () {
253
+ fsPromises.mkdir(path.dirname(funcPath), { recursive: true }).then(function () {
254
254
  fs.writeFile(funcPath, buf, 'utf-8', cb);
255
255
  }, function (err) {
256
256
  throw new Error('Could not mkdir for ' + funcPath + '. ' + err);
@@ -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',
@@ -298,7 +298,7 @@ var Util = function () {
298
298
 
299
299
  var codez = [];
300
300
 
301
- codez.push('// warning: This file is auto generated by `npm run build:tests`');
301
+ codez.push('// warning: This file is auto generated by `yarn build:tests`');
302
302
  codez.push('// Do not edit by hand!');
303
303
 
304
304
  // Add globals
@@ -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
 
@@ -377,7 +377,7 @@ var Util = function () {
377
377
  var code = codez.join('\n');
378
378
 
379
379
  // Write to disk
380
- mkdirp(testdir).then(function () {
380
+ fsPromises.mkdir(testdir, { recursive: true }).then(function () {
381
381
  debug('writing: ' + testpath);
382
382
  fs.writeFile(testpath, code, 'utf-8', cb);
383
383
  }, function (err) {
@@ -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","fsPromises","promises","async","YAML","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","dump","trim","catTitle","catData","functionTitle","replace","functionDescription","funcData","examples","example","map","lines","i","returns","dependencies","notes","note","description","function","permalink","buf","code","mkdir","recursive","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 fsPromises = fs.promises\nconst async = require('async')\nconst YAML = require('js-yaml')\nconst debug = require('debug')('locutus:utils')\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 `yarn 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.dump(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 `yarn 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.dump(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 `yarn 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.dump(funcData).trim() + '\\n' + '---' + '\\n'\n\n buf += `{% codeblock lang:javascript %}${params.code}{% endcodeblock %}`\n\n fsPromises.mkdir(path.dirname(funcPath), { recursive: true }).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 `yarn 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 fsPromises.mkdir(testdir, { recursive: true }).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"]}