locutus 2.0.31 → 2.0.34

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 (879) hide show
  1. package/README.md +84 -0
  2. package/_data/rosetta.yml +325 -0
  3. package/awk/builtin/index.js +3 -0
  4. package/awk/builtin/int.js +13 -0
  5. package/awk/builtin/length.js +16 -0
  6. package/awk/builtin/substr.js +23 -0
  7. package/c/ctype/index.js +8 -0
  8. package/c/ctype/isalnum.js +15 -0
  9. package/c/ctype/isalpha.js +17 -0
  10. package/c/ctype/isdigit.js +15 -0
  11. package/c/ctype/islower.js +15 -0
  12. package/c/ctype/isspace.js +15 -0
  13. package/c/ctype/isupper.js +15 -0
  14. package/c/ctype/tolower.js +15 -0
  15. package/c/ctype/toupper.js +15 -0
  16. package/c/index.js +2 -5
  17. package/c/math/abs.js +14 -18
  18. package/c/math/frexp.js +19 -20
  19. package/c/math/index.js +2 -5
  20. package/c/stdio/index.js +1 -4
  21. package/c/stdio/sprintf.js +71 -81
  22. package/c/stdlib/atof.js +15 -0
  23. package/c/stdlib/atoi.js +17 -0
  24. package/c/stdlib/index.js +2 -0
  25. package/c/string/index.js +5 -0
  26. package/c/string/strcat.js +12 -0
  27. package/c/string/strchr.js +15 -0
  28. package/c/string/strcmp.js +21 -0
  29. package/c/string/strlen.js +12 -0
  30. package/c/string/strstr.js +15 -0
  31. package/clojure/Math/abs.js +13 -0
  32. package/clojure/Math/ceil.js +15 -0
  33. package/clojure/Math/floor.js +14 -0
  34. package/clojure/Math/index.js +3 -0
  35. package/elixir/Float/ceil.js +16 -0
  36. package/elixir/Float/floor.js +14 -0
  37. package/elixir/Float/index.js +2 -0
  38. package/elixir/Kernel/abs.js +13 -0
  39. package/elixir/Kernel/index.js +1 -0
  40. package/golang/index.js +1 -4
  41. package/golang/strconv/Atoi.js +26 -0
  42. package/golang/strconv/FormatBool.js +12 -0
  43. package/golang/strconv/FormatInt.js +21 -0
  44. package/golang/strconv/Itoa.js +14 -0
  45. package/golang/strconv/ParseBool.js +35 -0
  46. package/golang/strconv/ParseInt.js +27 -0
  47. package/golang/strconv/index.js +6 -0
  48. package/golang/strings/Compare.js +19 -0
  49. package/golang/strings/Contains.js +7 -9
  50. package/golang/strings/ContainsAny.js +18 -0
  51. package/golang/strings/Count.js +20 -22
  52. package/golang/strings/EqualFold.js +13 -0
  53. package/golang/strings/Fields.js +12 -0
  54. package/golang/strings/HasPrefix.js +15 -0
  55. package/golang/strings/HasSuffix.js +20 -0
  56. package/golang/strings/Index.js +11 -0
  57. package/golang/strings/Index2.js +9 -11
  58. package/golang/strings/IndexAny.js +18 -0
  59. package/golang/strings/Join.js +16 -0
  60. package/golang/strings/LastIndex.js +10 -12
  61. package/golang/strings/LastIndexAny.js +18 -0
  62. package/golang/strings/Repeat.js +19 -0
  63. package/golang/strings/Replace.js +44 -0
  64. package/golang/strings/Split.js +24 -0
  65. package/golang/strings/ToLower.js +9 -0
  66. package/golang/strings/ToUpper.js +9 -0
  67. package/golang/strings/Trim.js +19 -0
  68. package/golang/strings/TrimLeft.js +15 -0
  69. package/golang/strings/TrimPrefix.js +14 -0
  70. package/golang/strings/TrimRight.js +15 -0
  71. package/golang/strings/TrimSpace.js +10 -0
  72. package/golang/strings/TrimSuffix.js +14 -0
  73. package/golang/strings/index.js +25 -7
  74. package/index.js +5 -8
  75. package/julia/Base/abs.js +13 -0
  76. package/julia/Base/ceil.js +16 -0
  77. package/julia/Base/floor.js +14 -0
  78. package/julia/Base/index.js +3 -0
  79. package/lua/math/abs.js +13 -0
  80. package/lua/math/ceil.js +16 -0
  81. package/lua/math/floor.js +14 -0
  82. package/lua/math/index.js +3 -0
  83. package/package.json +37 -51
  84. package/perl/POSIX/ceil.js +16 -0
  85. package/perl/POSIX/floor.js +14 -0
  86. package/perl/POSIX/index.js +2 -0
  87. package/perl/core/index.js +1 -0
  88. package/perl/core/length.js +16 -0
  89. package/php/_helpers/_bc.js +524 -515
  90. package/php/_helpers/_phpCastString.js +20 -25
  91. package/php/_helpers/_php_cast_float.js +5 -10
  92. package/php/_helpers/_php_cast_int.js +6 -11
  93. package/php/_helpers/index.js +4 -7
  94. package/php/array/array_change_key_case.js +11 -16
  95. package/php/array/array_chunk.js +20 -23
  96. package/php/array/array_column.js +22 -72
  97. package/php/array/array_combine.js +13 -18
  98. package/php/array/array_count_values.js +35 -39
  99. package/php/array/array_diff.js +11 -14
  100. package/php/array/array_diff_assoc.js +11 -14
  101. package/php/array/array_diff_key.js +11 -14
  102. package/php/array/array_diff_uassoc.js +15 -19
  103. package/php/array/array_diff_ukey.js +14 -17
  104. package/php/array/array_fill.js +11 -13
  105. package/php/array/array_fill_keys.js +5 -8
  106. package/php/array/array_filter.js +12 -13
  107. package/php/array/array_flip.js +13 -15
  108. package/php/array/array_intersect.js +13 -16
  109. package/php/array/array_intersect_assoc.js +13 -16
  110. package/php/array/array_intersect_key.js +15 -18
  111. package/php/array/array_intersect_uassoc.js +17 -20
  112. package/php/array/array_intersect_ukey.js +17 -20
  113. package/php/array/array_key_exists.js +4 -7
  114. package/php/array/array_keys.js +22 -24
  115. package/php/array/array_map.js +24 -29
  116. package/php/array/array_merge.js +22 -25
  117. package/php/array/array_merge_recursive.js +51 -27
  118. package/php/array/array_multisort.js +138 -130
  119. package/php/array/array_pad.js +24 -26
  120. package/php/array/array_pop.js +10 -13
  121. package/php/array/array_product.js +15 -17
  122. package/php/array/array_push.js +16 -19
  123. package/php/array/array_rand.js +11 -14
  124. package/php/array/array_reduce.js +11 -14
  125. package/php/array/array_replace.js +9 -12
  126. package/php/array/array_replace_recursive.js +20 -24
  127. package/php/array/array_reverse.js +12 -15
  128. package/php/array/array_search.js +27 -29
  129. package/php/array/array_shift.js +3 -6
  130. package/php/array/array_slice.js +37 -39
  131. package/php/array/array_splice.js +64 -69
  132. package/php/array/array_sum.js +7 -12
  133. package/php/array/array_udiff.js +14 -17
  134. package/php/array/array_udiff_assoc.js +14 -17
  135. package/php/array/array_udiff_uassoc.js +17 -20
  136. package/php/array/array_uintersect.js +16 -19
  137. package/php/array/array_uintersect_uassoc.js +18 -21
  138. package/php/array/array_unique.js +12 -15
  139. package/php/array/array_unshift.js +4 -7
  140. package/php/array/array_values.js +11 -13
  141. package/php/array/array_walk.js +10 -15
  142. package/php/array/array_walk_recursive.js +15 -20
  143. package/php/array/arsort.js +50 -52
  144. package/php/array/asort.js +50 -51
  145. package/php/array/count.js +15 -14
  146. package/php/array/current.js +30 -32
  147. package/php/array/each.js +32 -35
  148. package/php/array/end.js +27 -30
  149. package/php/array/in_array.js +7 -10
  150. package/php/array/index.js +73 -76
  151. package/php/array/key.js +32 -34
  152. package/php/array/krsort.js +50 -51
  153. package/php/array/ksort.js +50 -51
  154. package/php/array/natcasesort.js +37 -38
  155. package/php/array/natsort.js +35 -36
  156. package/php/array/next.js +34 -36
  157. package/php/array/pos.js +10 -12
  158. package/php/array/prev.js +32 -34
  159. package/php/array/range.js +30 -33
  160. package/php/array/reset.js +24 -27
  161. package/php/array/rsort.js +47 -49
  162. package/php/array/shuffle.js +16 -18
  163. package/php/array/sizeof.js +3 -6
  164. package/php/array/sort.js +43 -45
  165. package/php/array/uasort.js +19 -21
  166. package/php/array/uksort.js +22 -24
  167. package/php/array/usort.js +20 -22
  168. package/php/bc/bcadd.js +16 -19
  169. package/php/bc/bccomp.js +12 -15
  170. package/php/bc/bcdiv.js +17 -20
  171. package/php/bc/bcmul.js +16 -19
  172. package/php/bc/bcround.js +21 -24
  173. package/php/bc/bcscale.js +8 -11
  174. package/php/bc/bcsub.js +16 -19
  175. package/php/bc/index.js +7 -10
  176. package/php/ctype/ctype_alnum.js +14 -16
  177. package/php/ctype/ctype_alpha.js +14 -16
  178. package/php/ctype/ctype_cntrl.js +9 -12
  179. package/php/ctype/ctype_digit.js +14 -16
  180. package/php/ctype/ctype_graph.js +14 -16
  181. package/php/ctype/ctype_lower.js +14 -16
  182. package/php/ctype/ctype_print.js +14 -16
  183. package/php/ctype/ctype_punct.js +14 -16
  184. package/php/ctype/ctype_space.js +9 -12
  185. package/php/ctype/ctype_upper.js +14 -16
  186. package/php/ctype/ctype_xdigit.js +14 -16
  187. package/php/ctype/index.js +11 -14
  188. package/php/datetime/checkdate.js +15 -17
  189. package/php/datetime/date.js +142 -123
  190. package/php/datetime/date_parse.js +18 -21
  191. package/php/datetime/getdate.js +38 -24
  192. package/php/datetime/gettimeofday.js +7 -10
  193. package/php/datetime/gmdate.js +17 -16
  194. package/php/datetime/gmmktime.js +23 -25
  195. package/php/datetime/gmstrftime.js +17 -14
  196. package/php/datetime/idate.js +44 -38
  197. package/php/datetime/index.js +15 -18
  198. package/php/datetime/microtime.js +11 -14
  199. package/php/datetime/mktime.js +14 -17
  200. package/php/datetime/strftime.js +122 -113
  201. package/php/datetime/strptime.js +210 -191
  202. package/php/datetime/strtotime.js +615 -496
  203. package/php/datetime/time.js +11 -13
  204. package/php/exec/escapeshellarg.js +16 -18
  205. package/php/exec/index.js +1 -4
  206. package/php/filesystem/basename.js +22 -24
  207. package/php/filesystem/dirname.js +12 -14
  208. package/php/filesystem/file_exists.js +12 -0
  209. package/php/filesystem/file_get_contents.js +3 -6
  210. package/php/filesystem/index.js +6 -8
  211. package/php/filesystem/pathinfo.js +47 -46
  212. package/php/filesystem/realpath.js +16 -19
  213. package/php/funchand/call_user_func.js +4 -7
  214. package/php/funchand/call_user_func_array.js +19 -22
  215. package/php/funchand/create_function.js +4 -7
  216. package/php/funchand/function_exists.js +4 -8
  217. package/php/funchand/get_defined_functions.js +25 -32
  218. package/php/funchand/index.js +5 -8
  219. package/php/i18n/i18n_loc_get_default.js +7 -10
  220. package/php/i18n/i18n_loc_set_default.js +12 -15
  221. package/php/i18n/index.js +2 -5
  222. package/php/index.js +20 -23
  223. package/php/info/assert_options.js +25 -27
  224. package/php/info/getenv.js +8 -10
  225. package/php/info/index.js +6 -9
  226. package/php/info/ini_get.js +9 -12
  227. package/php/info/ini_set.js +32 -34
  228. package/php/info/set_time_limit.js +8 -11
  229. package/php/info/version_compare.js +43 -44
  230. package/php/json/index.js +3 -6
  231. package/php/json/json_decode.js +42 -28
  232. package/php/json/json_encode.js +89 -66
  233. package/php/json/json_last_error.js +11 -13
  234. package/php/math/abs.js +2 -5
  235. package/php/math/acos.js +2 -5
  236. package/php/math/acosh.js +7 -9
  237. package/php/math/asin.js +2 -5
  238. package/php/math/asinh.js +7 -9
  239. package/php/math/atan.js +7 -9
  240. package/php/math/atan2.js +7 -9
  241. package/php/math/atanh.js +2 -5
  242. package/php/math/base_convert.js +8 -10
  243. package/php/math/bindec.js +12 -14
  244. package/php/math/ceil.js +7 -9
  245. package/php/math/cos.js +7 -9
  246. package/php/math/cosh.js +7 -9
  247. package/php/math/decbin.js +16 -18
  248. package/php/math/dechex.js +3 -6
  249. package/php/math/decoct.js +13 -15
  250. package/php/math/deg2rad.js +8 -10
  251. package/php/math/exp.js +7 -9
  252. package/php/math/expm1.js +9 -11
  253. package/php/math/floor.js +7 -9
  254. package/php/math/fmod.js +27 -29
  255. package/php/math/getrandmax.js +7 -9
  256. package/php/math/hexdec.js +10 -12
  257. package/php/math/hypot.js +8 -11
  258. package/php/math/index.js +46 -49
  259. package/php/math/is_finite.js +9 -14
  260. package/php/math/is_infinite.js +9 -14
  261. package/php/math/is_nan.js +8 -13
  262. package/php/math/lcg_value.js +8 -10
  263. package/php/math/log.js +8 -10
  264. package/php/math/log10.js +12 -14
  265. package/php/math/log1p.js +15 -17
  266. package/php/math/max.js +54 -59
  267. package/php/math/min.js +54 -59
  268. package/php/math/mt_getrandmax.js +7 -9
  269. package/php/math/mt_rand.js +15 -17
  270. package/php/math/octdec.js +8 -10
  271. package/php/math/pi.js +2 -5
  272. package/php/math/pow.js +2 -5
  273. package/php/math/rad2deg.js +8 -10
  274. package/php/math/rand.js +15 -17
  275. package/php/math/round.js +48 -49
  276. package/php/math/sin.js +7 -9
  277. package/php/math/sinh.js +7 -9
  278. package/php/math/sqrt.js +7 -9
  279. package/php/math/tan.js +7 -9
  280. package/php/math/tanh.js +8 -10
  281. package/php/misc/index.js +2 -5
  282. package/php/misc/pack.js +173 -165
  283. package/php/misc/uniqid.js +20 -23
  284. package/php/net-gopher/gopher_parsedir.js +27 -29
  285. package/php/net-gopher/index.js +1 -4
  286. package/php/network/index.js +6 -9
  287. package/php/network/inet_ntop.js +15 -15
  288. package/php/network/inet_pton.js +30 -34
  289. package/php/network/ip2long.js +25 -15
  290. package/php/network/long2ip.js +8 -10
  291. package/php/network/setcookie.js +11 -13
  292. package/php/network/setrawcookie.js +16 -19
  293. package/php/pcre/index.js +4 -7
  294. package/php/pcre/preg_match.js +3 -6
  295. package/php/pcre/preg_quote.js +2 -5
  296. package/php/pcre/preg_replace.js +8 -11
  297. package/php/pcre/sql_regcase.js +17 -20
  298. package/php/strings/addcslashes.js +86 -88
  299. package/php/strings/addslashes.js +15 -16
  300. package/php/strings/bin2hex.js +19 -43
  301. package/php/strings/chop.js +8 -10
  302. package/php/strings/chr.js +12 -14
  303. package/php/strings/chunk_split.js +15 -17
  304. package/php/strings/convert_cyr_string.js +137 -50
  305. package/php/strings/convert_uuencode.js +35 -38
  306. package/php/strings/count_chars.js +29 -27
  307. package/php/strings/crc32.js +276 -21
  308. package/php/strings/echo.js +28 -30
  309. package/php/strings/explode.js +31 -26
  310. package/php/strings/get_html_translation_table.js +123 -122
  311. package/php/strings/hex2bin.js +21 -21
  312. package/php/strings/html_entity_decode.js +31 -33
  313. package/php/strings/htmlentities.js +38 -34
  314. package/php/strings/htmlspecialchars.js +20 -23
  315. package/php/strings/htmlspecialchars_decode.js +19 -21
  316. package/php/strings/implode.js +23 -27
  317. package/php/strings/index.js +91 -94
  318. package/php/strings/join.js +8 -10
  319. package/php/strings/lcfirst.js +9 -11
  320. package/php/strings/levenshtein.js +37 -39
  321. package/php/strings/localeconv.js +12 -15
  322. package/php/strings/ltrim.js +12 -14
  323. package/php/strings/md5.js +216 -223
  324. package/php/strings/md5_file.js +17 -19
  325. package/php/strings/metaphone.js +112 -117
  326. package/php/strings/money_format.js +139 -126
  327. package/php/strings/nl2br.js +24 -26
  328. package/php/strings/nl_langinfo.js +32 -35
  329. package/php/strings/number_format.js +19 -22
  330. package/php/strings/ord.js +19 -21
  331. package/php/strings/parse_str.js +53 -56
  332. package/php/strings/printf.js +6 -9
  333. package/php/strings/quoted_printable_decode.js +7 -10
  334. package/php/strings/quoted_printable_encode.js +19 -20
  335. package/php/strings/quotemeta.js +7 -9
  336. package/php/strings/rtrim.js +14 -16
  337. package/php/strings/setlocale.js +148 -104
  338. package/php/strings/sha1.js +108 -106
  339. package/php/strings/sha1_file.js +15 -17
  340. package/php/strings/similar_text.js +34 -33
  341. package/php/strings/soundex.js +34 -36
  342. package/php/strings/split.js +8 -10
  343. package/php/strings/sprintf.js +112 -114
  344. package/php/strings/sscanf.js +99 -96
  345. package/php/strings/str_getcsv.js +37 -32
  346. package/php/strings/str_ireplace.js +50 -55
  347. package/php/strings/str_pad.js +18 -21
  348. package/php/strings/str_repeat.js +14 -16
  349. package/php/strings/str_replace.js +32 -37
  350. package/php/strings/str_rot13.js +15 -17
  351. package/php/strings/str_shuffle.js +12 -15
  352. package/php/strings/str_split.js +19 -21
  353. package/php/strings/str_word_count.js +51 -50
  354. package/php/strings/strcasecmp.js +12 -14
  355. package/php/strings/strchr.js +10 -12
  356. package/php/strings/strcmp.js +12 -14
  357. package/php/strings/strcoll.js +9 -12
  358. package/php/strings/strcspn.js +30 -25
  359. package/php/strings/strip_tags.js +50 -52
  360. package/php/strings/stripos.js +12 -14
  361. package/php/strings/stripslashes.js +8 -10
  362. package/php/strings/stristr.js +15 -17
  363. package/php/strings/strlen.js +23 -26
  364. package/php/strings/strnatcasecmp.js +6 -8
  365. package/php/strings/strnatcmp.js +47 -46
  366. package/php/strings/strncasecmp.js +30 -32
  367. package/php/strings/strncmp.js +5 -7
  368. package/php/strings/strpbrk.js +12 -14
  369. package/php/strings/strpos.js +11 -13
  370. package/php/strings/strrchr.js +7 -10
  371. package/php/strings/strrev.js +188 -10
  372. package/php/strings/strripos.js +16 -18
  373. package/php/strings/strrpos.js +20 -22
  374. package/php/strings/strspn.js +24 -26
  375. package/php/strings/strstr.js +20 -22
  376. package/php/strings/strtok.js +14 -16
  377. package/php/strings/strtolower.js +8 -10
  378. package/php/strings/strtoupper.js +8 -10
  379. package/php/strings/strtr.js +38 -43
  380. package/php/strings/substr.js +14 -18
  381. package/php/strings/substr_compare.js +18 -20
  382. package/php/strings/substr_count.js +11 -14
  383. package/php/strings/substr_replace.js +5 -8
  384. package/php/strings/trim.js +53 -32
  385. package/php/strings/ucfirst.js +11 -13
  386. package/php/strings/ucwords.js +3 -6
  387. package/php/strings/vprintf.js +6 -9
  388. package/php/strings/vsprintf.js +8 -10
  389. package/php/strings/wordwrap.js +32 -35
  390. package/php/url/base64_decode.js +42 -40
  391. package/php/url/base64_encode.js +51 -53
  392. package/php/url/http_build_query.js +27 -32
  393. package/php/url/index.js +8 -11
  394. package/php/url/parse_url.js +61 -25
  395. package/php/url/rawurldecode.js +8 -8
  396. package/php/url/rawurlencode.js +9 -6
  397. package/php/url/urldecode.js +9 -8
  398. package/php/url/urlencode.js +11 -6
  399. package/php/var/boolval.js +31 -33
  400. package/php/var/doubleval.js +10 -12
  401. package/php/var/empty.js +11 -16
  402. package/php/var/floatval.js +13 -15
  403. package/php/var/gettype.js +22 -23
  404. package/php/var/index.js +30 -33
  405. package/php/var/intval.js +35 -39
  406. package/php/var/is_array.js +27 -31
  407. package/php/var/is_binary.js +2 -5
  408. package/php/var/is_bool.js +10 -12
  409. package/php/var/is_buffer.js +2 -5
  410. package/php/var/is_callable.js +34 -35
  411. package/php/var/is_double.js +10 -12
  412. package/php/var/is_float.js +12 -14
  413. package/php/var/is_int.js +20 -22
  414. package/php/var/is_integer.js +12 -14
  415. package/php/var/is_long.js +3 -6
  416. package/php/var/is_null.js +9 -11
  417. package/php/var/is_numeric.js +30 -6
  418. package/php/var/is_object.js +4 -9
  419. package/php/var/is_real.js +3 -6
  420. package/php/var/is_scalar.js +2 -8
  421. package/php/var/is_string.js +9 -11
  422. package/php/var/is_unicode.js +12 -15
  423. package/php/var/isset.js +9 -12
  424. package/php/var/print_r.js +49 -53
  425. package/php/var/serialize.js +47 -52
  426. package/php/var/serialize.vitest.ts +10 -0
  427. package/php/var/strval.js +10 -13
  428. package/php/var/unserialize.js +168 -202
  429. package/php/var/var_dump.js +105 -104
  430. package/php/var/var_export.js +64 -66
  431. package/php/xdiff/index.js +2 -5
  432. package/php/xdiff/xdiff_string_diff.js +240 -226
  433. package/php/xdiff/xdiff_string_patch.js +98 -93
  434. package/php/xml/index.js +2 -5
  435. package/php/xml/utf8_decode.js +40 -42
  436. package/php/xml/utf8_encode.js +40 -42
  437. package/python/index.js +1 -4
  438. package/python/math/ceil.js +17 -0
  439. package/python/math/exp.js +12 -0
  440. package/python/math/fabs.js +14 -0
  441. package/python/math/factorial.js +29 -0
  442. package/python/math/floor.js +14 -0
  443. package/python/math/gcd.js +23 -0
  444. package/python/math/index.js +15 -0
  445. package/python/math/isfinite.js +14 -0
  446. package/python/math/isinf.js +14 -0
  447. package/python/math/isnan.js +14 -0
  448. package/python/math/log.js +16 -0
  449. package/python/math/log10.js +14 -0
  450. package/python/math/log2.js +14 -0
  451. package/python/math/pow.js +14 -0
  452. package/python/math/sqrt.js +14 -0
  453. package/python/math/trunc.js +14 -0
  454. package/python/string/ascii_letters.js +14 -14
  455. package/python/string/ascii_lowercase.js +12 -16
  456. package/python/string/ascii_uppercase.js +12 -16
  457. package/python/string/capwords.js +4 -7
  458. package/python/string/digits.js +10 -0
  459. package/python/string/hexdigits.js +10 -0
  460. package/python/string/index.js +10 -8
  461. package/python/string/octdigits.js +10 -0
  462. package/python/string/printable.js +15 -0
  463. package/python/string/punctuation.js +5 -7
  464. package/python/string/whitespace.js +10 -0
  465. package/r/base/abs.js +13 -0
  466. package/r/base/ceiling.js +16 -0
  467. package/r/base/floor.js +14 -0
  468. package/r/base/index.js +3 -0
  469. package/ruby/Array/compact.js +18 -0
  470. package/ruby/Array/first.js +22 -0
  471. package/ruby/Array/flatten.js +22 -0
  472. package/ruby/Array/index.js +6 -0
  473. package/ruby/Array/last.js +22 -0
  474. package/ruby/Array/sample.js +31 -0
  475. package/ruby/Array/uniq.js +16 -0
  476. package/ruby/Math/acos.js +2 -5
  477. package/ruby/Math/asin.js +11 -0
  478. package/ruby/Math/atan.js +11 -0
  479. package/ruby/Math/cbrt.js +13 -0
  480. package/ruby/Math/cos.js +12 -0
  481. package/ruby/Math/cosh.js +11 -0
  482. package/ruby/Math/exp.js +11 -0
  483. package/ruby/Math/index.js +15 -4
  484. package/ruby/Math/log.js +11 -0
  485. package/ruby/Math/log10.js +13 -0
  486. package/ruby/Math/log2.js +13 -0
  487. package/ruby/Math/sin.js +12 -0
  488. package/ruby/Math/sinh.js +11 -0
  489. package/ruby/Math/sqrt.js +13 -0
  490. package/ruby/Math/tan.js +11 -0
  491. package/ruby/Math/tanh.js +11 -0
  492. package/ruby/String/capitalize.js +19 -0
  493. package/ruby/String/chomp.js +27 -0
  494. package/ruby/String/chop.js +25 -0
  495. package/ruby/String/downcase.js +10 -0
  496. package/ruby/String/end_with.js +17 -0
  497. package/ruby/String/include.js +12 -0
  498. package/ruby/String/index.js +11 -0
  499. package/ruby/String/length.js +12 -0
  500. package/ruby/String/reverse.js +12 -0
  501. package/ruby/String/start_with.js +14 -0
  502. package/ruby/String/strip.js +12 -0
  503. package/ruby/String/upcase.js +10 -0
  504. package/ruby/index.js +1 -4
  505. package/_util/cli.js +0 -14
  506. package/_util/cli.js.map +0 -1
  507. package/_util/util.js +0 -620
  508. package/_util/util.js.map +0 -1
  509. package/c/index.js.map +0 -1
  510. package/c/math/abs.js.map +0 -1
  511. package/c/math/frexp.js.map +0 -1
  512. package/c/math/index.js.map +0 -1
  513. package/c/stdio/index.js.map +0 -1
  514. package/c/stdio/sprintf.js.map +0 -1
  515. package/golang/index.js.map +0 -1
  516. package/golang/strings/Contains.js.map +0 -1
  517. package/golang/strings/Count.js.map +0 -1
  518. package/golang/strings/Index2.js.map +0 -1
  519. package/golang/strings/LastIndex.js.map +0 -1
  520. package/golang/strings/index.js.map +0 -1
  521. package/index.js.map +0 -1
  522. package/php/_helpers/_bc.js.map +0 -1
  523. package/php/_helpers/_phpCastString.js.map +0 -1
  524. package/php/_helpers/_php_cast_float.js.map +0 -1
  525. package/php/_helpers/_php_cast_int.js.map +0 -1
  526. package/php/_helpers/index.js.map +0 -1
  527. package/php/array/array_change_key_case.js.map +0 -1
  528. package/php/array/array_chunk.js.map +0 -1
  529. package/php/array/array_column.js.map +0 -1
  530. package/php/array/array_combine.js.map +0 -1
  531. package/php/array/array_count_values.js.map +0 -1
  532. package/php/array/array_diff.js.map +0 -1
  533. package/php/array/array_diff_assoc.js.map +0 -1
  534. package/php/array/array_diff_key.js.map +0 -1
  535. package/php/array/array_diff_uassoc.js.map +0 -1
  536. package/php/array/array_diff_ukey.js.map +0 -1
  537. package/php/array/array_fill.js.map +0 -1
  538. package/php/array/array_fill_keys.js.map +0 -1
  539. package/php/array/array_filter.js.map +0 -1
  540. package/php/array/array_flip.js.map +0 -1
  541. package/php/array/array_intersect.js.map +0 -1
  542. package/php/array/array_intersect_assoc.js.map +0 -1
  543. package/php/array/array_intersect_key.js.map +0 -1
  544. package/php/array/array_intersect_uassoc.js.map +0 -1
  545. package/php/array/array_intersect_ukey.js.map +0 -1
  546. package/php/array/array_key_exists.js.map +0 -1
  547. package/php/array/array_keys.js.map +0 -1
  548. package/php/array/array_map.js.map +0 -1
  549. package/php/array/array_merge.js.map +0 -1
  550. package/php/array/array_merge_recursive.js.map +0 -1
  551. package/php/array/array_multisort.js.map +0 -1
  552. package/php/array/array_pad.js.map +0 -1
  553. package/php/array/array_pop.js.map +0 -1
  554. package/php/array/array_product.js.map +0 -1
  555. package/php/array/array_push.js.map +0 -1
  556. package/php/array/array_rand.js.map +0 -1
  557. package/php/array/array_reduce.js.map +0 -1
  558. package/php/array/array_replace.js.map +0 -1
  559. package/php/array/array_replace_recursive.js.map +0 -1
  560. package/php/array/array_reverse.js.map +0 -1
  561. package/php/array/array_search.js.map +0 -1
  562. package/php/array/array_shift.js.map +0 -1
  563. package/php/array/array_slice.js.map +0 -1
  564. package/php/array/array_splice.js.map +0 -1
  565. package/php/array/array_sum.js.map +0 -1
  566. package/php/array/array_udiff.js.map +0 -1
  567. package/php/array/array_udiff_assoc.js.map +0 -1
  568. package/php/array/array_udiff_uassoc.js.map +0 -1
  569. package/php/array/array_uintersect.js.map +0 -1
  570. package/php/array/array_uintersect_uassoc.js.map +0 -1
  571. package/php/array/array_unique.js.map +0 -1
  572. package/php/array/array_unshift.js.map +0 -1
  573. package/php/array/array_values.js.map +0 -1
  574. package/php/array/array_walk.js.map +0 -1
  575. package/php/array/array_walk_recursive.js.map +0 -1
  576. package/php/array/arsort.js.map +0 -1
  577. package/php/array/asort.js.map +0 -1
  578. package/php/array/count.js.map +0 -1
  579. package/php/array/current.js.map +0 -1
  580. package/php/array/each.js.map +0 -1
  581. package/php/array/end.js.map +0 -1
  582. package/php/array/in_array.js.map +0 -1
  583. package/php/array/index.js.map +0 -1
  584. package/php/array/key.js.map +0 -1
  585. package/php/array/krsort.js.map +0 -1
  586. package/php/array/ksort.js.map +0 -1
  587. package/php/array/natcasesort.js.map +0 -1
  588. package/php/array/natsort.js.map +0 -1
  589. package/php/array/next.js.map +0 -1
  590. package/php/array/pos.js.map +0 -1
  591. package/php/array/prev.js.map +0 -1
  592. package/php/array/range.js.map +0 -1
  593. package/php/array/reset.js.map +0 -1
  594. package/php/array/rsort.js.map +0 -1
  595. package/php/array/shuffle.js.map +0 -1
  596. package/php/array/sizeof.js.map +0 -1
  597. package/php/array/sort.js.map +0 -1
  598. package/php/array/uasort.js.map +0 -1
  599. package/php/array/uksort.js.map +0 -1
  600. package/php/array/usort.js.map +0 -1
  601. package/php/bc/bcadd.js.map +0 -1
  602. package/php/bc/bccomp.js.map +0 -1
  603. package/php/bc/bcdiv.js.map +0 -1
  604. package/php/bc/bcmul.js.map +0 -1
  605. package/php/bc/bcround.js.map +0 -1
  606. package/php/bc/bcscale.js.map +0 -1
  607. package/php/bc/bcsub.js.map +0 -1
  608. package/php/bc/index.js.map +0 -1
  609. package/php/ctype/ctype_alnum.js.map +0 -1
  610. package/php/ctype/ctype_alpha.js.map +0 -1
  611. package/php/ctype/ctype_cntrl.js.map +0 -1
  612. package/php/ctype/ctype_digit.js.map +0 -1
  613. package/php/ctype/ctype_graph.js.map +0 -1
  614. package/php/ctype/ctype_lower.js.map +0 -1
  615. package/php/ctype/ctype_print.js.map +0 -1
  616. package/php/ctype/ctype_punct.js.map +0 -1
  617. package/php/ctype/ctype_space.js.map +0 -1
  618. package/php/ctype/ctype_upper.js.map +0 -1
  619. package/php/ctype/ctype_xdigit.js.map +0 -1
  620. package/php/ctype/index.js.map +0 -1
  621. package/php/datetime/checkdate.js.map +0 -1
  622. package/php/datetime/date.js.map +0 -1
  623. package/php/datetime/date_parse.js.map +0 -1
  624. package/php/datetime/getdate.js.map +0 -1
  625. package/php/datetime/gettimeofday.js.map +0 -1
  626. package/php/datetime/gmdate.js.map +0 -1
  627. package/php/datetime/gmmktime.js.map +0 -1
  628. package/php/datetime/gmstrftime.js.map +0 -1
  629. package/php/datetime/idate.js.map +0 -1
  630. package/php/datetime/index.js.map +0 -1
  631. package/php/datetime/microtime.js.map +0 -1
  632. package/php/datetime/mktime.js.map +0 -1
  633. package/php/datetime/strftime.js.map +0 -1
  634. package/php/datetime/strptime.js.map +0 -1
  635. package/php/datetime/strtotime.js.map +0 -1
  636. package/php/datetime/time.js.map +0 -1
  637. package/php/exec/escapeshellarg.js.map +0 -1
  638. package/php/exec/index.js.map +0 -1
  639. package/php/filesystem/basename.js.map +0 -1
  640. package/php/filesystem/dirname.js.map +0 -1
  641. package/php/filesystem/file_get_contents.js.map +0 -1
  642. package/php/filesystem/index.js.map +0 -1
  643. package/php/filesystem/pathinfo.js.map +0 -1
  644. package/php/filesystem/realpath.js.map +0 -1
  645. package/php/funchand/call_user_func.js.map +0 -1
  646. package/php/funchand/call_user_func_array.js.map +0 -1
  647. package/php/funchand/create_function.js.map +0 -1
  648. package/php/funchand/function_exists.js.map +0 -1
  649. package/php/funchand/get_defined_functions.js.map +0 -1
  650. package/php/funchand/index.js.map +0 -1
  651. package/php/i18n/i18n_loc_get_default.js.map +0 -1
  652. package/php/i18n/i18n_loc_set_default.js.map +0 -1
  653. package/php/i18n/index.js.map +0 -1
  654. package/php/index.js.map +0 -1
  655. package/php/info/assert_options.js.map +0 -1
  656. package/php/info/getenv.js.map +0 -1
  657. package/php/info/index.js.map +0 -1
  658. package/php/info/ini_get.js.map +0 -1
  659. package/php/info/ini_set.js.map +0 -1
  660. package/php/info/set_time_limit.js.map +0 -1
  661. package/php/info/version_compare.js.map +0 -1
  662. package/php/json/index.js.map +0 -1
  663. package/php/json/json_decode.js.map +0 -1
  664. package/php/json/json_encode.js.map +0 -1
  665. package/php/json/json_last_error.js.map +0 -1
  666. package/php/math/abs.js.map +0 -1
  667. package/php/math/acos.js.map +0 -1
  668. package/php/math/acosh.js.map +0 -1
  669. package/php/math/asin.js.map +0 -1
  670. package/php/math/asinh.js.map +0 -1
  671. package/php/math/atan.js.map +0 -1
  672. package/php/math/atan2.js.map +0 -1
  673. package/php/math/atanh.js.map +0 -1
  674. package/php/math/base_convert.js.map +0 -1
  675. package/php/math/bindec.js.map +0 -1
  676. package/php/math/ceil.js.map +0 -1
  677. package/php/math/cos.js.map +0 -1
  678. package/php/math/cosh.js.map +0 -1
  679. package/php/math/decbin.js.map +0 -1
  680. package/php/math/dechex.js.map +0 -1
  681. package/php/math/decoct.js.map +0 -1
  682. package/php/math/deg2rad.js.map +0 -1
  683. package/php/math/exp.js.map +0 -1
  684. package/php/math/expm1.js.map +0 -1
  685. package/php/math/floor.js.map +0 -1
  686. package/php/math/fmod.js.map +0 -1
  687. package/php/math/getrandmax.js.map +0 -1
  688. package/php/math/hexdec.js.map +0 -1
  689. package/php/math/hypot.js.map +0 -1
  690. package/php/math/index.js.map +0 -1
  691. package/php/math/is_finite.js.map +0 -1
  692. package/php/math/is_infinite.js.map +0 -1
  693. package/php/math/is_nan.js.map +0 -1
  694. package/php/math/lcg_value.js.map +0 -1
  695. package/php/math/log.js.map +0 -1
  696. package/php/math/log10.js.map +0 -1
  697. package/php/math/log1p.js.map +0 -1
  698. package/php/math/max.js.map +0 -1
  699. package/php/math/min.js.map +0 -1
  700. package/php/math/mt_getrandmax.js.map +0 -1
  701. package/php/math/mt_rand.js.map +0 -1
  702. package/php/math/octdec.js.map +0 -1
  703. package/php/math/pi.js.map +0 -1
  704. package/php/math/pow.js.map +0 -1
  705. package/php/math/rad2deg.js.map +0 -1
  706. package/php/math/rand.js.map +0 -1
  707. package/php/math/round.js.map +0 -1
  708. package/php/math/sin.js.map +0 -1
  709. package/php/math/sinh.js.map +0 -1
  710. package/php/math/sqrt.js.map +0 -1
  711. package/php/math/tan.js.map +0 -1
  712. package/php/math/tanh.js.map +0 -1
  713. package/php/misc/index.js.map +0 -1
  714. package/php/misc/pack.js.map +0 -1
  715. package/php/misc/uniqid.js.map +0 -1
  716. package/php/net-gopher/gopher_parsedir.js.map +0 -1
  717. package/php/net-gopher/index.js.map +0 -1
  718. package/php/network/index.js.map +0 -1
  719. package/php/network/inet_ntop.js.map +0 -1
  720. package/php/network/inet_pton.js.map +0 -1
  721. package/php/network/ip2long.js.map +0 -1
  722. package/php/network/long2ip.js.map +0 -1
  723. package/php/network/setcookie.js.map +0 -1
  724. package/php/network/setrawcookie.js.map +0 -1
  725. package/php/pcre/index.js.map +0 -1
  726. package/php/pcre/preg_match.js.map +0 -1
  727. package/php/pcre/preg_quote.js.map +0 -1
  728. package/php/pcre/preg_replace.js.map +0 -1
  729. package/php/pcre/sql_regcase.js.map +0 -1
  730. package/php/strings/addcslashes.js.map +0 -1
  731. package/php/strings/addslashes.js.map +0 -1
  732. package/php/strings/bin2hex.js.map +0 -1
  733. package/php/strings/chop.js.map +0 -1
  734. package/php/strings/chr.js.map +0 -1
  735. package/php/strings/chunk_split.js.map +0 -1
  736. package/php/strings/convert_cyr_string.js.map +0 -1
  737. package/php/strings/convert_uuencode.js.map +0 -1
  738. package/php/strings/count_chars.js.map +0 -1
  739. package/php/strings/crc32.js.map +0 -1
  740. package/php/strings/echo.js.map +0 -1
  741. package/php/strings/explode.js.map +0 -1
  742. package/php/strings/get_html_translation_table.js.map +0 -1
  743. package/php/strings/hex2bin.js.map +0 -1
  744. package/php/strings/html_entity_decode.js.map +0 -1
  745. package/php/strings/htmlentities.js.map +0 -1
  746. package/php/strings/htmlspecialchars.js.map +0 -1
  747. package/php/strings/htmlspecialchars_decode.js.map +0 -1
  748. package/php/strings/implode.js.map +0 -1
  749. package/php/strings/index.js.map +0 -1
  750. package/php/strings/join.js.map +0 -1
  751. package/php/strings/lcfirst.js.map +0 -1
  752. package/php/strings/levenshtein.js.map +0 -1
  753. package/php/strings/localeconv.js.map +0 -1
  754. package/php/strings/ltrim.js.map +0 -1
  755. package/php/strings/md5.js.map +0 -1
  756. package/php/strings/md5_file.js.map +0 -1
  757. package/php/strings/metaphone.js.map +0 -1
  758. package/php/strings/money_format.js.map +0 -1
  759. package/php/strings/nl2br.js.map +0 -1
  760. package/php/strings/nl_langinfo.js.map +0 -1
  761. package/php/strings/number_format.js.map +0 -1
  762. package/php/strings/ord.js.map +0 -1
  763. package/php/strings/parse_str.js.map +0 -1
  764. package/php/strings/printf.js.map +0 -1
  765. package/php/strings/quoted_printable_decode.js.map +0 -1
  766. package/php/strings/quoted_printable_encode.js.map +0 -1
  767. package/php/strings/quotemeta.js.map +0 -1
  768. package/php/strings/rtrim.js.map +0 -1
  769. package/php/strings/setlocale.js.map +0 -1
  770. package/php/strings/sha1.js.map +0 -1
  771. package/php/strings/sha1_file.js.map +0 -1
  772. package/php/strings/similar_text.js.map +0 -1
  773. package/php/strings/soundex.js.map +0 -1
  774. package/php/strings/split.js.map +0 -1
  775. package/php/strings/sprintf.js.map +0 -1
  776. package/php/strings/sscanf.js.map +0 -1
  777. package/php/strings/str_getcsv.js.map +0 -1
  778. package/php/strings/str_ireplace.js.map +0 -1
  779. package/php/strings/str_pad.js.map +0 -1
  780. package/php/strings/str_repeat.js.map +0 -1
  781. package/php/strings/str_replace.js.map +0 -1
  782. package/php/strings/str_rot13.js.map +0 -1
  783. package/php/strings/str_shuffle.js.map +0 -1
  784. package/php/strings/str_split.js.map +0 -1
  785. package/php/strings/str_word_count.js.map +0 -1
  786. package/php/strings/strcasecmp.js.map +0 -1
  787. package/php/strings/strchr.js.map +0 -1
  788. package/php/strings/strcmp.js.map +0 -1
  789. package/php/strings/strcoll.js.map +0 -1
  790. package/php/strings/strcspn.js.map +0 -1
  791. package/php/strings/strip_tags.js.map +0 -1
  792. package/php/strings/stripos.js.map +0 -1
  793. package/php/strings/stripslashes.js.map +0 -1
  794. package/php/strings/stristr.js.map +0 -1
  795. package/php/strings/strlen.js.map +0 -1
  796. package/php/strings/strnatcasecmp.js.map +0 -1
  797. package/php/strings/strnatcmp.js.map +0 -1
  798. package/php/strings/strncasecmp.js.map +0 -1
  799. package/php/strings/strncmp.js.map +0 -1
  800. package/php/strings/strpbrk.js.map +0 -1
  801. package/php/strings/strpos.js.map +0 -1
  802. package/php/strings/strrchr.js.map +0 -1
  803. package/php/strings/strrev.js.map +0 -1
  804. package/php/strings/strripos.js.map +0 -1
  805. package/php/strings/strrpos.js.map +0 -1
  806. package/php/strings/strspn.js.map +0 -1
  807. package/php/strings/strstr.js.map +0 -1
  808. package/php/strings/strtok.js.map +0 -1
  809. package/php/strings/strtolower.js.map +0 -1
  810. package/php/strings/strtoupper.js.map +0 -1
  811. package/php/strings/strtr.js.map +0 -1
  812. package/php/strings/substr.js.map +0 -1
  813. package/php/strings/substr_compare.js.map +0 -1
  814. package/php/strings/substr_count.js.map +0 -1
  815. package/php/strings/substr_replace.js.map +0 -1
  816. package/php/strings/trim.js.map +0 -1
  817. package/php/strings/ucfirst.js.map +0 -1
  818. package/php/strings/ucwords.js.map +0 -1
  819. package/php/strings/vprintf.js.map +0 -1
  820. package/php/strings/vsprintf.js.map +0 -1
  821. package/php/strings/wordwrap.js.map +0 -1
  822. package/php/url/base64_decode.js.map +0 -1
  823. package/php/url/base64_encode.js.map +0 -1
  824. package/php/url/http_build_query.js.map +0 -1
  825. package/php/url/index.js.map +0 -1
  826. package/php/url/parse_url.js.map +0 -1
  827. package/php/url/rawurldecode.js.map +0 -1
  828. package/php/url/rawurlencode.js.map +0 -1
  829. package/php/url/urldecode.js.map +0 -1
  830. package/php/url/urlencode.js.map +0 -1
  831. package/php/var/boolval.js.map +0 -1
  832. package/php/var/doubleval.js.map +0 -1
  833. package/php/var/empty.js.map +0 -1
  834. package/php/var/floatval.js.map +0 -1
  835. package/php/var/gettype.js.map +0 -1
  836. package/php/var/index.js.map +0 -1
  837. package/php/var/intval.js.map +0 -1
  838. package/php/var/is_array.js.map +0 -1
  839. package/php/var/is_binary.js.map +0 -1
  840. package/php/var/is_bool.js.map +0 -1
  841. package/php/var/is_buffer.js.map +0 -1
  842. package/php/var/is_callable.js.map +0 -1
  843. package/php/var/is_double.js.map +0 -1
  844. package/php/var/is_float.js.map +0 -1
  845. package/php/var/is_int.js.map +0 -1
  846. package/php/var/is_integer.js.map +0 -1
  847. package/php/var/is_long.js.map +0 -1
  848. package/php/var/is_null.js.map +0 -1
  849. package/php/var/is_numeric.js.map +0 -1
  850. package/php/var/is_object.js.map +0 -1
  851. package/php/var/is_real.js.map +0 -1
  852. package/php/var/is_scalar.js.map +0 -1
  853. package/php/var/is_string.js.map +0 -1
  854. package/php/var/is_unicode.js.map +0 -1
  855. package/php/var/isset.js.map +0 -1
  856. package/php/var/print_r.js.map +0 -1
  857. package/php/var/serialize.js.map +0 -1
  858. package/php/var/serialize.mocha.js +0 -14
  859. package/php/var/serialize.mocha.js.map +0 -1
  860. package/php/var/strval.js.map +0 -1
  861. package/php/var/unserialize.js.map +0 -1
  862. package/php/var/var_dump.js.map +0 -1
  863. package/php/var/var_export.js.map +0 -1
  864. package/php/xdiff/index.js.map +0 -1
  865. package/php/xdiff/xdiff_string_diff.js.map +0 -1
  866. package/php/xdiff/xdiff_string_patch.js.map +0 -1
  867. package/php/xml/index.js.map +0 -1
  868. package/php/xml/utf8_decode.js.map +0 -1
  869. package/php/xml/utf8_encode.js.map +0 -1
  870. package/python/index.js.map +0 -1
  871. package/python/string/ascii_letters.js.map +0 -1
  872. package/python/string/ascii_lowercase.js.map +0 -1
  873. package/python/string/ascii_uppercase.js.map +0 -1
  874. package/python/string/capwords.js.map +0 -1
  875. package/python/string/index.js.map +0 -1
  876. package/python/string/punctuation.js.map +0 -1
  877. package/ruby/Math/acos.js.map +0 -1
  878. package/ruby/Math/index.js.map +0 -1
  879. package/ruby/index.js.map +0 -1
@@ -1,69 +1,67 @@
1
- 'use strict';
2
-
3
- var reSpace = '[ \\t]+';
4
- var reSpaceOpt = '[ \\t]*';
5
- var reMeridian = '(?:([ap])\\.?m\\.?([\\t ]|$))';
6
- var reHour24 = '(2[0-4]|[01]?[0-9])';
7
- var reHour24lz = '([01][0-9]|2[0-4])';
8
- var reHour12 = '(0?[1-9]|1[0-2])';
9
- var reMinute = '([0-5]?[0-9])';
10
- var reMinutelz = '([0-5][0-9])';
11
- var reSecond = '(60|[0-5]?[0-9])';
12
- var reSecondlz = '(60|[0-5][0-9])';
13
- var reFrac = '(?:\\.([0-9]+))';
14
-
15
- var reDayfull = 'sunday|monday|tuesday|wednesday|thursday|friday|saturday';
16
- var reDayabbr = 'sun|mon|tue|wed|thu|fri|sat';
17
- var reDaytext = reDayfull + '|' + reDayabbr + '|weekdays?';
18
-
19
- var reReltextnumber = 'first|second|third|fourth|fifth|sixth|seventh|eighth?|ninth|tenth|eleventh|twelfth';
20
- var reReltexttext = 'next|last|previous|this';
21
- var reReltextunit = '(?:second|sec|minute|min|hour|day|fortnight|forthnight|month|year)s?|weeks|' + reDaytext;
22
-
23
- var reYear = '([0-9]{1,4})';
24
- var reYear2 = '([0-9]{2})';
25
- var reYear4 = '([0-9]{4})';
26
- var reYear4withSign = '([+-]?[0-9]{4})';
27
- var reMonth = '(1[0-2]|0?[0-9])';
28
- var reMonthlz = '(0[0-9]|1[0-2])';
29
- var reDay = '(?:(3[01]|[0-2]?[0-9])(?:st|nd|rd|th)?)';
30
- var reDaylz = '(0[0-9]|[1-2][0-9]|3[01])';
31
-
32
- var reMonthFull = 'january|february|march|april|may|june|july|august|september|october|november|december';
33
- var reMonthAbbr = 'jan|feb|mar|apr|may|jun|jul|aug|sept?|oct|nov|dec';
34
- var reMonthroman = 'i[vx]|vi{0,3}|xi{0,2}|i{1,3}';
35
- var reMonthText = '(' + reMonthFull + '|' + reMonthAbbr + '|' + reMonthroman + ')';
36
-
37
- var reTzCorrection = '((?:GMT)?([+-])' + reHour24 + ':?' + reMinute + '?)';
38
- var reTzAbbr = '\\(?([a-zA-Z]{1,6})\\)?';
39
- var reDayOfYear = '(00[1-9]|0[1-9][0-9]|[12][0-9][0-9]|3[0-5][0-9]|36[0-6])';
40
- var reWeekOfYear = '(0[1-9]|[1-4][0-9]|5[0-3])';
41
-
42
- var reDateNoYear = reMonthText + '[ .\\t-]*' + reDay + '[,.stndrh\\t ]*';
1
+ const reSpace = '[ \\t]+'
2
+ const reSpaceOpt = '[ \\t]*'
3
+ const reMeridian = '(?:([ap])\\.?m\\.?([\\t ]|$))'
4
+ const reHour24 = '(2[0-4]|[01]?[0-9])'
5
+ const reHour24lz = '([01][0-9]|2[0-4])'
6
+ const reHour12 = '(0?[1-9]|1[0-2])'
7
+ const reMinute = '([0-5]?[0-9])'
8
+ const reMinutelz = '([0-5][0-9])'
9
+ const reSecond = '(60|[0-5]?[0-9])'
10
+ const reSecondlz = '(60|[0-5][0-9])'
11
+ const reFrac = '(?:\\.([0-9]+))'
12
+
13
+ const reDayfull = 'sunday|monday|tuesday|wednesday|thursday|friday|saturday'
14
+ const reDayabbr = 'sun|mon|tue|wed|thu|fri|sat'
15
+ const reDaytext = reDayfull + '|' + reDayabbr + '|weekdays?'
16
+
17
+ const reReltextnumber = 'first|second|third|fourth|fifth|sixth|seventh|eighth?|ninth|tenth|eleventh|twelfth'
18
+ const reReltexttext = 'next|last|previous|this'
19
+ const reReltextunit = '(?:second|sec|minute|min|hour|day|fortnight|forthnight|month|year)s?|weeks|' + reDaytext
20
+
21
+ const reYear = '([0-9]{1,4})'
22
+ const reYear2 = '([0-9]{2})'
23
+ const reYear4 = '([0-9]{4})'
24
+ const reYear4withSign = '([+-]?[0-9]{4})'
25
+ const reMonth = '(1[0-2]|0?[0-9])'
26
+ const reMonthlz = '(0[0-9]|1[0-2])'
27
+ const reDay = '(?:(3[01]|[0-2]?[0-9])(?:st|nd|rd|th)?)'
28
+ const reDaylz = '(0[0-9]|[1-2][0-9]|3[01])'
29
+
30
+ const reMonthFull = 'january|february|march|april|may|june|july|august|september|october|november|december'
31
+ const reMonthAbbr = 'jan|feb|mar|apr|may|jun|jul|aug|sept?|oct|nov|dec'
32
+ const reMonthroman = 'i[vx]|vi{0,3}|xi{0,2}|i{1,3}'
33
+ const reMonthText = '(' + reMonthFull + '|' + reMonthAbbr + '|' + reMonthroman + ')'
34
+
35
+ const reTzCorrection = '((?:GMT)?([+-])' + reHour24 + ':?' + reMinute + '?)'
36
+ const reTzAbbr = '\\(?([a-zA-Z]{1,6})\\)?'
37
+ const reDayOfYear = '(00[1-9]|0[1-9][0-9]|[12][0-9][0-9]|3[0-5][0-9]|36[0-6])'
38
+ const reWeekOfYear = '(0[1-9]|[1-4][0-9]|5[0-3])'
39
+
40
+ const reDateNoYear = reMonthText + '[ .\\t-]*' + reDay + '[,.stndrh\\t ]*'
43
41
 
44
42
  function processMeridian(hour, meridian) {
45
- meridian = meridian && meridian.toLowerCase();
43
+ meridian = meridian && meridian.toLowerCase()
46
44
 
47
45
  switch (meridian) {
48
46
  case 'a':
49
- hour += hour === 12 ? -12 : 0;
50
- break;
47
+ hour += hour === 12 ? -12 : 0
48
+ break
51
49
  case 'p':
52
- hour += hour !== 12 ? 12 : 0;
53
- break;
50
+ hour += hour !== 12 ? 12 : 0
51
+ break
54
52
  }
55
53
 
56
- return hour;
54
+ return hour
57
55
  }
58
56
 
59
57
  function processYear(yearStr) {
60
- var year = +yearStr;
58
+ let year = +yearStr
61
59
 
62
60
  if (yearStr.length < 4 && year < 100) {
63
- year += year < 70 ? 2000 : 1900;
61
+ year += year < 70 ? 2000 : 1900
64
62
  }
65
63
 
66
- return year;
64
+ return year
67
65
  }
68
66
 
69
67
  function lookupMonth(monthStr) {
@@ -103,14 +101,12 @@ function lookupMonth(monthStr) {
103
101
  xi: 10,
104
102
  dec: 11,
105
103
  december: 11,
106
- xii: 11
107
- }[monthStr.toLowerCase()];
104
+ xii: 11,
105
+ }[monthStr.toLowerCase()]
108
106
  }
109
107
 
110
- function lookupWeekday(dayStr) {
111
- var desiredSundayNumber = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
112
-
113
- var dayNumbers = {
108
+ function lookupWeekday(dayStr, desiredSundayNumber = 0) {
109
+ const dayNumbers = {
114
110
  mon: 1,
115
111
  monday: 1,
116
112
  tue: 2,
@@ -124,14 +120,14 @@ function lookupWeekday(dayStr) {
124
120
  sat: 6,
125
121
  saturday: 6,
126
122
  sun: 0,
127
- sunday: 0
128
- };
123
+ sunday: 0,
124
+ }
129
125
 
130
- return dayNumbers[dayStr.toLowerCase()] || desiredSundayNumber;
126
+ return dayNumbers[dayStr.toLowerCase()] || desiredSundayNumber
131
127
  }
132
128
 
133
129
  function lookupRelative(relText) {
134
- var relativeNumbers = {
130
+ const relativeNumbers = {
135
131
  last: -1,
136
132
  previous: -1,
137
133
  this: 0,
@@ -148,44 +144,44 @@ function lookupRelative(relText) {
148
144
  ninth: 9,
149
145
  tenth: 10,
150
146
  eleventh: 11,
151
- twelfth: 12
152
- };
147
+ twelfth: 12,
148
+ }
153
149
 
154
- var relativeBehavior = {
155
- this: 1
156
- };
150
+ const relativeBehavior = {
151
+ this: 1,
152
+ }
157
153
 
158
- var relTextLower = relText.toLowerCase();
154
+ const relTextLower = relText.toLowerCase()
159
155
 
160
156
  return {
161
157
  amount: relativeNumbers[relTextLower],
162
- behavior: relativeBehavior[relTextLower] || 0
163
- };
158
+ behavior: relativeBehavior[relTextLower] || 0,
159
+ }
164
160
  }
165
161
 
166
162
  function processTzCorrection(tzOffset, oldValue) {
167
- var reTzCorrectionLoose = /(?:GMT)?([+-])(\d+)(:?)(\d{0,2})/i;
168
- tzOffset = tzOffset && tzOffset.match(reTzCorrectionLoose);
163
+ const reTzCorrectionLoose = /(?:GMT)?([+-])(\d+)(:?)(\d{0,2})/i
164
+ tzOffset = tzOffset && tzOffset.match(reTzCorrectionLoose)
169
165
 
170
166
  if (!tzOffset) {
171
- return oldValue;
167
+ return oldValue
172
168
  }
173
169
 
174
- var sign = tzOffset[1] === '-' ? -1 : 1;
175
- var hours = +tzOffset[2];
176
- var minutes = +tzOffset[4];
170
+ const sign = tzOffset[1] === '-' ? -1 : 1
171
+ let hours = +tzOffset[2]
172
+ let minutes = +tzOffset[4]
177
173
 
178
174
  if (!tzOffset[4] && !tzOffset[3]) {
179
- minutes = Math.floor(hours % 100);
180
- hours = Math.floor(hours / 100);
175
+ minutes = Math.floor(hours % 100)
176
+ hours = Math.floor(hours / 100)
181
177
  }
182
178
 
183
179
  // timezone offset in seconds
184
- return sign * (hours * 60 + minutes) * 60;
180
+ return sign * (hours * 60 + minutes) * 60
185
181
  }
186
182
 
187
183
  // tz abbrevation : tz offset in seconds
188
- var tzAbbrOffsets = {
184
+ const tzAbbrOffsets = {
189
185
  acdt: 37800,
190
186
  acst: 34200,
191
187
  addt: -7200,
@@ -329,114 +325,129 @@ var tzAbbrOffsets = {
329
325
  w: -36000,
330
326
  x: -39600,
331
327
  y: -43200,
332
- z: 0
333
- };
328
+ z: 0,
329
+ }
334
330
 
335
- var formats = {
331
+ const formats = {
336
332
  yesterday: {
337
333
  regex: /^yesterday/i,
338
334
  name: 'yesterday',
339
- callback: function callback() {
340
- this.rd -= 1;
341
- return this.resetTime();
342
- }
335
+ callback() {
336
+ this.rd -= 1
337
+ return this.resetTime()
338
+ },
343
339
  },
344
340
 
345
341
  now: {
346
342
  regex: /^now/i,
347
- name: 'now'
343
+ name: 'now',
348
344
  // do nothing
349
345
  },
350
346
 
351
347
  noon: {
352
348
  regex: /^noon/i,
353
349
  name: 'noon',
354
- callback: function callback() {
355
- return this.resetTime() && this.time(12, 0, 0, 0);
356
- }
350
+ callback() {
351
+ return this.resetTime() && this.time(12, 0, 0, 0)
352
+ },
357
353
  },
358
354
 
359
355
  midnightOrToday: {
360
356
  regex: /^(midnight|today)/i,
361
357
  name: 'midnight | today',
362
- callback: function callback() {
363
- return this.resetTime();
364
- }
358
+ callback() {
359
+ return this.resetTime()
360
+ },
365
361
  },
366
362
 
367
363
  tomorrow: {
368
364
  regex: /^tomorrow/i,
369
365
  name: 'tomorrow',
370
- callback: function callback() {
371
- this.rd += 1;
372
- return this.resetTime();
373
- }
366
+ callback() {
367
+ this.rd += 1
368
+ return this.resetTime()
369
+ },
374
370
  },
375
371
 
376
372
  timestamp: {
377
373
  regex: /^@(-?\d+)/i,
378
374
  name: 'timestamp',
379
- callback: function callback(match, timestamp) {
380
- this.rs += +timestamp;
381
- this.y = 1970;
382
- this.m = 0;
383
- this.d = 1;
384
- this.dates = 0;
385
-
386
- return this.resetTime() && this.zone(0);
387
- }
375
+ callback(match, timestamp) {
376
+ this.rs += +timestamp
377
+ this.y = 1970
378
+ this.m = 0
379
+ this.d = 1
380
+ this.dates = 0
381
+
382
+ return this.resetTime() && this.zone(0)
383
+ },
388
384
  },
389
385
 
390
386
  firstOrLastDay: {
391
387
  regex: /^(first|last) day of/i,
392
388
  name: 'firstdayof | lastdayof',
393
- callback: function callback(match, day) {
389
+ callback(match, day) {
394
390
  if (day.toLowerCase() === 'first') {
395
- this.firstOrLastDayOfMonth = 1;
391
+ this.firstOrLastDayOfMonth = 1
396
392
  } else {
397
- this.firstOrLastDayOfMonth = -1;
393
+ this.firstOrLastDayOfMonth = -1
398
394
  }
399
- }
395
+ },
400
396
  },
401
397
 
402
398
  backOrFrontOf: {
403
- regex: RegExp('^(back|front) of ' + reHour24 + reSpaceOpt + reMeridian + '?', 'i'),
399
+ regex: new RegExp('^(back|front) of ' + reHour24 + reSpaceOpt + reMeridian + '?', 'i'),
404
400
  name: 'backof | frontof',
405
- callback: function callback(match, side, hours, meridian) {
406
- var back = side.toLowerCase() === 'back';
407
- var hour = +hours;
408
- var minute = 15;
401
+ callback(match, side, hours, meridian) {
402
+ const back = side.toLowerCase() === 'back'
403
+ let hour = +hours
404
+ let minute = 15
409
405
 
410
406
  if (!back) {
411
- hour -= 1;
412
- minute = 45;
407
+ hour -= 1
408
+ minute = 45
413
409
  }
414
410
 
415
- hour = processMeridian(hour, meridian);
411
+ hour = processMeridian(hour, meridian)
416
412
 
417
- return this.resetTime() && this.time(hour, minute, 0, 0);
418
- }
413
+ return this.resetTime() && this.time(hour, minute, 0, 0)
414
+ },
419
415
  },
420
416
 
421
417
  weekdayOf: {
422
- regex: RegExp('^(' + reReltextnumber + '|' + reReltexttext + ')' + reSpace + '(' + reDayfull + '|' + reDayabbr + ')' + reSpace + 'of', 'i'),
423
- name: 'weekdayof'
418
+ regex: new RegExp(
419
+ '^(' +
420
+ reReltextnumber +
421
+ '|' +
422
+ reReltexttext +
423
+ ')' +
424
+ reSpace +
425
+ '(' +
426
+ reDayfull +
427
+ '|' +
428
+ reDayabbr +
429
+ ')' +
430
+ reSpace +
431
+ 'of',
432
+ 'i',
433
+ ),
434
+ name: 'weekdayof',
424
435
  // todo
425
436
  },
426
437
 
427
438
  mssqltime: {
428
- regex: RegExp('^' + reHour12 + ':' + reMinutelz + ':' + reSecondlz + '[:.]([0-9]+)' + reMeridian, 'i'),
439
+ regex: new RegExp('^' + reHour12 + ':' + reMinutelz + ':' + reSecondlz + '[:.]([0-9]+)' + reMeridian, 'i'),
429
440
  name: 'mssqltime',
430
- callback: function callback(match, hour, minute, second, frac, meridian) {
431
- return this.time(processMeridian(+hour, meridian), +minute, +second, +frac.substr(0, 3));
432
- }
441
+ callback(match, hour, minute, second, frac, meridian) {
442
+ return this.time(processMeridian(+hour, meridian), +minute, +second, +frac.substr(0, 3))
443
+ },
433
444
  },
434
445
 
435
446
  oracledate: {
436
447
  regex: /^(\d{2})-([A-Z]{3})-(\d{2})$/i,
437
448
  name: 'd-M-y',
438
- callback: function callback(match, day, monthText, year) {
439
- var month = {
449
+ callback(match, day, monthText, year) {
450
+ const month = {
440
451
  JAN: 0,
441
452
  FEB: 1,
442
453
  MAR: 2,
@@ -448,363 +459,405 @@ var formats = {
448
459
  SEP: 8,
449
460
  OCT: 9,
450
461
  NOV: 10,
451
- DEC: 11
452
- }[monthText.toUpperCase()];
453
- return this.ymd(2000 + parseInt(year, 10), month, parseInt(day, 10));
454
- }
462
+ DEC: 11,
463
+ }[monthText.toUpperCase()]
464
+ return this.ymd(2000 + parseInt(year, 10), month, parseInt(day, 10))
465
+ },
455
466
  },
456
467
 
457
468
  timeLong12: {
458
- regex: RegExp('^' + reHour12 + '[:.]' + reMinute + '[:.]' + reSecondlz + reSpaceOpt + reMeridian, 'i'),
469
+ regex: new RegExp('^' + reHour12 + '[:.]' + reMinute + '[:.]' + reSecondlz + reSpaceOpt + reMeridian, 'i'),
459
470
  name: 'timelong12',
460
- callback: function callback(match, hour, minute, second, meridian) {
461
- return this.time(processMeridian(+hour, meridian), +minute, +second, 0);
462
- }
471
+ callback(match, hour, minute, second, meridian) {
472
+ return this.time(processMeridian(+hour, meridian), +minute, +second, 0)
473
+ },
463
474
  },
464
475
 
465
476
  timeShort12: {
466
- regex: RegExp('^' + reHour12 + '[:.]' + reMinutelz + reSpaceOpt + reMeridian, 'i'),
477
+ regex: new RegExp('^' + reHour12 + '[:.]' + reMinutelz + reSpaceOpt + reMeridian, 'i'),
467
478
  name: 'timeshort12',
468
- callback: function callback(match, hour, minute, meridian) {
469
- return this.time(processMeridian(+hour, meridian), +minute, 0, 0);
470
- }
479
+ callback(match, hour, minute, meridian) {
480
+ return this.time(processMeridian(+hour, meridian), +minute, 0, 0)
481
+ },
471
482
  },
472
483
 
473
484
  timeTiny12: {
474
- regex: RegExp('^' + reHour12 + reSpaceOpt + reMeridian, 'i'),
485
+ regex: new RegExp('^' + reHour12 + reSpaceOpt + reMeridian, 'i'),
475
486
  name: 'timetiny12',
476
- callback: function callback(match, hour, meridian) {
477
- return this.time(processMeridian(+hour, meridian), 0, 0, 0);
478
- }
487
+ callback(match, hour, meridian) {
488
+ return this.time(processMeridian(+hour, meridian), 0, 0, 0)
489
+ },
479
490
  },
480
491
 
481
492
  soap: {
482
- regex: RegExp('^' + reYear4 + '-' + reMonthlz + '-' + reDaylz + 'T' + reHour24lz + ':' + reMinutelz + ':' + reSecondlz + reFrac + reTzCorrection + '?', 'i'),
493
+ regex: new RegExp(
494
+ '^' +
495
+ reYear4 +
496
+ '-' +
497
+ reMonthlz +
498
+ '-' +
499
+ reDaylz +
500
+ 'T' +
501
+ reHour24lz +
502
+ ':' +
503
+ reMinutelz +
504
+ ':' +
505
+ reSecondlz +
506
+ reFrac +
507
+ reTzCorrection +
508
+ '?',
509
+ 'i',
510
+ ),
483
511
  name: 'soap',
484
- callback: function callback(match, year, month, day, hour, minute, second, frac, tzCorrection) {
485
- return this.ymd(+year, month - 1, +day) && this.time(+hour, +minute, +second, +frac.substr(0, 3)) && this.zone(processTzCorrection(tzCorrection));
486
- }
512
+ callback(match, year, month, day, hour, minute, second, frac, tzCorrection) {
513
+ return (
514
+ this.ymd(+year, month - 1, +day) &&
515
+ this.time(+hour, +minute, +second, +frac.substr(0, 3)) &&
516
+ this.zone(processTzCorrection(tzCorrection))
517
+ )
518
+ },
487
519
  },
488
520
 
489
521
  wddx: {
490
- regex: RegExp('^' + reYear4 + '-' + reMonth + '-' + reDay + 'T' + reHour24 + ':' + reMinute + ':' + reSecond),
522
+ regex: new RegExp('^' + reYear4 + '-' + reMonth + '-' + reDay + 'T' + reHour24 + ':' + reMinute + ':' + reSecond),
491
523
  name: 'wddx',
492
- callback: function callback(match, year, month, day, hour, minute, second) {
493
- return this.ymd(+year, month - 1, +day) && this.time(+hour, +minute, +second, 0);
494
- }
524
+ callback(match, year, month, day, hour, minute, second) {
525
+ return this.ymd(+year, month - 1, +day) && this.time(+hour, +minute, +second, 0)
526
+ },
495
527
  },
496
528
 
497
529
  exif: {
498
- regex: RegExp('^' + reYear4 + ':' + reMonthlz + ':' + reDaylz + ' ' + reHour24lz + ':' + reMinutelz + ':' + reSecondlz, 'i'),
530
+ regex: new RegExp(
531
+ '^' + reYear4 + ':' + reMonthlz + ':' + reDaylz + ' ' + reHour24lz + ':' + reMinutelz + ':' + reSecondlz,
532
+ 'i',
533
+ ),
499
534
  name: 'exif',
500
- callback: function callback(match, year, month, day, hour, minute, second) {
501
- return this.ymd(+year, month - 1, +day) && this.time(+hour, +minute, +second, 0);
502
- }
535
+ callback(match, year, month, day, hour, minute, second) {
536
+ return this.ymd(+year, month - 1, +day) && this.time(+hour, +minute, +second, 0)
537
+ },
503
538
  },
504
539
 
505
540
  xmlRpc: {
506
- regex: RegExp('^' + reYear4 + reMonthlz + reDaylz + 'T' + reHour24 + ':' + reMinutelz + ':' + reSecondlz),
541
+ regex: new RegExp('^' + reYear4 + reMonthlz + reDaylz + 'T' + reHour24 + ':' + reMinutelz + ':' + reSecondlz),
507
542
  name: 'xmlrpc',
508
- callback: function callback(match, year, month, day, hour, minute, second) {
509
- return this.ymd(+year, month - 1, +day) && this.time(+hour, +minute, +second, 0);
510
- }
543
+ callback(match, year, month, day, hour, minute, second) {
544
+ return this.ymd(+year, month - 1, +day) && this.time(+hour, +minute, +second, 0)
545
+ },
511
546
  },
512
547
 
513
548
  xmlRpcNoColon: {
514
- regex: RegExp('^' + reYear4 + reMonthlz + reDaylz + '[Tt]' + reHour24 + reMinutelz + reSecondlz),
549
+ regex: new RegExp('^' + reYear4 + reMonthlz + reDaylz + '[Tt]' + reHour24 + reMinutelz + reSecondlz),
515
550
  name: 'xmlrpcnocolon',
516
- callback: function callback(match, year, month, day, hour, minute, second) {
517
- return this.ymd(+year, month - 1, +day) && this.time(+hour, +minute, +second, 0);
518
- }
551
+ callback(match, year, month, day, hour, minute, second) {
552
+ return this.ymd(+year, month - 1, +day) && this.time(+hour, +minute, +second, 0)
553
+ },
519
554
  },
520
555
 
521
556
  clf: {
522
- regex: RegExp('^' + reDay + '/(' + reMonthAbbr + ')/' + reYear4 + ':' + reHour24lz + ':' + reMinutelz + ':' + reSecondlz + reSpace + reTzCorrection, 'i'),
557
+ regex: new RegExp(
558
+ '^' +
559
+ reDay +
560
+ '/(' +
561
+ reMonthAbbr +
562
+ ')/' +
563
+ reYear4 +
564
+ ':' +
565
+ reHour24lz +
566
+ ':' +
567
+ reMinutelz +
568
+ ':' +
569
+ reSecondlz +
570
+ reSpace +
571
+ reTzCorrection,
572
+ 'i',
573
+ ),
523
574
  name: 'clf',
524
- callback: function callback(match, day, month, year, hour, minute, second, tzCorrection) {
525
- return this.ymd(+year, lookupMonth(month), +day) && this.time(+hour, +minute, +second, 0) && this.zone(processTzCorrection(tzCorrection));
526
- }
575
+ callback(match, day, month, year, hour, minute, second, tzCorrection) {
576
+ return (
577
+ this.ymd(+year, lookupMonth(month), +day) &&
578
+ this.time(+hour, +minute, +second, 0) &&
579
+ this.zone(processTzCorrection(tzCorrection))
580
+ )
581
+ },
527
582
  },
528
583
 
529
584
  iso8601long: {
530
- regex: RegExp('^t?' + reHour24 + '[:.]' + reMinute + '[:.]' + reSecond + reFrac, 'i'),
585
+ regex: new RegExp('^t?' + reHour24 + '[:.]' + reMinute + '[:.]' + reSecond + reFrac, 'i'),
531
586
  name: 'iso8601long',
532
- callback: function callback(match, hour, minute, second, frac) {
533
- return this.time(+hour, +minute, +second, +frac.substr(0, 3));
534
- }
587
+ callback(match, hour, minute, second, frac) {
588
+ return this.time(+hour, +minute, +second, +frac.substr(0, 3))
589
+ },
535
590
  },
536
591
 
537
592
  dateTextual: {
538
- regex: RegExp('^' + reMonthText + '[ .\\t-]*' + reDay + '[,.stndrh\\t ]+' + reYear, 'i'),
593
+ regex: new RegExp('^' + reMonthText + '[ .\\t-]*' + reDay + '[,.stndrh\\t ]+' + reYear, 'i'),
539
594
  name: 'datetextual',
540
- callback: function callback(match, month, day, year) {
541
- return this.ymd(processYear(year), lookupMonth(month), +day);
542
- }
595
+ callback(match, month, day, year) {
596
+ return this.ymd(processYear(year), lookupMonth(month), +day)
597
+ },
543
598
  },
544
599
 
545
600
  pointedDate4: {
546
- regex: RegExp('^' + reDay + '[.\\t-]' + reMonth + '[.-]' + reYear4),
601
+ regex: new RegExp('^' + reDay + '[.\\t-]' + reMonth + '[.-]' + reYear4),
547
602
  name: 'pointeddate4',
548
- callback: function callback(match, day, month, year) {
549
- return this.ymd(+year, month - 1, +day);
550
- }
603
+ callback(match, day, month, year) {
604
+ return this.ymd(+year, month - 1, +day)
605
+ },
551
606
  },
552
607
 
553
608
  pointedDate2: {
554
- regex: RegExp('^' + reDay + '[.\\t]' + reMonth + '\\.' + reYear2),
609
+ regex: new RegExp('^' + reDay + '[.\\t]' + reMonth + '\\.' + reYear2),
555
610
  name: 'pointeddate2',
556
- callback: function callback(match, day, month, year) {
557
- return this.ymd(processYear(year), month - 1, +day);
558
- }
611
+ callback(match, day, month, year) {
612
+ return this.ymd(processYear(year), month - 1, +day)
613
+ },
559
614
  },
560
615
 
561
616
  timeLong24: {
562
- regex: RegExp('^t?' + reHour24 + '[:.]' + reMinute + '[:.]' + reSecond),
617
+ regex: new RegExp('^t?' + reHour24 + '[:.]' + reMinute + '[:.]' + reSecond),
563
618
  name: 'timelong24',
564
- callback: function callback(match, hour, minute, second) {
565
- return this.time(+hour, +minute, +second, 0);
566
- }
619
+ callback(match, hour, minute, second) {
620
+ return this.time(+hour, +minute, +second, 0)
621
+ },
567
622
  },
568
623
 
569
624
  dateNoColon: {
570
- regex: RegExp('^' + reYear4 + reMonthlz + reDaylz),
625
+ regex: new RegExp('^' + reYear4 + reMonthlz + reDaylz),
571
626
  name: 'datenocolon',
572
- callback: function callback(match, year, month, day) {
573
- return this.ymd(+year, month - 1, +day);
574
- }
627
+ callback(match, year, month, day) {
628
+ return this.ymd(+year, month - 1, +day)
629
+ },
575
630
  },
576
631
 
577
632
  pgydotd: {
578
- regex: RegExp('^' + reYear4 + '\\.?' + reDayOfYear),
633
+ regex: new RegExp('^' + reYear4 + '\\.?' + reDayOfYear),
579
634
  name: 'pgydotd',
580
- callback: function callback(match, year, day) {
581
- return this.ymd(+year, 0, +day);
582
- }
635
+ callback(match, year, day) {
636
+ return this.ymd(+year, 0, +day)
637
+ },
583
638
  },
584
639
 
585
640
  timeShort24: {
586
- regex: RegExp('^t?' + reHour24 + '[:.]' + reMinute, 'i'),
641
+ regex: new RegExp('^t?' + reHour24 + '[:.]' + reMinute, 'i'),
587
642
  name: 'timeshort24',
588
- callback: function callback(match, hour, minute) {
589
- return this.time(+hour, +minute, 0, 0);
590
- }
643
+ callback(match, hour, minute) {
644
+ return this.time(+hour, +minute, 0, 0)
645
+ },
591
646
  },
592
647
 
593
648
  iso8601noColon: {
594
- regex: RegExp('^t?' + reHour24lz + reMinutelz + reSecondlz, 'i'),
649
+ regex: new RegExp('^t?' + reHour24lz + reMinutelz + reSecondlz, 'i'),
595
650
  name: 'iso8601nocolon',
596
- callback: function callback(match, hour, minute, second) {
597
- return this.time(+hour, +minute, +second, 0);
598
- }
651
+ callback(match, hour, minute, second) {
652
+ return this.time(+hour, +minute, +second, 0)
653
+ },
599
654
  },
600
655
 
601
656
  iso8601dateSlash: {
602
657
  // eventhough the trailing slash is optional in PHP
603
658
  // here it's mandatory and inputs without the slash
604
659
  // are handled by dateslash
605
- regex: RegExp('^' + reYear4 + '/' + reMonthlz + '/' + reDaylz + '/'),
660
+ regex: new RegExp('^' + reYear4 + '/' + reMonthlz + '/' + reDaylz + '/'),
606
661
  name: 'iso8601dateslash',
607
- callback: function callback(match, year, month, day) {
608
- return this.ymd(+year, month - 1, +day);
609
- }
662
+ callback(match, year, month, day) {
663
+ return this.ymd(+year, month - 1, +day)
664
+ },
610
665
  },
611
666
 
612
667
  dateSlash: {
613
- regex: RegExp('^' + reYear4 + '/' + reMonth + '/' + reDay),
668
+ regex: new RegExp('^' + reYear4 + '/' + reMonth + '/' + reDay),
614
669
  name: 'dateslash',
615
- callback: function callback(match, year, month, day) {
616
- return this.ymd(+year, month - 1, +day);
617
- }
670
+ callback(match, year, month, day) {
671
+ return this.ymd(+year, month - 1, +day)
672
+ },
618
673
  },
619
674
 
620
675
  american: {
621
- regex: RegExp('^' + reMonth + '/' + reDay + '/' + reYear),
676
+ regex: new RegExp('^' + reMonth + '/' + reDay + '/' + reYear),
622
677
  name: 'american',
623
- callback: function callback(match, month, day, year) {
624
- return this.ymd(processYear(year), month - 1, +day);
625
- }
678
+ callback(match, month, day, year) {
679
+ return this.ymd(processYear(year), month - 1, +day)
680
+ },
626
681
  },
627
682
 
628
683
  americanShort: {
629
- regex: RegExp('^' + reMonth + '/' + reDay),
684
+ regex: new RegExp('^' + reMonth + '/' + reDay),
630
685
  name: 'americanshort',
631
- callback: function callback(match, month, day) {
632
- return this.ymd(this.y, month - 1, +day);
633
- }
686
+ callback(match, month, day) {
687
+ return this.ymd(this.y, month - 1, +day)
688
+ },
634
689
  },
635
690
 
636
691
  gnuDateShortOrIso8601date2: {
637
692
  // iso8601date2 is complete subset of gnudateshort
638
- regex: RegExp('^' + reYear + '-' + reMonth + '-' + reDay),
693
+ regex: new RegExp('^' + reYear + '-' + reMonth + '-' + reDay),
639
694
  name: 'gnudateshort | iso8601date2',
640
- callback: function callback(match, year, month, day) {
641
- return this.ymd(processYear(year), month - 1, +day);
642
- }
695
+ callback(match, year, month, day) {
696
+ return this.ymd(processYear(year), month - 1, +day)
697
+ },
643
698
  },
644
699
 
645
700
  iso8601date4: {
646
- regex: RegExp('^' + reYear4withSign + '-' + reMonthlz + '-' + reDaylz),
701
+ regex: new RegExp('^' + reYear4withSign + '-' + reMonthlz + '-' + reDaylz),
647
702
  name: 'iso8601date4',
648
- callback: function callback(match, year, month, day) {
649
- return this.ymd(+year, month - 1, +day);
650
- }
703
+ callback(match, year, month, day) {
704
+ return this.ymd(+year, month - 1, +day)
705
+ },
651
706
  },
652
707
 
653
708
  gnuNoColon: {
654
- regex: RegExp('^t?' + reHour24lz + reMinutelz, 'i'),
709
+ regex: new RegExp('^t?' + reHour24lz + reMinutelz, 'i'),
655
710
  name: 'gnunocolon',
656
- callback: function callback(match, hour, minute) {
711
+ callback(match, hour, minute) {
657
712
  // this rule is a special case
658
713
  // if time was already set once by any preceding rule, it sets the captured value as year
659
714
  switch (this.times) {
660
715
  case 0:
661
- return this.time(+hour, +minute, 0, this.f);
716
+ return this.time(+hour, +minute, 0, this.f)
662
717
  case 1:
663
- this.y = hour * 100 + +minute;
664
- this.times++;
718
+ this.y = hour * 100 + +minute
719
+ this.times++
665
720
 
666
- return true;
721
+ return true
667
722
  default:
668
- return false;
723
+ return false
669
724
  }
670
- }
725
+ },
671
726
  },
672
727
 
673
728
  gnuDateShorter: {
674
- regex: RegExp('^' + reYear4 + '-' + reMonth),
729
+ regex: new RegExp('^' + reYear4 + '-' + reMonth),
675
730
  name: 'gnudateshorter',
676
- callback: function callback(match, year, month) {
677
- return this.ymd(+year, month - 1, 1);
678
- }
731
+ callback(match, year, month) {
732
+ return this.ymd(+year, month - 1, 1)
733
+ },
679
734
  },
680
735
 
681
736
  pgTextReverse: {
682
- // note: allowed years are from 32-9999
737
+ // note: allowed years are from 32-9999
683
738
  // years below 32 should be treated as days in datefull
684
- regex: RegExp('^' + '(\\d{3,4}|[4-9]\\d|3[2-9])-(' + reMonthAbbr + ')-' + reDaylz, 'i'),
739
+ regex: new RegExp('^' + '(\\d{3,4}|[4-9]\\d|3[2-9])-(' + reMonthAbbr + ')-' + reDaylz, 'i'),
685
740
  name: 'pgtextreverse',
686
- callback: function callback(match, year, month, day) {
687
- return this.ymd(processYear(year), lookupMonth(month), +day);
688
- }
741
+ callback(match, year, month, day) {
742
+ return this.ymd(processYear(year), lookupMonth(month), +day)
743
+ },
689
744
  },
690
745
 
691
746
  dateFull: {
692
- regex: RegExp('^' + reDay + '[ \\t.-]*' + reMonthText + '[ \\t.-]*' + reYear, 'i'),
747
+ regex: new RegExp('^' + reDay + '[ \\t.-]*' + reMonthText + '[ \\t.-]*' + reYear, 'i'),
693
748
  name: 'datefull',
694
- callback: function callback(match, day, month, year) {
695
- return this.ymd(processYear(year), lookupMonth(month), +day);
696
- }
749
+ callback(match, day, month, year) {
750
+ return this.ymd(processYear(year), lookupMonth(month), +day)
751
+ },
697
752
  },
698
753
 
699
754
  dateNoDay: {
700
- regex: RegExp('^' + reMonthText + '[ .\\t-]*' + reYear4, 'i'),
755
+ regex: new RegExp('^' + reMonthText + '[ .\\t-]*' + reYear4, 'i'),
701
756
  name: 'datenoday',
702
- callback: function callback(match, month, year) {
703
- return this.ymd(+year, lookupMonth(month), 1);
704
- }
757
+ callback(match, month, year) {
758
+ return this.ymd(+year, lookupMonth(month), 1)
759
+ },
705
760
  },
706
761
 
707
762
  dateNoDayRev: {
708
- regex: RegExp('^' + reYear4 + '[ .\\t-]*' + reMonthText, 'i'),
763
+ regex: new RegExp('^' + reYear4 + '[ .\\t-]*' + reMonthText, 'i'),
709
764
  name: 'datenodayrev',
710
- callback: function callback(match, year, month) {
711
- return this.ymd(+year, lookupMonth(month), 1);
712
- }
765
+ callback(match, year, month) {
766
+ return this.ymd(+year, lookupMonth(month), 1)
767
+ },
713
768
  },
714
769
 
715
770
  pgTextShort: {
716
- regex: RegExp('^(' + reMonthAbbr + ')-' + reDaylz + '-' + reYear, 'i'),
771
+ regex: new RegExp('^(' + reMonthAbbr + ')-' + reDaylz + '-' + reYear, 'i'),
717
772
  name: 'pgtextshort',
718
- callback: function callback(match, month, day, year) {
719
- return this.ymd(processYear(year), lookupMonth(month), +day);
720
- }
773
+ callback(match, month, day, year) {
774
+ return this.ymd(processYear(year), lookupMonth(month), +day)
775
+ },
721
776
  },
722
777
 
723
778
  dateNoYear: {
724
- regex: RegExp('^' + reDateNoYear, 'i'),
779
+ regex: new RegExp('^' + reDateNoYear, 'i'),
725
780
  name: 'datenoyear',
726
- callback: function callback(match, month, day) {
727
- return this.ymd(this.y, lookupMonth(month), +day);
728
- }
781
+ callback(match, month, day) {
782
+ return this.ymd(this.y, lookupMonth(month), +day)
783
+ },
729
784
  },
730
785
 
731
786
  dateNoYearRev: {
732
- regex: RegExp('^' + reDay + '[ .\\t-]*' + reMonthText, 'i'),
787
+ regex: new RegExp('^' + reDay + '[ .\\t-]*' + reMonthText, 'i'),
733
788
  name: 'datenoyearrev',
734
- callback: function callback(match, day, month) {
735
- return this.ymd(this.y, lookupMonth(month), +day);
736
- }
789
+ callback(match, day, month) {
790
+ return this.ymd(this.y, lookupMonth(month), +day)
791
+ },
737
792
  },
738
793
 
739
794
  isoWeekDay: {
740
- regex: RegExp('^' + reYear4 + '-?W' + reWeekOfYear + '(?:-?([0-7]))?'),
795
+ regex: new RegExp('^' + reYear4 + '-?W' + reWeekOfYear + '(?:-?([0-7]))?'),
741
796
  name: 'isoweekday | isoweek',
742
- callback: function callback(match, year, week, day) {
743
- day = day ? +day : 1;
797
+ callback(match, year, week, day) {
798
+ day = day ? +day : 1
744
799
 
745
800
  if (!this.ymd(+year, 0, 1)) {
746
- return false;
801
+ return false
747
802
  }
748
803
 
749
804
  // get day of week for Jan 1st
750
- var dayOfWeek = new Date(this.y, this.m, this.d).getDay();
805
+ let dayOfWeek = new Date(this.y, this.m, this.d).getDay()
751
806
 
752
807
  // and use the day to figure out the offset for day 1 of week 1
753
- dayOfWeek = 0 - (dayOfWeek > 4 ? dayOfWeek - 7 : dayOfWeek);
808
+ dayOfWeek = 0 - (dayOfWeek > 4 ? dayOfWeek - 7 : dayOfWeek)
754
809
 
755
- this.rd += dayOfWeek + (week - 1) * 7 + day;
756
- }
810
+ this.rd += dayOfWeek + (week - 1) * 7 + day
811
+ },
757
812
  },
758
813
 
759
814
  relativeText: {
760
- regex: RegExp('^(' + reReltextnumber + '|' + reReltexttext + ')' + reSpace + '(' + reReltextunit + ')', 'i'),
815
+ regex: new RegExp('^(' + reReltextnumber + '|' + reReltexttext + ')' + reSpace + '(' + reReltextunit + ')', 'i'),
761
816
  name: 'relativetext',
762
- callback: function callback(match, relValue, relUnit) {
817
+ callback(match, relValue, relUnit) {
763
818
  // todo: implement handling of 'this time-unit'
764
- // eslint-disable-next-line no-unused-vars
765
- var _lookupRelative = lookupRelative(relValue),
766
- amount = _lookupRelative.amount,
767
- behavior = _lookupRelative.behavior;
819
+ // biome-ignore lint/correctness/noUnusedVariables: behavior reserved for future use
820
+ const { amount, behavior } = lookupRelative(relValue)
768
821
 
769
822
  switch (relUnit.toLowerCase()) {
770
823
  case 'sec':
771
824
  case 'secs':
772
825
  case 'second':
773
826
  case 'seconds':
774
- this.rs += amount;
775
- break;
827
+ this.rs += amount
828
+ break
776
829
  case 'min':
777
830
  case 'mins':
778
831
  case 'minute':
779
832
  case 'minutes':
780
- this.ri += amount;
781
- break;
833
+ this.ri += amount
834
+ break
782
835
  case 'hour':
783
836
  case 'hours':
784
- this.rh += amount;
785
- break;
837
+ this.rh += amount
838
+ break
786
839
  case 'day':
787
840
  case 'days':
788
- this.rd += amount;
789
- break;
841
+ this.rd += amount
842
+ break
790
843
  case 'fortnight':
791
844
  case 'fortnights':
792
845
  case 'forthnight':
793
846
  case 'forthnights':
794
- this.rd += amount * 14;
795
- break;
847
+ this.rd += amount * 14
848
+ break
796
849
  case 'week':
797
850
  case 'weeks':
798
- this.rd += amount * 7;
799
- break;
851
+ this.rd += amount * 7
852
+ break
800
853
  case 'month':
801
854
  case 'months':
802
- this.rm += amount;
803
- break;
855
+ this.rm += amount
856
+ break
804
857
  case 'year':
805
858
  case 'years':
806
- this.ry += amount;
807
- break;
859
+ this.ry += amount
860
+ break
808
861
  case 'mon':
809
862
  case 'monday':
810
863
  case 'tue':
@@ -819,66 +872,66 @@ var formats = {
819
872
  case 'saturday':
820
873
  case 'sun':
821
874
  case 'sunday':
822
- this.resetTime();
823
- this.weekday = lookupWeekday(relUnit, 7);
824
- this.weekdayBehavior = 1;
825
- this.rd += (amount > 0 ? amount - 1 : amount) * 7;
826
- break;
875
+ this.resetTime()
876
+ this.weekday = lookupWeekday(relUnit, 7)
877
+ this.weekdayBehavior = 1
878
+ this.rd += (amount > 0 ? amount - 1 : amount) * 7
879
+ break
827
880
  case 'weekday':
828
881
  case 'weekdays':
829
882
  // todo
830
- break;
883
+ break
831
884
  }
832
- }
885
+ },
833
886
  },
834
887
 
835
888
  relative: {
836
- regex: RegExp('^([+-]*)[ \\t]*(\\d+)' + reSpaceOpt + '(' + reReltextunit + '|week)', 'i'),
889
+ regex: new RegExp('^([+-]*)[ \\t]*(\\d+)' + reSpaceOpt + '(' + reReltextunit + '|week)', 'i'),
837
890
  name: 'relative',
838
- callback: function callback(match, signs, relValue, relUnit) {
839
- var minuses = signs.replace(/[^-]/g, '').length;
891
+ callback(match, signs, relValue, relUnit) {
892
+ const minuses = signs.replace(/[^-]/g, '').length
840
893
 
841
- var amount = +relValue * Math.pow(-1, minuses);
894
+ const amount = +relValue * Math.pow(-1, minuses)
842
895
 
843
896
  switch (relUnit.toLowerCase()) {
844
897
  case 'sec':
845
898
  case 'secs':
846
899
  case 'second':
847
900
  case 'seconds':
848
- this.rs += amount;
849
- break;
901
+ this.rs += amount
902
+ break
850
903
  case 'min':
851
904
  case 'mins':
852
905
  case 'minute':
853
906
  case 'minutes':
854
- this.ri += amount;
855
- break;
907
+ this.ri += amount
908
+ break
856
909
  case 'hour':
857
910
  case 'hours':
858
- this.rh += amount;
859
- break;
911
+ this.rh += amount
912
+ break
860
913
  case 'day':
861
914
  case 'days':
862
- this.rd += amount;
863
- break;
915
+ this.rd += amount
916
+ break
864
917
  case 'fortnight':
865
918
  case 'fortnights':
866
919
  case 'forthnight':
867
920
  case 'forthnights':
868
- this.rd += amount * 14;
869
- break;
921
+ this.rd += amount * 14
922
+ break
870
923
  case 'week':
871
924
  case 'weeks':
872
- this.rd += amount * 7;
873
- break;
925
+ this.rd += amount * 7
926
+ break
874
927
  case 'month':
875
928
  case 'months':
876
- this.rm += amount;
877
- break;
929
+ this.rm += amount
930
+ break
878
931
  case 'year':
879
932
  case 'years':
880
- this.ry += amount;
881
- break;
933
+ this.ry += amount
934
+ break
882
935
  case 'mon':
883
936
  case 'monday':
884
937
  case 'tue':
@@ -893,150 +946,155 @@ var formats = {
893
946
  case 'saturday':
894
947
  case 'sun':
895
948
  case 'sunday':
896
- this.resetTime();
897
- this.weekday = lookupWeekday(relUnit, 7);
898
- this.weekdayBehavior = 1;
899
- this.rd += (amount > 0 ? amount - 1 : amount) * 7;
900
- break;
949
+ this.resetTime()
950
+ this.weekday = lookupWeekday(relUnit, 7)
951
+ this.weekdayBehavior = 1
952
+ this.rd += (amount > 0 ? amount - 1 : amount) * 7
953
+ break
901
954
  case 'weekday':
902
955
  case 'weekdays':
903
956
  // todo
904
- break;
957
+ break
905
958
  }
906
- }
959
+ },
907
960
  },
908
961
 
909
962
  dayText: {
910
- regex: RegExp('^(' + reDaytext + ')', 'i'),
963
+ regex: new RegExp('^(' + reDaytext + ')', 'i'),
911
964
  name: 'daytext',
912
- callback: function callback(match, dayText) {
913
- this.resetTime();
914
- this.weekday = lookupWeekday(dayText, 0);
965
+ callback(match, dayText) {
966
+ this.resetTime()
967
+ this.weekday = lookupWeekday(dayText, 0)
915
968
 
916
969
  if (this.weekdayBehavior !== 2) {
917
- this.weekdayBehavior = 1;
970
+ this.weekdayBehavior = 1
918
971
  }
919
- }
972
+ },
920
973
  },
921
974
 
922
975
  relativeTextWeek: {
923
- regex: RegExp('^(' + reReltexttext + ')' + reSpace + 'week', 'i'),
976
+ regex: new RegExp('^(' + reReltexttext + ')' + reSpace + 'week', 'i'),
924
977
  name: 'relativetextweek',
925
- callback: function callback(match, relText) {
926
- this.weekdayBehavior = 2;
978
+ callback(match, relText) {
979
+ this.weekdayBehavior = 2
927
980
 
928
981
  switch (relText.toLowerCase()) {
929
982
  case 'this':
930
- this.rd += 0;
931
- break;
983
+ this.rd += 0
984
+ break
932
985
  case 'next':
933
- this.rd += 7;
934
- break;
986
+ this.rd += 7
987
+ break
935
988
  case 'last':
936
989
  case 'previous':
937
- this.rd -= 7;
938
- break;
990
+ this.rd -= 7
991
+ break
939
992
  }
940
993
 
941
994
  if (isNaN(this.weekday)) {
942
- this.weekday = 1;
995
+ this.weekday = 1
943
996
  }
944
- }
997
+ },
945
998
  },
946
999
 
947
1000
  monthFullOrMonthAbbr: {
948
- regex: RegExp('^(' + reMonthFull + '|' + reMonthAbbr + ')', 'i'),
1001
+ regex: new RegExp('^(' + reMonthFull + '|' + reMonthAbbr + ')', 'i'),
949
1002
  name: 'monthfull | monthabbr',
950
- callback: function callback(match, month) {
951
- return this.ymd(this.y, lookupMonth(month), this.d);
952
- }
1003
+ callback(match, month) {
1004
+ return this.ymd(this.y, lookupMonth(month), this.d)
1005
+ },
953
1006
  },
954
1007
 
955
1008
  tzCorrection: {
956
- regex: RegExp('^' + reTzCorrection, 'i'),
1009
+ regex: new RegExp('^' + reTzCorrection, 'i'),
957
1010
  name: 'tzcorrection',
958
- callback: function callback(tzCorrection) {
959
- return this.zone(processTzCorrection(tzCorrection));
960
- }
1011
+ callback(tzCorrection) {
1012
+ return this.zone(processTzCorrection(tzCorrection))
1013
+ },
961
1014
  },
962
1015
 
963
1016
  tzAbbr: {
964
- regex: RegExp('^' + reTzAbbr),
1017
+ regex: new RegExp('^' + reTzAbbr),
965
1018
  name: 'tzabbr',
966
- callback: function callback(match, abbr) {
967
- var offset = tzAbbrOffsets[abbr.toLowerCase()];
1019
+ callback(match, abbr) {
1020
+ const offset = tzAbbrOffsets[abbr.toLowerCase()]
968
1021
 
969
1022
  if (isNaN(offset)) {
970
- return false;
1023
+ return false
971
1024
  }
972
1025
 
973
- return this.zone(offset);
974
- }
1026
+ return this.zone(offset)
1027
+ },
975
1028
  },
976
1029
 
977
1030
  ago: {
978
1031
  regex: /^ago/i,
979
1032
  name: 'ago',
980
- callback: function callback() {
981
- this.ry = -this.ry;
982
- this.rm = -this.rm;
983
- this.rd = -this.rd;
984
- this.rh = -this.rh;
985
- this.ri = -this.ri;
986
- this.rs = -this.rs;
987
- this.rf = -this.rf;
988
- }
1033
+ callback() {
1034
+ this.ry = -this.ry
1035
+ this.rm = -this.rm
1036
+ this.rd = -this.rd
1037
+ this.rh = -this.rh
1038
+ this.ri = -this.ri
1039
+ this.rs = -this.rs
1040
+ this.rf = -this.rf
1041
+ },
989
1042
  },
990
1043
 
991
1044
  year4: {
992
- regex: RegExp('^' + reYear4),
1045
+ regex: new RegExp('^' + reYear4),
993
1046
  name: 'year4',
994
- callback: function callback(match, year) {
995
- this.y = +year;
996
- return true;
997
- }
1047
+ callback(match, year) {
1048
+ this.y = +year
1049
+ return true
1050
+ },
998
1051
  },
999
1052
 
1000
1053
  whitespace: {
1001
1054
  regex: /^[ .,\t]+/,
1002
- name: 'whitespace'
1055
+ name: 'whitespace',
1003
1056
  // do nothing
1004
1057
  },
1005
1058
 
1006
1059
  dateShortWithTimeLong: {
1007
- regex: RegExp('^' + reDateNoYear + 't?' + reHour24 + '[:.]' + reMinute + '[:.]' + reSecond, 'i'),
1060
+ regex: new RegExp('^' + reDateNoYear + 't?' + reHour24 + '[:.]' + reMinute + '[:.]' + reSecond, 'i'),
1008
1061
  name: 'dateshortwithtimelong',
1009
- callback: function callback(match, month, day, hour, minute, second) {
1010
- return this.ymd(this.y, lookupMonth(month), +day) && this.time(+hour, +minute, +second, 0);
1011
- }
1062
+ callback(match, month, day, hour, minute, second) {
1063
+ return this.ymd(this.y, lookupMonth(month), +day) && this.time(+hour, +minute, +second, 0)
1064
+ },
1012
1065
  },
1013
1066
 
1014
1067
  dateShortWithTimeLong12: {
1015
- regex: RegExp('^' + reDateNoYear + reHour12 + '[:.]' + reMinute + '[:.]' + reSecondlz + reSpaceOpt + reMeridian, 'i'),
1068
+ regex: new RegExp(
1069
+ '^' + reDateNoYear + reHour12 + '[:.]' + reMinute + '[:.]' + reSecondlz + reSpaceOpt + reMeridian,
1070
+ 'i',
1071
+ ),
1016
1072
  name: 'dateshortwithtimelong12',
1017
- callback: function callback(match, month, day, hour, minute, second, meridian) {
1018
- return this.ymd(this.y, lookupMonth(month), +day) && this.time(processMeridian(+hour, meridian), +minute, +second, 0);
1019
- }
1073
+ callback(match, month, day, hour, minute, second, meridian) {
1074
+ return (
1075
+ this.ymd(this.y, lookupMonth(month), +day) && this.time(processMeridian(+hour, meridian), +minute, +second, 0)
1076
+ )
1077
+ },
1020
1078
  },
1021
1079
 
1022
1080
  dateShortWithTimeShort: {
1023
- regex: RegExp('^' + reDateNoYear + 't?' + reHour24 + '[:.]' + reMinute, 'i'),
1081
+ regex: new RegExp('^' + reDateNoYear + 't?' + reHour24 + '[:.]' + reMinute, 'i'),
1024
1082
  name: 'dateshortwithtimeshort',
1025
- callback: function callback(match, month, day, hour, minute) {
1026
- return this.ymd(this.y, lookupMonth(month), +day) && this.time(+hour, +minute, 0, 0);
1027
- }
1083
+ callback(match, month, day, hour, minute) {
1084
+ return this.ymd(this.y, lookupMonth(month), +day) && this.time(+hour, +minute, 0, 0)
1085
+ },
1028
1086
  },
1029
1087
 
1030
1088
  dateShortWithTimeShort12: {
1031
- regex: RegExp('^' + reDateNoYear + reHour12 + '[:.]' + reMinutelz + reSpaceOpt + reMeridian, 'i'),
1089
+ regex: new RegExp('^' + reDateNoYear + reHour12 + '[:.]' + reMinutelz + reSpaceOpt + reMeridian, 'i'),
1032
1090
  name: 'dateshortwithtimeshort12',
1033
- callback: function callback(match, month, day, hour, minute, meridian) {
1034
- return this.ymd(this.y, lookupMonth(month), +day) && this.time(processMeridian(+hour, meridian), +minute, 0, 0);
1035
- }
1036
- }
1037
- };
1091
+ callback(match, month, day, hour, minute, meridian) {
1092
+ return this.ymd(this.y, lookupMonth(month), +day) && this.time(processMeridian(+hour, meridian), +minute, 0, 0)
1093
+ },
1094
+ },
1095
+ }
1038
1096
 
1039
- var resultProto = {
1097
+ const resultProto = {
1040
1098
  // date
1041
1099
  y: NaN,
1042
1100
  m: NaN,
@@ -1073,174 +1131,178 @@ var resultProto = {
1073
1131
  zones: 0,
1074
1132
 
1075
1133
  // helper functions
1076
- ymd: function ymd(y, m, d) {
1134
+ ymd(y, m, d) {
1077
1135
  if (this.dates > 0) {
1078
- return false;
1136
+ return false
1079
1137
  }
1080
1138
 
1081
- this.dates++;
1082
- this.y = y;
1083
- this.m = m;
1084
- this.d = d;
1085
- return true;
1139
+ this.dates++
1140
+ this.y = y
1141
+ this.m = m
1142
+ this.d = d
1143
+ return true
1086
1144
  },
1087
- time: function time(h, i, s, f) {
1145
+
1146
+ time(h, i, s, f) {
1088
1147
  if (this.times > 0) {
1089
- return false;
1148
+ return false
1090
1149
  }
1091
1150
 
1092
- this.times++;
1093
- this.h = h;
1094
- this.i = i;
1095
- this.s = s;
1096
- this.f = f;
1151
+ this.times++
1152
+ this.h = h
1153
+ this.i = i
1154
+ this.s = s
1155
+ this.f = f
1097
1156
 
1098
- return true;
1157
+ return true
1099
1158
  },
1100
- resetTime: function resetTime() {
1101
- this.h = 0;
1102
- this.i = 0;
1103
- this.s = 0;
1104
- this.f = 0;
1105
- this.times = 0;
1106
1159
 
1107
- return true;
1160
+ resetTime() {
1161
+ this.h = 0
1162
+ this.i = 0
1163
+ this.s = 0
1164
+ this.f = 0
1165
+ this.times = 0
1166
+
1167
+ return true
1108
1168
  },
1109
- zone: function zone(minutes) {
1169
+
1170
+ zone(minutes) {
1110
1171
  if (this.zones <= 1) {
1111
- this.zones++;
1112
- this.z = minutes;
1113
- return true;
1172
+ this.zones++
1173
+ this.z = minutes
1174
+ return true
1114
1175
  }
1115
1176
 
1116
- return false;
1177
+ return false
1117
1178
  },
1118
- toDate: function toDate(relativeTo) {
1179
+
1180
+ toDate(relativeTo) {
1119
1181
  if (this.dates && !this.times) {
1120
- this.h = this.i = this.s = this.f = 0;
1182
+ this.h = this.i = this.s = this.f = 0
1121
1183
  }
1122
1184
 
1123
1185
  // fill holes
1124
1186
  if (isNaN(this.y)) {
1125
- this.y = relativeTo.getFullYear();
1187
+ this.y = relativeTo.getFullYear()
1126
1188
  }
1127
1189
 
1128
1190
  if (isNaN(this.m)) {
1129
- this.m = relativeTo.getMonth();
1191
+ this.m = relativeTo.getMonth()
1130
1192
  }
1131
1193
 
1132
1194
  if (isNaN(this.d)) {
1133
- this.d = relativeTo.getDate();
1195
+ this.d = relativeTo.getDate()
1134
1196
  }
1135
1197
 
1136
1198
  if (isNaN(this.h)) {
1137
- this.h = relativeTo.getHours();
1199
+ this.h = relativeTo.getHours()
1138
1200
  }
1139
1201
 
1140
1202
  if (isNaN(this.i)) {
1141
- this.i = relativeTo.getMinutes();
1203
+ this.i = relativeTo.getMinutes()
1142
1204
  }
1143
1205
 
1144
1206
  if (isNaN(this.s)) {
1145
- this.s = relativeTo.getSeconds();
1207
+ this.s = relativeTo.getSeconds()
1146
1208
  }
1147
1209
 
1148
1210
  if (isNaN(this.f)) {
1149
- this.f = relativeTo.getMilliseconds();
1211
+ this.f = relativeTo.getMilliseconds()
1150
1212
  }
1151
1213
 
1152
1214
  // adjust special early
1153
1215
  switch (this.firstOrLastDayOfMonth) {
1154
1216
  case 1:
1155
- this.d = 1;
1156
- break;
1217
+ this.d = 1
1218
+ break
1157
1219
  case -1:
1158
- this.d = 0;
1159
- this.m += 1;
1160
- break;
1220
+ this.d = 0
1221
+ this.m += 1
1222
+ break
1161
1223
  }
1162
1224
 
1163
1225
  if (!isNaN(this.weekday)) {
1164
- var date = new Date(relativeTo.getTime());
1165
- date.setFullYear(this.y, this.m, this.d);
1166
- date.setHours(this.h, this.i, this.s, this.f);
1226
+ const date = new Date(relativeTo.getTime())
1227
+ date.setFullYear(this.y, this.m, this.d)
1228
+ date.setHours(this.h, this.i, this.s, this.f)
1167
1229
 
1168
- var dow = date.getDay();
1230
+ const dow = date.getDay()
1169
1231
 
1170
1232
  if (this.weekdayBehavior === 2) {
1171
1233
  // To make "this week" work, where the current day of week is a "sunday"
1172
1234
  if (dow === 0 && this.weekday !== 0) {
1173
- this.weekday = -6;
1235
+ this.weekday = -6
1174
1236
  }
1175
1237
 
1176
1238
  // To make "sunday this week" work, where the current day of week is not a "sunday"
1177
1239
  if (this.weekday === 0 && dow !== 0) {
1178
- this.weekday = 7;
1240
+ this.weekday = 7
1179
1241
  }
1180
1242
 
1181
- this.d -= dow;
1182
- this.d += this.weekday;
1243
+ this.d -= dow
1244
+ this.d += this.weekday
1183
1245
  } else {
1184
- var diff = this.weekday - dow;
1246
+ let diff = this.weekday - dow
1185
1247
 
1186
1248
  // some PHP magic
1187
- if (this.rd < 0 && diff < 0 || this.rd >= 0 && diff <= -this.weekdayBehavior) {
1188
- diff += 7;
1249
+ if ((this.rd < 0 && diff < 0) || (this.rd >= 0 && diff <= -this.weekdayBehavior)) {
1250
+ diff += 7
1189
1251
  }
1190
1252
 
1191
1253
  if (this.weekday >= 0) {
1192
- this.d += diff;
1254
+ this.d += diff
1193
1255
  } else {
1194
- this.d -= 7 - (Math.abs(this.weekday) - dow);
1256
+ this.d -= 7 - (Math.abs(this.weekday) - dow)
1195
1257
  }
1196
1258
 
1197
- this.weekday = NaN;
1259
+ this.weekday = NaN
1198
1260
  }
1199
1261
  }
1200
1262
 
1201
1263
  // adjust relative
1202
- this.y += this.ry;
1203
- this.m += this.rm;
1204
- this.d += this.rd;
1264
+ this.y += this.ry
1265
+ this.m += this.rm
1266
+ this.d += this.rd
1205
1267
 
1206
- this.h += this.rh;
1207
- this.i += this.ri;
1208
- this.s += this.rs;
1209
- this.f += this.rf;
1268
+ this.h += this.rh
1269
+ this.i += this.ri
1270
+ this.s += this.rs
1271
+ this.f += this.rf
1210
1272
 
1211
- this.ry = this.rm = this.rd = 0;
1212
- this.rh = this.ri = this.rs = this.rf = 0;
1273
+ this.ry = this.rm = this.rd = 0
1274
+ this.rh = this.ri = this.rs = this.rf = 0
1213
1275
 
1214
- var result = new Date(relativeTo.getTime());
1276
+ const result = new Date(relativeTo.getTime())
1215
1277
  // since Date constructor treats years <= 99 as 1900+
1216
1278
  // it can't be used, thus this weird way
1217
- result.setFullYear(this.y, this.m, this.d);
1218
- result.setHours(this.h, this.i, this.s, this.f);
1279
+ result.setFullYear(this.y, this.m, this.d)
1280
+ result.setHours(this.h, this.i, this.s, this.f)
1219
1281
 
1220
- // note: this is done twice in PHP
1282
+ // note: this is done twice in PHP
1221
1283
  // early when processing special relatives
1222
1284
  // and late
1223
1285
  // todo: check if the logic can be reduced
1224
1286
  // to just one time action
1225
1287
  switch (this.firstOrLastDayOfMonth) {
1226
1288
  case 1:
1227
- result.setDate(1);
1228
- break;
1289
+ result.setDate(1)
1290
+ break
1229
1291
  case -1:
1230
- result.setMonth(result.getMonth() + 1, 0);
1231
- break;
1292
+ result.setMonth(result.getMonth() + 1, 0)
1293
+ break
1232
1294
  }
1233
1295
 
1234
1296
  // adjust timezone
1235
1297
  if (!isNaN(this.z) && result.getTimezoneOffset() !== this.z) {
1236
- result.setUTCFullYear(result.getFullYear(), result.getMonth(), result.getDate());
1298
+ result.setUTCFullYear(result.getFullYear(), result.getMonth(), result.getDate())
1237
1299
 
1238
- result.setUTCHours(result.getHours(), result.getMinutes(), result.getSeconds() - this.z, result.getMilliseconds());
1300
+ result.setUTCHours(result.getHours(), result.getMinutes(), result.getSeconds() - this.z, result.getMilliseconds())
1239
1301
  }
1240
1302
 
1241
- return result;
1242
- }
1243
- };
1303
+ return result
1304
+ },
1305
+ }
1244
1306
 
1245
1307
  module.exports = function strtotime(str, now) {
1246
1308
  // discuss at: https://locutus.io/php/strtotime/
@@ -1274,44 +1336,101 @@ module.exports = function strtotime(str, now) {
1274
1336
  // returns 7: 1499644800
1275
1337
 
1276
1338
  if (now == null) {
1277
- now = Math.floor(Date.now() / 1000);
1339
+ now = Math.floor(Date.now() / 1000)
1278
1340
  }
1279
1341
 
1280
1342
  // the rule order is important
1281
1343
  // if multiple rules match, the longest match wins
1282
1344
  // if multiple rules match the same string, the first match wins
1283
- var rules = [formats.yesterday, formats.now, formats.noon, formats.midnightOrToday, formats.tomorrow, formats.timestamp, formats.firstOrLastDay, formats.backOrFrontOf,
1284
- // formats.weekdayOf, // not yet implemented
1285
- formats.timeTiny12, formats.timeShort12, formats.timeLong12, formats.mssqltime, formats.oracledate, formats.timeShort24, formats.timeLong24, formats.iso8601long, formats.gnuNoColon, formats.iso8601noColon, formats.americanShort, formats.american, formats.iso8601date4, formats.iso8601dateSlash, formats.dateSlash, formats.gnuDateShortOrIso8601date2, formats.gnuDateShorter, formats.dateFull, formats.pointedDate4, formats.pointedDate2, formats.dateNoDay, formats.dateNoDayRev, formats.dateTextual, formats.dateNoYear, formats.dateNoYearRev, formats.dateNoColon, formats.xmlRpc, formats.xmlRpcNoColon, formats.soap, formats.wddx, formats.exif, formats.pgydotd, formats.isoWeekDay, formats.pgTextShort, formats.pgTextReverse, formats.clf, formats.year4, formats.ago, formats.dayText, formats.relativeTextWeek, formats.relativeText, formats.monthFullOrMonthAbbr, formats.tzCorrection, formats.tzAbbr, formats.dateShortWithTimeShort12, formats.dateShortWithTimeLong12, formats.dateShortWithTimeShort, formats.dateShortWithTimeLong, formats.relative, formats.whitespace];
1286
-
1287
- var result = Object.create(resultProto);
1345
+ const rules = [
1346
+ formats.yesterday,
1347
+ formats.now,
1348
+ formats.noon,
1349
+ formats.midnightOrToday,
1350
+ formats.tomorrow,
1351
+ formats.timestamp,
1352
+ formats.firstOrLastDay,
1353
+ formats.backOrFrontOf,
1354
+ // formats.weekdayOf, // not yet implemented
1355
+ formats.timeTiny12,
1356
+ formats.timeShort12,
1357
+ formats.timeLong12,
1358
+ formats.mssqltime,
1359
+ formats.oracledate,
1360
+ formats.timeShort24,
1361
+ formats.timeLong24,
1362
+ formats.iso8601long,
1363
+ formats.gnuNoColon,
1364
+ formats.iso8601noColon,
1365
+ formats.americanShort,
1366
+ formats.american,
1367
+ formats.iso8601date4,
1368
+ formats.iso8601dateSlash,
1369
+ formats.dateSlash,
1370
+ formats.gnuDateShortOrIso8601date2,
1371
+ formats.gnuDateShorter,
1372
+ formats.dateFull,
1373
+ formats.pointedDate4,
1374
+ formats.pointedDate2,
1375
+ formats.dateNoDay,
1376
+ formats.dateNoDayRev,
1377
+ formats.dateTextual,
1378
+ formats.dateNoYear,
1379
+ formats.dateNoYearRev,
1380
+ formats.dateNoColon,
1381
+ formats.xmlRpc,
1382
+ formats.xmlRpcNoColon,
1383
+ formats.soap,
1384
+ formats.wddx,
1385
+ formats.exif,
1386
+ formats.pgydotd,
1387
+ formats.isoWeekDay,
1388
+ formats.pgTextShort,
1389
+ formats.pgTextReverse,
1390
+ formats.clf,
1391
+ formats.year4,
1392
+ formats.ago,
1393
+ formats.dayText,
1394
+ formats.relativeTextWeek,
1395
+ formats.relativeText,
1396
+ formats.monthFullOrMonthAbbr,
1397
+ formats.tzCorrection,
1398
+ formats.tzAbbr,
1399
+ formats.dateShortWithTimeShort12,
1400
+ formats.dateShortWithTimeLong12,
1401
+ formats.dateShortWithTimeShort,
1402
+ formats.dateShortWithTimeLong,
1403
+ formats.relative,
1404
+ formats.whitespace,
1405
+ ]
1406
+
1407
+ const result = Object.create(resultProto)
1288
1408
 
1289
1409
  while (str.length) {
1290
- var longestMatch = null;
1291
- var finalRule = null;
1410
+ let longestMatch = null
1411
+ let finalRule = null
1292
1412
 
1293
- for (var i = 0, l = rules.length; i < l; i++) {
1294
- var format = rules[i];
1413
+ for (let i = 0, l = rules.length; i < l; i++) {
1414
+ const format = rules[i]
1295
1415
 
1296
- var match = str.match(format.regex);
1416
+ const match = str.match(format.regex)
1297
1417
 
1298
1418
  if (match) {
1299
1419
  if (!longestMatch || match[0].length > longestMatch[0].length) {
1300
- longestMatch = match;
1301
- finalRule = format;
1420
+ longestMatch = match
1421
+ finalRule = format
1302
1422
  }
1303
1423
  }
1304
1424
  }
1305
1425
 
1306
- if (!finalRule || finalRule.callback && finalRule.callback.apply(result, longestMatch) === false) {
1307
- return false;
1426
+ if (!finalRule || (finalRule.callback && finalRule.callback.apply(result, longestMatch) === false)) {
1427
+ return false
1308
1428
  }
1309
1429
 
1310
- str = str.substr(longestMatch[0].length);
1311
- finalRule = null;
1312
- longestMatch = null;
1430
+ str = str.substr(longestMatch[0].length)
1431
+ finalRule = null
1432
+ longestMatch = null
1313
1433
  }
1314
1434
 
1315
- return Math.floor(result.toDate(new Date(now * 1000)) / 1000);
1316
- };
1317
- //# sourceMappingURL=strtotime.js.map
1435
+ return Math.floor(result.toDate(new Date(now * 1000)) / 1000)
1436
+ }