locutus 2.0.32 → 2.0.35

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 (886) hide show
  1. package/README.md +18 -0
  2. package/_data/rosetta.yml +325 -0
  3. package/awk/builtin/index.js +5 -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/awk/builtin/tolower.js +11 -0
  8. package/awk/builtin/toupper.js +11 -0
  9. package/c/ctype/index.js +8 -0
  10. package/c/ctype/isalnum.js +15 -0
  11. package/c/ctype/isalpha.js +17 -0
  12. package/c/ctype/isdigit.js +15 -0
  13. package/c/ctype/islower.js +15 -0
  14. package/c/ctype/isspace.js +15 -0
  15. package/c/ctype/isupper.js +15 -0
  16. package/c/ctype/tolower.js +15 -0
  17. package/c/ctype/toupper.js +15 -0
  18. package/c/index.js +2 -5
  19. package/c/math/abs.js +14 -18
  20. package/c/math/frexp.js +19 -20
  21. package/c/math/index.js +2 -5
  22. package/c/stdio/index.js +1 -4
  23. package/c/stdio/sprintf.js +71 -81
  24. package/c/stdlib/atof.js +15 -0
  25. package/c/stdlib/atoi.js +17 -0
  26. package/c/stdlib/index.js +2 -0
  27. package/c/string/index.js +5 -0
  28. package/c/string/strcat.js +12 -0
  29. package/c/string/strchr.js +15 -0
  30. package/c/string/strcmp.js +21 -0
  31. package/c/string/strlen.js +12 -0
  32. package/c/string/strstr.js +15 -0
  33. package/clojure/Math/abs.js +13 -0
  34. package/clojure/Math/ceil.js +15 -0
  35. package/clojure/Math/floor.js +14 -0
  36. package/clojure/Math/index.js +3 -0
  37. package/elixir/Float/ceil.js +16 -0
  38. package/elixir/Float/floor.js +14 -0
  39. package/elixir/Float/index.js +2 -0
  40. package/elixir/Kernel/abs.js +13 -0
  41. package/elixir/Kernel/index.js +1 -0
  42. package/golang/index.js +1 -4
  43. package/golang/strconv/Atoi.js +26 -0
  44. package/golang/strconv/FormatBool.js +12 -0
  45. package/golang/strconv/FormatInt.js +21 -0
  46. package/golang/strconv/Itoa.js +14 -0
  47. package/golang/strconv/ParseBool.js +35 -0
  48. package/golang/strconv/ParseInt.js +27 -0
  49. package/golang/strconv/index.js +6 -0
  50. package/golang/strings/Compare.js +19 -0
  51. package/golang/strings/Contains.js +7 -9
  52. package/golang/strings/ContainsAny.js +18 -0
  53. package/golang/strings/Count.js +20 -22
  54. package/golang/strings/EqualFold.js +13 -0
  55. package/golang/strings/Fields.js +12 -0
  56. package/golang/strings/HasPrefix.js +15 -0
  57. package/golang/strings/HasSuffix.js +20 -0
  58. package/golang/strings/Index.js +11 -0
  59. package/golang/strings/Index2.js +9 -11
  60. package/golang/strings/IndexAny.js +18 -0
  61. package/golang/strings/Join.js +16 -0
  62. package/golang/strings/LastIndex.js +10 -12
  63. package/golang/strings/LastIndexAny.js +18 -0
  64. package/golang/strings/Repeat.js +19 -0
  65. package/golang/strings/Replace.js +44 -0
  66. package/golang/strings/Split.js +24 -0
  67. package/golang/strings/ToLower.js +9 -0
  68. package/golang/strings/ToUpper.js +9 -0
  69. package/golang/strings/Trim.js +19 -0
  70. package/golang/strings/TrimLeft.js +15 -0
  71. package/golang/strings/TrimPrefix.js +14 -0
  72. package/golang/strings/TrimRight.js +15 -0
  73. package/golang/strings/TrimSpace.js +10 -0
  74. package/golang/strings/TrimSuffix.js +14 -0
  75. package/golang/strings/index.js +25 -7
  76. package/index.js +5 -8
  77. package/julia/Base/abs.js +13 -0
  78. package/julia/Base/ceil.js +16 -0
  79. package/julia/Base/floor.js +14 -0
  80. package/julia/Base/index.js +3 -0
  81. package/lua/math/abs.js +13 -0
  82. package/lua/math/ceil.js +16 -0
  83. package/lua/math/floor.js +14 -0
  84. package/lua/math/index.js +3 -0
  85. package/lua/string/index.js +3 -0
  86. package/lua/string/lower.js +11 -0
  87. package/lua/string/sub.js +33 -0
  88. package/lua/string/upper.js +11 -0
  89. package/package.json +37 -51
  90. package/perl/POSIX/ceil.js +16 -0
  91. package/perl/POSIX/floor.js +14 -0
  92. package/perl/POSIX/index.js +2 -0
  93. package/perl/core/index.js +1 -0
  94. package/perl/core/length.js +16 -0
  95. package/php/_helpers/_bc.js +524 -515
  96. package/php/_helpers/_phpCastString.js +20 -25
  97. package/php/_helpers/_php_cast_float.js +5 -10
  98. package/php/_helpers/_php_cast_int.js +6 -11
  99. package/php/_helpers/index.js +4 -7
  100. package/php/array/array_change_key_case.js +11 -16
  101. package/php/array/array_chunk.js +20 -23
  102. package/php/array/array_column.js +22 -72
  103. package/php/array/array_combine.js +13 -18
  104. package/php/array/array_count_values.js +35 -39
  105. package/php/array/array_diff.js +11 -14
  106. package/php/array/array_diff_assoc.js +11 -14
  107. package/php/array/array_diff_key.js +11 -14
  108. package/php/array/array_diff_uassoc.js +15 -19
  109. package/php/array/array_diff_ukey.js +14 -17
  110. package/php/array/array_fill.js +11 -13
  111. package/php/array/array_fill_keys.js +5 -8
  112. package/php/array/array_filter.js +12 -13
  113. package/php/array/array_flip.js +13 -15
  114. package/php/array/array_intersect.js +13 -16
  115. package/php/array/array_intersect_assoc.js +13 -16
  116. package/php/array/array_intersect_key.js +15 -18
  117. package/php/array/array_intersect_uassoc.js +17 -20
  118. package/php/array/array_intersect_ukey.js +17 -20
  119. package/php/array/array_key_exists.js +4 -7
  120. package/php/array/array_keys.js +22 -24
  121. package/php/array/array_map.js +24 -29
  122. package/php/array/array_merge.js +22 -25
  123. package/php/array/array_merge_recursive.js +51 -27
  124. package/php/array/array_multisort.js +138 -130
  125. package/php/array/array_pad.js +24 -26
  126. package/php/array/array_pop.js +10 -13
  127. package/php/array/array_product.js +15 -17
  128. package/php/array/array_push.js +16 -19
  129. package/php/array/array_rand.js +11 -14
  130. package/php/array/array_reduce.js +11 -14
  131. package/php/array/array_replace.js +9 -12
  132. package/php/array/array_replace_recursive.js +20 -24
  133. package/php/array/array_reverse.js +12 -15
  134. package/php/array/array_search.js +27 -29
  135. package/php/array/array_shift.js +3 -6
  136. package/php/array/array_slice.js +37 -39
  137. package/php/array/array_splice.js +64 -69
  138. package/php/array/array_sum.js +7 -12
  139. package/php/array/array_udiff.js +14 -17
  140. package/php/array/array_udiff_assoc.js +14 -17
  141. package/php/array/array_udiff_uassoc.js +17 -20
  142. package/php/array/array_uintersect.js +16 -19
  143. package/php/array/array_uintersect_uassoc.js +18 -21
  144. package/php/array/array_unique.js +12 -15
  145. package/php/array/array_unshift.js +4 -7
  146. package/php/array/array_values.js +11 -13
  147. package/php/array/array_walk.js +10 -15
  148. package/php/array/array_walk_recursive.js +15 -20
  149. package/php/array/arsort.js +50 -52
  150. package/php/array/asort.js +50 -51
  151. package/php/array/count.js +15 -14
  152. package/php/array/current.js +30 -32
  153. package/php/array/each.js +32 -35
  154. package/php/array/end.js +27 -30
  155. package/php/array/in_array.js +7 -10
  156. package/php/array/index.js +73 -76
  157. package/php/array/key.js +32 -34
  158. package/php/array/krsort.js +50 -51
  159. package/php/array/ksort.js +50 -51
  160. package/php/array/natcasesort.js +37 -38
  161. package/php/array/natsort.js +35 -36
  162. package/php/array/next.js +34 -36
  163. package/php/array/pos.js +10 -12
  164. package/php/array/prev.js +32 -34
  165. package/php/array/range.js +30 -33
  166. package/php/array/reset.js +24 -27
  167. package/php/array/rsort.js +47 -49
  168. package/php/array/shuffle.js +16 -18
  169. package/php/array/sizeof.js +3 -6
  170. package/php/array/sort.js +43 -45
  171. package/php/array/uasort.js +19 -21
  172. package/php/array/uksort.js +22 -24
  173. package/php/array/usort.js +20 -22
  174. package/php/bc/bcadd.js +16 -19
  175. package/php/bc/bccomp.js +12 -15
  176. package/php/bc/bcdiv.js +17 -20
  177. package/php/bc/bcmul.js +16 -19
  178. package/php/bc/bcround.js +21 -24
  179. package/php/bc/bcscale.js +8 -11
  180. package/php/bc/bcsub.js +16 -19
  181. package/php/bc/index.js +7 -10
  182. package/php/ctype/ctype_alnum.js +14 -16
  183. package/php/ctype/ctype_alpha.js +14 -16
  184. package/php/ctype/ctype_cntrl.js +9 -12
  185. package/php/ctype/ctype_digit.js +14 -16
  186. package/php/ctype/ctype_graph.js +14 -16
  187. package/php/ctype/ctype_lower.js +14 -16
  188. package/php/ctype/ctype_print.js +14 -16
  189. package/php/ctype/ctype_punct.js +14 -16
  190. package/php/ctype/ctype_space.js +9 -12
  191. package/php/ctype/ctype_upper.js +14 -16
  192. package/php/ctype/ctype_xdigit.js +14 -16
  193. package/php/ctype/index.js +11 -14
  194. package/php/datetime/checkdate.js +15 -17
  195. package/php/datetime/date.js +142 -123
  196. package/php/datetime/date_parse.js +18 -21
  197. package/php/datetime/getdate.js +38 -24
  198. package/php/datetime/gettimeofday.js +7 -10
  199. package/php/datetime/gmdate.js +17 -16
  200. package/php/datetime/gmmktime.js +23 -25
  201. package/php/datetime/gmstrftime.js +17 -14
  202. package/php/datetime/idate.js +44 -38
  203. package/php/datetime/index.js +15 -18
  204. package/php/datetime/microtime.js +11 -14
  205. package/php/datetime/mktime.js +14 -17
  206. package/php/datetime/strftime.js +122 -113
  207. package/php/datetime/strptime.js +210 -191
  208. package/php/datetime/strtotime.js +615 -496
  209. package/php/datetime/time.js +11 -13
  210. package/php/exec/escapeshellarg.js +16 -18
  211. package/php/exec/index.js +1 -4
  212. package/php/filesystem/basename.js +22 -24
  213. package/php/filesystem/dirname.js +12 -14
  214. package/php/filesystem/file_exists.js +9 -11
  215. package/php/filesystem/file_get_contents.js +3 -6
  216. package/php/filesystem/index.js +6 -9
  217. package/php/filesystem/pathinfo.js +47 -46
  218. package/php/filesystem/realpath.js +16 -19
  219. package/php/funchand/call_user_func.js +4 -7
  220. package/php/funchand/call_user_func_array.js +19 -22
  221. package/php/funchand/create_function.js +4 -7
  222. package/php/funchand/function_exists.js +4 -8
  223. package/php/funchand/get_defined_functions.js +25 -32
  224. package/php/funchand/index.js +5 -8
  225. package/php/i18n/i18n_loc_get_default.js +7 -10
  226. package/php/i18n/i18n_loc_set_default.js +12 -15
  227. package/php/i18n/index.js +2 -5
  228. package/php/index.js +20 -23
  229. package/php/info/assert_options.js +25 -27
  230. package/php/info/getenv.js +8 -10
  231. package/php/info/index.js +6 -9
  232. package/php/info/ini_get.js +9 -12
  233. package/php/info/ini_set.js +32 -34
  234. package/php/info/set_time_limit.js +8 -11
  235. package/php/info/version_compare.js +43 -44
  236. package/php/json/index.js +3 -6
  237. package/php/json/json_decode.js +42 -28
  238. package/php/json/json_encode.js +89 -66
  239. package/php/json/json_last_error.js +11 -13
  240. package/php/math/abs.js +2 -5
  241. package/php/math/acos.js +2 -5
  242. package/php/math/acosh.js +7 -9
  243. package/php/math/asin.js +2 -5
  244. package/php/math/asinh.js +7 -9
  245. package/php/math/atan.js +7 -9
  246. package/php/math/atan2.js +7 -9
  247. package/php/math/atanh.js +2 -5
  248. package/php/math/base_convert.js +8 -10
  249. package/php/math/bindec.js +12 -14
  250. package/php/math/ceil.js +7 -9
  251. package/php/math/cos.js +7 -9
  252. package/php/math/cosh.js +7 -9
  253. package/php/math/decbin.js +16 -18
  254. package/php/math/dechex.js +3 -6
  255. package/php/math/decoct.js +13 -15
  256. package/php/math/deg2rad.js +8 -10
  257. package/php/math/exp.js +7 -9
  258. package/php/math/expm1.js +9 -11
  259. package/php/math/floor.js +7 -9
  260. package/php/math/fmod.js +27 -29
  261. package/php/math/getrandmax.js +7 -9
  262. package/php/math/hexdec.js +10 -12
  263. package/php/math/hypot.js +8 -11
  264. package/php/math/index.js +46 -49
  265. package/php/math/is_finite.js +9 -14
  266. package/php/math/is_infinite.js +9 -14
  267. package/php/math/is_nan.js +8 -13
  268. package/php/math/lcg_value.js +8 -10
  269. package/php/math/log.js +8 -10
  270. package/php/math/log10.js +12 -14
  271. package/php/math/log1p.js +15 -17
  272. package/php/math/max.js +54 -59
  273. package/php/math/min.js +54 -59
  274. package/php/math/mt_getrandmax.js +7 -9
  275. package/php/math/mt_rand.js +15 -17
  276. package/php/math/octdec.js +8 -10
  277. package/php/math/pi.js +2 -5
  278. package/php/math/pow.js +2 -5
  279. package/php/math/rad2deg.js +8 -10
  280. package/php/math/rand.js +15 -17
  281. package/php/math/round.js +48 -49
  282. package/php/math/sin.js +7 -9
  283. package/php/math/sinh.js +7 -9
  284. package/php/math/sqrt.js +7 -9
  285. package/php/math/tan.js +7 -9
  286. package/php/math/tanh.js +8 -10
  287. package/php/misc/index.js +2 -5
  288. package/php/misc/pack.js +173 -165
  289. package/php/misc/uniqid.js +20 -23
  290. package/php/net-gopher/gopher_parsedir.js +27 -29
  291. package/php/net-gopher/index.js +1 -4
  292. package/php/network/index.js +6 -9
  293. package/php/network/inet_ntop.js +15 -15
  294. package/php/network/inet_pton.js +30 -34
  295. package/php/network/ip2long.js +25 -15
  296. package/php/network/long2ip.js +8 -10
  297. package/php/network/setcookie.js +11 -13
  298. package/php/network/setrawcookie.js +16 -19
  299. package/php/pcre/index.js +4 -7
  300. package/php/pcre/preg_match.js +3 -6
  301. package/php/pcre/preg_quote.js +2 -5
  302. package/php/pcre/preg_replace.js +8 -11
  303. package/php/pcre/sql_regcase.js +17 -20
  304. package/php/strings/addcslashes.js +86 -88
  305. package/php/strings/addslashes.js +15 -16
  306. package/php/strings/bin2hex.js +19 -43
  307. package/php/strings/chop.js +8 -10
  308. package/php/strings/chr.js +12 -14
  309. package/php/strings/chunk_split.js +15 -17
  310. package/php/strings/convert_cyr_string.js +137 -50
  311. package/php/strings/convert_uuencode.js +35 -38
  312. package/php/strings/count_chars.js +29 -27
  313. package/php/strings/crc32.js +276 -21
  314. package/php/strings/echo.js +28 -30
  315. package/php/strings/explode.js +31 -26
  316. package/php/strings/get_html_translation_table.js +123 -122
  317. package/php/strings/hex2bin.js +21 -21
  318. package/php/strings/html_entity_decode.js +31 -33
  319. package/php/strings/htmlentities.js +38 -34
  320. package/php/strings/htmlspecialchars.js +20 -23
  321. package/php/strings/htmlspecialchars_decode.js +19 -21
  322. package/php/strings/implode.js +23 -27
  323. package/php/strings/index.js +91 -94
  324. package/php/strings/join.js +8 -10
  325. package/php/strings/lcfirst.js +9 -11
  326. package/php/strings/levenshtein.js +37 -39
  327. package/php/strings/localeconv.js +12 -15
  328. package/php/strings/ltrim.js +12 -14
  329. package/php/strings/md5.js +216 -223
  330. package/php/strings/md5_file.js +17 -19
  331. package/php/strings/metaphone.js +112 -117
  332. package/php/strings/money_format.js +139 -126
  333. package/php/strings/nl2br.js +24 -26
  334. package/php/strings/nl_langinfo.js +32 -35
  335. package/php/strings/number_format.js +19 -22
  336. package/php/strings/ord.js +19 -21
  337. package/php/strings/parse_str.js +53 -56
  338. package/php/strings/printf.js +6 -9
  339. package/php/strings/quoted_printable_decode.js +7 -10
  340. package/php/strings/quoted_printable_encode.js +19 -20
  341. package/php/strings/quotemeta.js +7 -9
  342. package/php/strings/rtrim.js +14 -16
  343. package/php/strings/setlocale.js +148 -104
  344. package/php/strings/sha1.js +108 -106
  345. package/php/strings/sha1_file.js +15 -17
  346. package/php/strings/similar_text.js +34 -33
  347. package/php/strings/soundex.js +34 -36
  348. package/php/strings/split.js +8 -10
  349. package/php/strings/sprintf.js +112 -114
  350. package/php/strings/sscanf.js +99 -96
  351. package/php/strings/str_getcsv.js +37 -32
  352. package/php/strings/str_ireplace.js +50 -55
  353. package/php/strings/str_pad.js +18 -21
  354. package/php/strings/str_repeat.js +14 -16
  355. package/php/strings/str_replace.js +32 -37
  356. package/php/strings/str_rot13.js +15 -17
  357. package/php/strings/str_shuffle.js +12 -15
  358. package/php/strings/str_split.js +19 -21
  359. package/php/strings/str_word_count.js +51 -50
  360. package/php/strings/strcasecmp.js +12 -14
  361. package/php/strings/strchr.js +10 -12
  362. package/php/strings/strcmp.js +12 -14
  363. package/php/strings/strcoll.js +9 -12
  364. package/php/strings/strcspn.js +30 -25
  365. package/php/strings/strip_tags.js +50 -52
  366. package/php/strings/stripos.js +12 -14
  367. package/php/strings/stripslashes.js +8 -10
  368. package/php/strings/stristr.js +15 -17
  369. package/php/strings/strlen.js +23 -26
  370. package/php/strings/strnatcasecmp.js +6 -8
  371. package/php/strings/strnatcmp.js +47 -46
  372. package/php/strings/strncasecmp.js +30 -32
  373. package/php/strings/strncmp.js +5 -7
  374. package/php/strings/strpbrk.js +12 -14
  375. package/php/strings/strpos.js +11 -13
  376. package/php/strings/strrchr.js +7 -10
  377. package/php/strings/strrev.js +188 -10
  378. package/php/strings/strripos.js +16 -18
  379. package/php/strings/strrpos.js +20 -22
  380. package/php/strings/strspn.js +24 -26
  381. package/php/strings/strstr.js +20 -22
  382. package/php/strings/strtok.js +14 -16
  383. package/php/strings/strtolower.js +8 -10
  384. package/php/strings/strtoupper.js +8 -10
  385. package/php/strings/strtr.js +38 -43
  386. package/php/strings/substr.js +14 -18
  387. package/php/strings/substr_compare.js +18 -20
  388. package/php/strings/substr_count.js +11 -14
  389. package/php/strings/substr_replace.js +5 -8
  390. package/php/strings/trim.js +53 -32
  391. package/php/strings/ucfirst.js +11 -13
  392. package/php/strings/ucwords.js +3 -6
  393. package/php/strings/vprintf.js +6 -9
  394. package/php/strings/vsprintf.js +8 -10
  395. package/php/strings/wordwrap.js +32 -35
  396. package/php/url/base64_decode.js +42 -40
  397. package/php/url/base64_encode.js +51 -53
  398. package/php/url/http_build_query.js +27 -32
  399. package/php/url/index.js +8 -11
  400. package/php/url/parse_url.js +61 -25
  401. package/php/url/rawurldecode.js +8 -8
  402. package/php/url/rawurlencode.js +9 -6
  403. package/php/url/urldecode.js +9 -8
  404. package/php/url/urlencode.js +11 -6
  405. package/php/var/boolval.js +31 -33
  406. package/php/var/doubleval.js +10 -12
  407. package/php/var/empty.js +11 -16
  408. package/php/var/floatval.js +13 -15
  409. package/php/var/gettype.js +22 -23
  410. package/php/var/index.js +30 -33
  411. package/php/var/intval.js +35 -39
  412. package/php/var/is_array.js +27 -31
  413. package/php/var/is_binary.js +2 -5
  414. package/php/var/is_bool.js +10 -12
  415. package/php/var/is_buffer.js +2 -5
  416. package/php/var/is_callable.js +34 -35
  417. package/php/var/is_double.js +10 -12
  418. package/php/var/is_float.js +12 -14
  419. package/php/var/is_int.js +20 -22
  420. package/php/var/is_integer.js +12 -14
  421. package/php/var/is_long.js +3 -6
  422. package/php/var/is_null.js +9 -11
  423. package/php/var/is_numeric.js +30 -6
  424. package/php/var/is_object.js +4 -9
  425. package/php/var/is_real.js +3 -6
  426. package/php/var/is_scalar.js +2 -8
  427. package/php/var/is_string.js +9 -11
  428. package/php/var/is_unicode.js +12 -15
  429. package/php/var/isset.js +9 -12
  430. package/php/var/print_r.js +49 -53
  431. package/php/var/serialize.js +47 -52
  432. package/php/var/serialize.vitest.ts +10 -0
  433. package/php/var/strval.js +10 -13
  434. package/php/var/unserialize.js +168 -202
  435. package/php/var/var_dump.js +105 -104
  436. package/php/var/var_export.js +64 -66
  437. package/php/xdiff/index.js +2 -5
  438. package/php/xdiff/xdiff_string_diff.js +240 -226
  439. package/php/xdiff/xdiff_string_patch.js +98 -93
  440. package/php/xml/index.js +2 -5
  441. package/php/xml/utf8_decode.js +40 -42
  442. package/php/xml/utf8_encode.js +40 -42
  443. package/python/index.js +1 -4
  444. package/python/math/ceil.js +17 -0
  445. package/python/math/exp.js +12 -0
  446. package/python/math/fabs.js +14 -0
  447. package/python/math/factorial.js +29 -0
  448. package/python/math/floor.js +14 -0
  449. package/python/math/gcd.js +23 -0
  450. package/python/math/index.js +15 -0
  451. package/python/math/isfinite.js +14 -0
  452. package/python/math/isinf.js +14 -0
  453. package/python/math/isnan.js +14 -0
  454. package/python/math/log.js +16 -0
  455. package/python/math/log10.js +14 -0
  456. package/python/math/log2.js +14 -0
  457. package/python/math/pow.js +14 -0
  458. package/python/math/sqrt.js +14 -0
  459. package/python/math/trunc.js +14 -0
  460. package/python/string/ascii_letters.js +14 -14
  461. package/python/string/ascii_lowercase.js +12 -16
  462. package/python/string/ascii_uppercase.js +12 -16
  463. package/python/string/capwords.js +4 -7
  464. package/python/string/digits.js +10 -0
  465. package/python/string/hexdigits.js +10 -0
  466. package/python/string/index.js +10 -8
  467. package/python/string/octdigits.js +10 -0
  468. package/python/string/printable.js +15 -0
  469. package/python/string/punctuation.js +5 -7
  470. package/python/string/whitespace.js +10 -0
  471. package/r/base/abs.js +13 -0
  472. package/r/base/ceiling.js +16 -0
  473. package/r/base/floor.js +14 -0
  474. package/r/base/index.js +3 -0
  475. package/ruby/Array/compact.js +18 -0
  476. package/ruby/Array/first.js +22 -0
  477. package/ruby/Array/flatten.js +22 -0
  478. package/ruby/Array/index.js +6 -0
  479. package/ruby/Array/last.js +22 -0
  480. package/ruby/Array/sample.js +31 -0
  481. package/ruby/Array/uniq.js +16 -0
  482. package/ruby/Math/acos.js +2 -5
  483. package/ruby/Math/asin.js +11 -0
  484. package/ruby/Math/atan.js +11 -0
  485. package/ruby/Math/cbrt.js +13 -0
  486. package/ruby/Math/cos.js +12 -0
  487. package/ruby/Math/cosh.js +11 -0
  488. package/ruby/Math/exp.js +11 -0
  489. package/ruby/Math/index.js +15 -4
  490. package/ruby/Math/log.js +11 -0
  491. package/ruby/Math/log10.js +13 -0
  492. package/ruby/Math/log2.js +13 -0
  493. package/ruby/Math/sin.js +12 -0
  494. package/ruby/Math/sinh.js +11 -0
  495. package/ruby/Math/sqrt.js +13 -0
  496. package/ruby/Math/tan.js +11 -0
  497. package/ruby/Math/tanh.js +11 -0
  498. package/ruby/String/capitalize.js +19 -0
  499. package/ruby/String/chomp.js +27 -0
  500. package/ruby/String/chop.js +25 -0
  501. package/ruby/String/downcase.js +10 -0
  502. package/ruby/String/end_with.js +17 -0
  503. package/ruby/String/include.js +12 -0
  504. package/ruby/String/index.js +11 -0
  505. package/ruby/String/length.js +12 -0
  506. package/ruby/String/reverse.js +12 -0
  507. package/ruby/String/start_with.js +14 -0
  508. package/ruby/String/strip.js +12 -0
  509. package/ruby/String/upcase.js +10 -0
  510. package/ruby/index.js +1 -4
  511. package/_util/cli.js +0 -14
  512. package/_util/cli.js.map +0 -1
  513. package/_util/util.js +0 -620
  514. package/_util/util.js.map +0 -1
  515. package/c/index.js.map +0 -1
  516. package/c/math/abs.js.map +0 -1
  517. package/c/math/frexp.js.map +0 -1
  518. package/c/math/index.js.map +0 -1
  519. package/c/stdio/index.js.map +0 -1
  520. package/c/stdio/sprintf.js.map +0 -1
  521. package/golang/index.js.map +0 -1
  522. package/golang/strings/Contains.js.map +0 -1
  523. package/golang/strings/Count.js.map +0 -1
  524. package/golang/strings/Index2.js.map +0 -1
  525. package/golang/strings/LastIndex.js.map +0 -1
  526. package/golang/strings/index.js.map +0 -1
  527. package/index.js.map +0 -1
  528. package/php/_helpers/_bc.js.map +0 -1
  529. package/php/_helpers/_phpCastString.js.map +0 -1
  530. package/php/_helpers/_php_cast_float.js.map +0 -1
  531. package/php/_helpers/_php_cast_int.js.map +0 -1
  532. package/php/_helpers/index.js.map +0 -1
  533. package/php/array/array_change_key_case.js.map +0 -1
  534. package/php/array/array_chunk.js.map +0 -1
  535. package/php/array/array_column.js.map +0 -1
  536. package/php/array/array_combine.js.map +0 -1
  537. package/php/array/array_count_values.js.map +0 -1
  538. package/php/array/array_diff.js.map +0 -1
  539. package/php/array/array_diff_assoc.js.map +0 -1
  540. package/php/array/array_diff_key.js.map +0 -1
  541. package/php/array/array_diff_uassoc.js.map +0 -1
  542. package/php/array/array_diff_ukey.js.map +0 -1
  543. package/php/array/array_fill.js.map +0 -1
  544. package/php/array/array_fill_keys.js.map +0 -1
  545. package/php/array/array_filter.js.map +0 -1
  546. package/php/array/array_flip.js.map +0 -1
  547. package/php/array/array_intersect.js.map +0 -1
  548. package/php/array/array_intersect_assoc.js.map +0 -1
  549. package/php/array/array_intersect_key.js.map +0 -1
  550. package/php/array/array_intersect_uassoc.js.map +0 -1
  551. package/php/array/array_intersect_ukey.js.map +0 -1
  552. package/php/array/array_key_exists.js.map +0 -1
  553. package/php/array/array_keys.js.map +0 -1
  554. package/php/array/array_map.js.map +0 -1
  555. package/php/array/array_merge.js.map +0 -1
  556. package/php/array/array_merge_recursive.js.map +0 -1
  557. package/php/array/array_multisort.js.map +0 -1
  558. package/php/array/array_pad.js.map +0 -1
  559. package/php/array/array_pop.js.map +0 -1
  560. package/php/array/array_product.js.map +0 -1
  561. package/php/array/array_push.js.map +0 -1
  562. package/php/array/array_rand.js.map +0 -1
  563. package/php/array/array_reduce.js.map +0 -1
  564. package/php/array/array_replace.js.map +0 -1
  565. package/php/array/array_replace_recursive.js.map +0 -1
  566. package/php/array/array_reverse.js.map +0 -1
  567. package/php/array/array_search.js.map +0 -1
  568. package/php/array/array_shift.js.map +0 -1
  569. package/php/array/array_slice.js.map +0 -1
  570. package/php/array/array_splice.js.map +0 -1
  571. package/php/array/array_sum.js.map +0 -1
  572. package/php/array/array_udiff.js.map +0 -1
  573. package/php/array/array_udiff_assoc.js.map +0 -1
  574. package/php/array/array_udiff_uassoc.js.map +0 -1
  575. package/php/array/array_uintersect.js.map +0 -1
  576. package/php/array/array_uintersect_uassoc.js.map +0 -1
  577. package/php/array/array_unique.js.map +0 -1
  578. package/php/array/array_unshift.js.map +0 -1
  579. package/php/array/array_values.js.map +0 -1
  580. package/php/array/array_walk.js.map +0 -1
  581. package/php/array/array_walk_recursive.js.map +0 -1
  582. package/php/array/arsort.js.map +0 -1
  583. package/php/array/asort.js.map +0 -1
  584. package/php/array/count.js.map +0 -1
  585. package/php/array/current.js.map +0 -1
  586. package/php/array/each.js.map +0 -1
  587. package/php/array/end.js.map +0 -1
  588. package/php/array/in_array.js.map +0 -1
  589. package/php/array/index.js.map +0 -1
  590. package/php/array/key.js.map +0 -1
  591. package/php/array/krsort.js.map +0 -1
  592. package/php/array/ksort.js.map +0 -1
  593. package/php/array/natcasesort.js.map +0 -1
  594. package/php/array/natsort.js.map +0 -1
  595. package/php/array/next.js.map +0 -1
  596. package/php/array/pos.js.map +0 -1
  597. package/php/array/prev.js.map +0 -1
  598. package/php/array/range.js.map +0 -1
  599. package/php/array/reset.js.map +0 -1
  600. package/php/array/rsort.js.map +0 -1
  601. package/php/array/shuffle.js.map +0 -1
  602. package/php/array/sizeof.js.map +0 -1
  603. package/php/array/sort.js.map +0 -1
  604. package/php/array/uasort.js.map +0 -1
  605. package/php/array/uksort.js.map +0 -1
  606. package/php/array/usort.js.map +0 -1
  607. package/php/bc/bcadd.js.map +0 -1
  608. package/php/bc/bccomp.js.map +0 -1
  609. package/php/bc/bcdiv.js.map +0 -1
  610. package/php/bc/bcmul.js.map +0 -1
  611. package/php/bc/bcround.js.map +0 -1
  612. package/php/bc/bcscale.js.map +0 -1
  613. package/php/bc/bcsub.js.map +0 -1
  614. package/php/bc/index.js.map +0 -1
  615. package/php/ctype/ctype_alnum.js.map +0 -1
  616. package/php/ctype/ctype_alpha.js.map +0 -1
  617. package/php/ctype/ctype_cntrl.js.map +0 -1
  618. package/php/ctype/ctype_digit.js.map +0 -1
  619. package/php/ctype/ctype_graph.js.map +0 -1
  620. package/php/ctype/ctype_lower.js.map +0 -1
  621. package/php/ctype/ctype_print.js.map +0 -1
  622. package/php/ctype/ctype_punct.js.map +0 -1
  623. package/php/ctype/ctype_space.js.map +0 -1
  624. package/php/ctype/ctype_upper.js.map +0 -1
  625. package/php/ctype/ctype_xdigit.js.map +0 -1
  626. package/php/ctype/index.js.map +0 -1
  627. package/php/datetime/checkdate.js.map +0 -1
  628. package/php/datetime/date.js.map +0 -1
  629. package/php/datetime/date_parse.js.map +0 -1
  630. package/php/datetime/getdate.js.map +0 -1
  631. package/php/datetime/gettimeofday.js.map +0 -1
  632. package/php/datetime/gmdate.js.map +0 -1
  633. package/php/datetime/gmmktime.js.map +0 -1
  634. package/php/datetime/gmstrftime.js.map +0 -1
  635. package/php/datetime/idate.js.map +0 -1
  636. package/php/datetime/index.js.map +0 -1
  637. package/php/datetime/microtime.js.map +0 -1
  638. package/php/datetime/mktime.js.map +0 -1
  639. package/php/datetime/strftime.js.map +0 -1
  640. package/php/datetime/strptime.js.map +0 -1
  641. package/php/datetime/strtotime.js.map +0 -1
  642. package/php/datetime/time.js.map +0 -1
  643. package/php/exec/escapeshellarg.js.map +0 -1
  644. package/php/exec/index.js.map +0 -1
  645. package/php/filesystem/basename.js.map +0 -1
  646. package/php/filesystem/dirname.js.map +0 -1
  647. package/php/filesystem/file_exists.js.map +0 -1
  648. package/php/filesystem/file_get_contents.js.map +0 -1
  649. package/php/filesystem/index.js.map +0 -1
  650. package/php/filesystem/pathinfo.js.map +0 -1
  651. package/php/filesystem/realpath.js.map +0 -1
  652. package/php/funchand/call_user_func.js.map +0 -1
  653. package/php/funchand/call_user_func_array.js.map +0 -1
  654. package/php/funchand/create_function.js.map +0 -1
  655. package/php/funchand/function_exists.js.map +0 -1
  656. package/php/funchand/get_defined_functions.js.map +0 -1
  657. package/php/funchand/index.js.map +0 -1
  658. package/php/i18n/i18n_loc_get_default.js.map +0 -1
  659. package/php/i18n/i18n_loc_set_default.js.map +0 -1
  660. package/php/i18n/index.js.map +0 -1
  661. package/php/index.js.map +0 -1
  662. package/php/info/assert_options.js.map +0 -1
  663. package/php/info/getenv.js.map +0 -1
  664. package/php/info/index.js.map +0 -1
  665. package/php/info/ini_get.js.map +0 -1
  666. package/php/info/ini_set.js.map +0 -1
  667. package/php/info/set_time_limit.js.map +0 -1
  668. package/php/info/version_compare.js.map +0 -1
  669. package/php/json/index.js.map +0 -1
  670. package/php/json/json_decode.js.map +0 -1
  671. package/php/json/json_encode.js.map +0 -1
  672. package/php/json/json_last_error.js.map +0 -1
  673. package/php/math/abs.js.map +0 -1
  674. package/php/math/acos.js.map +0 -1
  675. package/php/math/acosh.js.map +0 -1
  676. package/php/math/asin.js.map +0 -1
  677. package/php/math/asinh.js.map +0 -1
  678. package/php/math/atan.js.map +0 -1
  679. package/php/math/atan2.js.map +0 -1
  680. package/php/math/atanh.js.map +0 -1
  681. package/php/math/base_convert.js.map +0 -1
  682. package/php/math/bindec.js.map +0 -1
  683. package/php/math/ceil.js.map +0 -1
  684. package/php/math/cos.js.map +0 -1
  685. package/php/math/cosh.js.map +0 -1
  686. package/php/math/decbin.js.map +0 -1
  687. package/php/math/dechex.js.map +0 -1
  688. package/php/math/decoct.js.map +0 -1
  689. package/php/math/deg2rad.js.map +0 -1
  690. package/php/math/exp.js.map +0 -1
  691. package/php/math/expm1.js.map +0 -1
  692. package/php/math/floor.js.map +0 -1
  693. package/php/math/fmod.js.map +0 -1
  694. package/php/math/getrandmax.js.map +0 -1
  695. package/php/math/hexdec.js.map +0 -1
  696. package/php/math/hypot.js.map +0 -1
  697. package/php/math/index.js.map +0 -1
  698. package/php/math/is_finite.js.map +0 -1
  699. package/php/math/is_infinite.js.map +0 -1
  700. package/php/math/is_nan.js.map +0 -1
  701. package/php/math/lcg_value.js.map +0 -1
  702. package/php/math/log.js.map +0 -1
  703. package/php/math/log10.js.map +0 -1
  704. package/php/math/log1p.js.map +0 -1
  705. package/php/math/max.js.map +0 -1
  706. package/php/math/min.js.map +0 -1
  707. package/php/math/mt_getrandmax.js.map +0 -1
  708. package/php/math/mt_rand.js.map +0 -1
  709. package/php/math/octdec.js.map +0 -1
  710. package/php/math/pi.js.map +0 -1
  711. package/php/math/pow.js.map +0 -1
  712. package/php/math/rad2deg.js.map +0 -1
  713. package/php/math/rand.js.map +0 -1
  714. package/php/math/round.js.map +0 -1
  715. package/php/math/sin.js.map +0 -1
  716. package/php/math/sinh.js.map +0 -1
  717. package/php/math/sqrt.js.map +0 -1
  718. package/php/math/tan.js.map +0 -1
  719. package/php/math/tanh.js.map +0 -1
  720. package/php/misc/index.js.map +0 -1
  721. package/php/misc/pack.js.map +0 -1
  722. package/php/misc/uniqid.js.map +0 -1
  723. package/php/net-gopher/gopher_parsedir.js.map +0 -1
  724. package/php/net-gopher/index.js.map +0 -1
  725. package/php/network/index.js.map +0 -1
  726. package/php/network/inet_ntop.js.map +0 -1
  727. package/php/network/inet_pton.js.map +0 -1
  728. package/php/network/ip2long.js.map +0 -1
  729. package/php/network/long2ip.js.map +0 -1
  730. package/php/network/setcookie.js.map +0 -1
  731. package/php/network/setrawcookie.js.map +0 -1
  732. package/php/pcre/index.js.map +0 -1
  733. package/php/pcre/preg_match.js.map +0 -1
  734. package/php/pcre/preg_quote.js.map +0 -1
  735. package/php/pcre/preg_replace.js.map +0 -1
  736. package/php/pcre/sql_regcase.js.map +0 -1
  737. package/php/strings/addcslashes.js.map +0 -1
  738. package/php/strings/addslashes.js.map +0 -1
  739. package/php/strings/bin2hex.js.map +0 -1
  740. package/php/strings/chop.js.map +0 -1
  741. package/php/strings/chr.js.map +0 -1
  742. package/php/strings/chunk_split.js.map +0 -1
  743. package/php/strings/convert_cyr_string.js.map +0 -1
  744. package/php/strings/convert_uuencode.js.map +0 -1
  745. package/php/strings/count_chars.js.map +0 -1
  746. package/php/strings/crc32.js.map +0 -1
  747. package/php/strings/echo.js.map +0 -1
  748. package/php/strings/explode.js.map +0 -1
  749. package/php/strings/get_html_translation_table.js.map +0 -1
  750. package/php/strings/hex2bin.js.map +0 -1
  751. package/php/strings/html_entity_decode.js.map +0 -1
  752. package/php/strings/htmlentities.js.map +0 -1
  753. package/php/strings/htmlspecialchars.js.map +0 -1
  754. package/php/strings/htmlspecialchars_decode.js.map +0 -1
  755. package/php/strings/implode.js.map +0 -1
  756. package/php/strings/index.js.map +0 -1
  757. package/php/strings/join.js.map +0 -1
  758. package/php/strings/lcfirst.js.map +0 -1
  759. package/php/strings/levenshtein.js.map +0 -1
  760. package/php/strings/localeconv.js.map +0 -1
  761. package/php/strings/ltrim.js.map +0 -1
  762. package/php/strings/md5.js.map +0 -1
  763. package/php/strings/md5_file.js.map +0 -1
  764. package/php/strings/metaphone.js.map +0 -1
  765. package/php/strings/money_format.js.map +0 -1
  766. package/php/strings/nl2br.js.map +0 -1
  767. package/php/strings/nl_langinfo.js.map +0 -1
  768. package/php/strings/number_format.js.map +0 -1
  769. package/php/strings/ord.js.map +0 -1
  770. package/php/strings/parse_str.js.map +0 -1
  771. package/php/strings/printf.js.map +0 -1
  772. package/php/strings/quoted_printable_decode.js.map +0 -1
  773. package/php/strings/quoted_printable_encode.js.map +0 -1
  774. package/php/strings/quotemeta.js.map +0 -1
  775. package/php/strings/rtrim.js.map +0 -1
  776. package/php/strings/setlocale.js.map +0 -1
  777. package/php/strings/sha1.js.map +0 -1
  778. package/php/strings/sha1_file.js.map +0 -1
  779. package/php/strings/similar_text.js.map +0 -1
  780. package/php/strings/soundex.js.map +0 -1
  781. package/php/strings/split.js.map +0 -1
  782. package/php/strings/sprintf.js.map +0 -1
  783. package/php/strings/sscanf.js.map +0 -1
  784. package/php/strings/str_getcsv.js.map +0 -1
  785. package/php/strings/str_ireplace.js.map +0 -1
  786. package/php/strings/str_pad.js.map +0 -1
  787. package/php/strings/str_repeat.js.map +0 -1
  788. package/php/strings/str_replace.js.map +0 -1
  789. package/php/strings/str_rot13.js.map +0 -1
  790. package/php/strings/str_shuffle.js.map +0 -1
  791. package/php/strings/str_split.js.map +0 -1
  792. package/php/strings/str_word_count.js.map +0 -1
  793. package/php/strings/strcasecmp.js.map +0 -1
  794. package/php/strings/strchr.js.map +0 -1
  795. package/php/strings/strcmp.js.map +0 -1
  796. package/php/strings/strcoll.js.map +0 -1
  797. package/php/strings/strcspn.js.map +0 -1
  798. package/php/strings/strip_tags.js.map +0 -1
  799. package/php/strings/stripos.js.map +0 -1
  800. package/php/strings/stripslashes.js.map +0 -1
  801. package/php/strings/stristr.js.map +0 -1
  802. package/php/strings/strlen.js.map +0 -1
  803. package/php/strings/strnatcasecmp.js.map +0 -1
  804. package/php/strings/strnatcmp.js.map +0 -1
  805. package/php/strings/strncasecmp.js.map +0 -1
  806. package/php/strings/strncmp.js.map +0 -1
  807. package/php/strings/strpbrk.js.map +0 -1
  808. package/php/strings/strpos.js.map +0 -1
  809. package/php/strings/strrchr.js.map +0 -1
  810. package/php/strings/strrev.js.map +0 -1
  811. package/php/strings/strripos.js.map +0 -1
  812. package/php/strings/strrpos.js.map +0 -1
  813. package/php/strings/strspn.js.map +0 -1
  814. package/php/strings/strstr.js.map +0 -1
  815. package/php/strings/strtok.js.map +0 -1
  816. package/php/strings/strtolower.js.map +0 -1
  817. package/php/strings/strtoupper.js.map +0 -1
  818. package/php/strings/strtr.js.map +0 -1
  819. package/php/strings/substr.js.map +0 -1
  820. package/php/strings/substr_compare.js.map +0 -1
  821. package/php/strings/substr_count.js.map +0 -1
  822. package/php/strings/substr_replace.js.map +0 -1
  823. package/php/strings/trim.js.map +0 -1
  824. package/php/strings/ucfirst.js.map +0 -1
  825. package/php/strings/ucwords.js.map +0 -1
  826. package/php/strings/vprintf.js.map +0 -1
  827. package/php/strings/vsprintf.js.map +0 -1
  828. package/php/strings/wordwrap.js.map +0 -1
  829. package/php/url/base64_decode.js.map +0 -1
  830. package/php/url/base64_encode.js.map +0 -1
  831. package/php/url/http_build_query.js.map +0 -1
  832. package/php/url/index.js.map +0 -1
  833. package/php/url/parse_url.js.map +0 -1
  834. package/php/url/rawurldecode.js.map +0 -1
  835. package/php/url/rawurlencode.js.map +0 -1
  836. package/php/url/urldecode.js.map +0 -1
  837. package/php/url/urlencode.js.map +0 -1
  838. package/php/var/boolval.js.map +0 -1
  839. package/php/var/doubleval.js.map +0 -1
  840. package/php/var/empty.js.map +0 -1
  841. package/php/var/floatval.js.map +0 -1
  842. package/php/var/gettype.js.map +0 -1
  843. package/php/var/index.js.map +0 -1
  844. package/php/var/intval.js.map +0 -1
  845. package/php/var/is_array.js.map +0 -1
  846. package/php/var/is_binary.js.map +0 -1
  847. package/php/var/is_bool.js.map +0 -1
  848. package/php/var/is_buffer.js.map +0 -1
  849. package/php/var/is_callable.js.map +0 -1
  850. package/php/var/is_double.js.map +0 -1
  851. package/php/var/is_float.js.map +0 -1
  852. package/php/var/is_int.js.map +0 -1
  853. package/php/var/is_integer.js.map +0 -1
  854. package/php/var/is_long.js.map +0 -1
  855. package/php/var/is_null.js.map +0 -1
  856. package/php/var/is_numeric.js.map +0 -1
  857. package/php/var/is_object.js.map +0 -1
  858. package/php/var/is_real.js.map +0 -1
  859. package/php/var/is_scalar.js.map +0 -1
  860. package/php/var/is_string.js.map +0 -1
  861. package/php/var/is_unicode.js.map +0 -1
  862. package/php/var/isset.js.map +0 -1
  863. package/php/var/print_r.js.map +0 -1
  864. package/php/var/serialize.js.map +0 -1
  865. package/php/var/serialize.mocha.js +0 -14
  866. package/php/var/serialize.mocha.js.map +0 -1
  867. package/php/var/strval.js.map +0 -1
  868. package/php/var/unserialize.js.map +0 -1
  869. package/php/var/var_dump.js.map +0 -1
  870. package/php/var/var_export.js.map +0 -1
  871. package/php/xdiff/index.js.map +0 -1
  872. package/php/xdiff/xdiff_string_diff.js.map +0 -1
  873. package/php/xdiff/xdiff_string_patch.js.map +0 -1
  874. package/php/xml/index.js.map +0 -1
  875. package/php/xml/utf8_decode.js.map +0 -1
  876. package/php/xml/utf8_encode.js.map +0 -1
  877. package/python/index.js.map +0 -1
  878. package/python/string/ascii_letters.js.map +0 -1
  879. package/python/string/ascii_lowercase.js.map +0 -1
  880. package/python/string/ascii_uppercase.js.map +0 -1
  881. package/python/string/capwords.js.map +0 -1
  882. package/python/string/index.js.map +0 -1
  883. package/python/string/punctuation.js.map +0 -1
  884. package/ruby/Math/acos.js.map +0 -1
  885. package/ruby/Math/index.js.map +0 -1
  886. package/ruby/index.js.map +0 -1
@@ -1,437 +1,451 @@
1
- 'use strict';
2
-
3
- var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
4
-
5
1
  module.exports = function xdiff_string_diff(oldData, newData, contextLines, minimal) {
6
- // discuss at: https://locutus.io/php/xdiff_string_diff
7
- // original by: Brett Zamir (https://brett-zamir.me)
8
- // based on: Imgen Tata (https://www.myipdf.com/)
9
- // bugfixed by: Imgen Tata (https://www.myipdf.com/)
10
- // improved by: Brett Zamir (https://brett-zamir.me)
11
- // note 1: The minimal argument is not currently supported
12
- // example 1: xdiff_string_diff('', 'Hello world!')
13
- // returns 1: '@@ -0,0 +1,1 @@\n+Hello world!'
2
+ // discuss at: https://locutus.io/php/xdiff_string_diff
3
+ // parity verified: PHP 8.3
4
+ // original by: Brett Zamir (https://brett-zamir.me)
5
+ // based on: Imgen Tata (https://www.myipdf.com/)
6
+ // bugfixed by: Imgen Tata (https://www.myipdf.com/)
7
+ // improved by: Brett Zamir (https://brett-zamir.me)
8
+ // note 1: The minimal argument is not currently supported
9
+ // example 1: xdiff_string_diff('', 'Hello world!')
10
+ // returns 1: '@@ -0,0 +1,1 @@\n+Hello world!'
14
11
 
15
12
  // (This code was done by Imgen Tata; I have only reformatted for use in Locutus)
16
13
 
17
14
  // See https://en.wikipedia.org/wiki/Diff#Unified_format
18
- var i = 0;
19
- var j = 0;
20
- var k = 0;
21
- var oriHunkStart = void 0;
22
- var newHunkStart = void 0;
23
- var oriHunkEnd = void 0;
24
- var newHunkEnd = void 0;
25
- var oriHunkLineNo = void 0;
26
- var newHunkLineNo = void 0;
27
- var oriHunkSize = void 0;
28
- var newHunkSize = void 0;
29
- var MAX_CONTEXT_LINES = Number.POSITIVE_INFINITY; // Potential configuration
30
- var MIN_CONTEXT_LINES = 0;
31
- var DEFAULT_CONTEXT_LINES = 3;
32
- var HEADER_PREFIX = '@@ '; //
33
- var HEADER_SUFFIX = ' @@';
34
- var ORIGINAL_INDICATOR = '-';
35
- var NEW_INDICATOR = '+';
36
- var RANGE_SEPARATOR = ',';
37
- var CONTEXT_INDICATOR = ' ';
38
- var DELETION_INDICATOR = '-';
39
- var ADDITION_INDICATOR = '+';
40
- var oriLines = void 0;
41
- var newLines = void 0;
42
- var NEW_LINE = '\n';
43
-
44
- var _trim = function _trim(text) {
15
+ let i = 0
16
+ let j = 0
17
+ let k = 0
18
+ let oriHunkStart
19
+ let newHunkStart
20
+ let oriHunkEnd
21
+ let newHunkEnd
22
+ let oriHunkLineNo
23
+ let newHunkLineNo
24
+ let oriHunkSize
25
+ let newHunkSize
26
+ const MAX_CONTEXT_LINES = Number.POSITIVE_INFINITY // Potential configuration
27
+ const MIN_CONTEXT_LINES = 0
28
+ const DEFAULT_CONTEXT_LINES = 3
29
+ const HEADER_PREFIX = '@@ ' //
30
+ const HEADER_SUFFIX = ' @@'
31
+ const ORIGINAL_INDICATOR = '-'
32
+ const NEW_INDICATOR = '+'
33
+ const RANGE_SEPARATOR = ','
34
+ const CONTEXT_INDICATOR = ' '
35
+ const DELETION_INDICATOR = '-'
36
+ const ADDITION_INDICATOR = '+'
37
+ let oriLines
38
+ let newLines
39
+ const NEW_LINE = '\n'
40
+
41
+ const _trim = function (text) {
45
42
  if (typeof text !== 'string') {
46
- throw new Error('String parameter required');
43
+ throw new Error('String parameter required')
47
44
  }
48
45
 
49
- return text.replace(/(^\s*)|(\s*$)/g, '');
50
- };
51
-
52
- var _verifyType = function _verifyType(type) {
53
- var args = arguments;
54
- var argsLen = arguments.length;
55
- var basicTypes = ['number', 'boolean', 'string', 'function', 'object', 'undefined'];
56
- var basicType = void 0;
57
- var i = void 0;
58
- var j = void 0;
59
- var typeOfType = typeof type === 'undefined' ? 'undefined' : _typeof(type);
46
+ return text.replace(/(^\s*)|(\s*$)/g, '')
47
+ }
48
+
49
+ const _verifyType = function (type) {
50
+ const args = arguments
51
+ const argsLen = arguments.length
52
+ const basicTypes = ['number', 'boolean', 'string', 'function', 'object', 'undefined']
53
+ let basicType
54
+ let i
55
+ let j
56
+ const typeOfType = typeof type
60
57
  if (typeOfType !== 'string' && typeOfType !== 'function') {
61
- throw new Error('Bad type parameter');
58
+ throw new Error('Bad type parameter')
62
59
  }
63
60
 
64
61
  if (argsLen < 2) {
65
- throw new Error('Too few arguments');
62
+ throw new Error('Too few arguments')
66
63
  }
67
64
 
68
65
  if (typeOfType === 'string') {
69
- type = _trim(type);
66
+ type = _trim(type)
70
67
 
71
68
  if (type === '') {
72
- throw new Error('Bad type parameter');
69
+ throw new Error('Bad type parameter')
73
70
  }
74
71
 
75
72
  for (j = 0; j < basicTypes.length; j++) {
76
- basicType = basicTypes[j];
73
+ basicType = basicTypes[j]
77
74
 
78
75
  if (basicType === type) {
79
76
  for (i = 1; i < argsLen; i++) {
80
- if (_typeof(args[i]) !== type) {
81
- throw new Error('Bad type');
77
+ if (typeof args[i] !== type) {
78
+ throw new Error('Bad type')
82
79
  }
83
80
  }
84
81
 
85
- return;
82
+ return
86
83
  }
87
84
  }
88
85
 
89
- throw new Error('Bad type parameter');
86
+ throw new Error('Bad type parameter')
90
87
  }
91
88
 
92
89
  // Not basic type. we need to use instanceof operator
93
90
  for (i = 1; i < argsLen; i++) {
94
91
  if (!(args[i] instanceof type)) {
95
- throw new Error('Bad type');
92
+ throw new Error('Bad type')
96
93
  }
97
94
  }
98
- };
95
+ }
99
96
 
100
- var _hasValue = function _hasValue(array, value) {
101
- var i = void 0;
102
- _verifyType(Array, array);
97
+ const _hasValue = function (array, value) {
98
+ let i
99
+ _verifyType(Array, array)
103
100
 
104
101
  for (i = 0; i < array.length; i++) {
105
102
  if (array[i] === value) {
106
- return true;
103
+ return true
107
104
  }
108
105
  }
109
106
 
110
- return false;
111
- };
107
+ return false
108
+ }
112
109
 
113
- var _areTypeOf = function _areTypeOf(type) {
114
- var args = arguments;
115
- var argsLen = arguments.length;
116
- var basicTypes = ['number', 'boolean', 'string', 'function', 'object', 'undefined'];
117
- var basicType = void 0;
118
- var i = void 0;
119
- var j = void 0;
120
- var typeOfType = typeof type === 'undefined' ? 'undefined' : _typeof(type);
110
+ const _areTypeOf = function (type) {
111
+ const args = arguments
112
+ const argsLen = arguments.length
113
+ const basicTypes = ['number', 'boolean', 'string', 'function', 'object', 'undefined']
114
+ let basicType
115
+ let i
116
+ let j
117
+ const typeOfType = typeof type
121
118
 
122
119
  if (typeOfType !== 'string' && typeOfType !== 'function') {
123
- throw new Error('Bad type parameter');
120
+ throw new Error('Bad type parameter')
124
121
  }
125
122
 
126
123
  if (argsLen < 2) {
127
- throw new Error('Too few arguments');
124
+ throw new Error('Too few arguments')
128
125
  }
129
126
 
130
127
  if (typeOfType === 'string') {
131
- type = _trim(type);
128
+ type = _trim(type)
132
129
 
133
130
  if (type === '') {
134
- return false;
131
+ return false
135
132
  }
136
133
 
137
134
  for (j = 0; j < basicTypes.length; j++) {
138
- basicType = basicTypes[j];
135
+ basicType = basicTypes[j]
139
136
 
140
137
  if (basicType === type) {
141
138
  for (i = 1; i < argsLen; i++) {
142
- if (_typeof(args[i]) !== type) {
143
- return false;
139
+ if (typeof args[i] !== type) {
140
+ return false
144
141
  }
145
142
  }
146
143
 
147
- return true;
144
+ return true
148
145
  }
149
146
  }
150
147
 
151
- throw new Error('Bad type parameter');
148
+ throw new Error('Bad type parameter')
152
149
  }
153
150
 
154
151
  // Not basic type. we need to use instanceof operator
155
152
  for (i = 1; i < argsLen; i++) {
156
153
  if (!(args[i] instanceof type)) {
157
- return false;
154
+ return false
158
155
  }
159
156
  }
160
157
 
161
- return true;
162
- };
158
+ return true
159
+ }
163
160
 
164
- var _getInitializedArray = function _getInitializedArray(arraySize, initValue) {
165
- var array = [];
166
- var i = void 0;
167
- _verifyType('number', arraySize);
161
+ const _getInitializedArray = function (arraySize, initValue) {
162
+ const array = []
163
+ let i
164
+ _verifyType('number', arraySize)
168
165
 
169
166
  for (i = 0; i < arraySize; i++) {
170
- array.push(initValue);
167
+ array.push(initValue)
171
168
  }
172
169
 
173
- return array;
174
- };
170
+ return array
171
+ }
175
172
 
176
- var _splitIntoLines = function _splitIntoLines(text) {
177
- _verifyType('string', text);
173
+ const _splitIntoLines = function (text) {
174
+ _verifyType('string', text)
178
175
 
179
176
  if (text === '') {
180
- return [];
177
+ return []
181
178
  }
182
- return text.split('\n');
183
- };
179
+ return text.split('\n')
180
+ }
184
181
 
185
- var _isEmptyArray = function _isEmptyArray(obj) {
186
- return _areTypeOf(Array, obj) && obj.length === 0;
187
- };
182
+ const _isEmptyArray = function (obj) {
183
+ return _areTypeOf(Array, obj) && obj.length === 0
184
+ }
188
185
 
189
186
  /**
190
187
  * Finds longest common sequence between two sequences
191
188
  * @see {@link https://wordaligned.org/articles/longest-common-subsequence}
192
189
  */
193
- var _findLongestCommonSequence = function _findLongestCommonSequence(seq1, seq2, seq1IsInLcs, seq2IsInLcs) {
190
+ const _findLongestCommonSequence = function (seq1, seq2, seq1IsInLcs, seq2IsInLcs) {
194
191
  if (!_areTypeOf(Array, seq1, seq2)) {
195
- throw new Error('Array parameters are required');
192
+ throw new Error('Array parameters are required')
196
193
  }
197
194
 
198
195
  // Deal with edge case
199
196
  if (_isEmptyArray(seq1) || _isEmptyArray(seq2)) {
200
- return [];
197
+ return []
201
198
  }
202
199
 
203
200
  // Function to calculate lcs lengths
204
- var lcsLens = function lcsLens(xs, ys) {
205
- var i = void 0;
206
- var j = void 0;
207
- var prev = void 0;
208
- var curr = _getInitializedArray(ys.length + 1, 0);
201
+ const lcsLens = function (xs, ys) {
202
+ let i
203
+ let j
204
+ let prev
205
+ const curr = _getInitializedArray(ys.length + 1, 0)
209
206
 
210
207
  for (i = 0; i < xs.length; i++) {
211
- prev = curr.slice(0);
208
+ prev = curr.slice(0)
212
209
  for (j = 0; j < ys.length; j++) {
213
210
  if (xs[i] === ys[j]) {
214
- curr[j + 1] = prev[j] + 1;
211
+ curr[j + 1] = prev[j] + 1
215
212
  } else {
216
- curr[j + 1] = Math.max(curr[j], prev[j + 1]);
213
+ curr[j + 1] = Math.max(curr[j], prev[j + 1])
217
214
  }
218
215
  }
219
216
  }
220
217
 
221
- return curr;
222
- };
218
+ return curr
219
+ }
223
220
 
224
221
  // Function to find lcs and fill in the array to indicate the optimal longest common sequence
225
- var _findLcs = function _findLcs(xs, xidx, xIsIn, ys) {
226
- var i = void 0;
227
- var xb = void 0;
228
- var xe = void 0;
229
- var llB = void 0;
230
- var llE = void 0;
231
- var pivot = void 0;
232
- var max = void 0;
233
- var yb = void 0;
234
- var ye = void 0;
235
- var nx = xs.length;
236
- var ny = ys.length;
222
+ const _findLcs = function (xs, xidx, xIsIn, ys) {
223
+ const nx = xs.length
224
+ const ny = ys.length
237
225
 
238
226
  if (nx === 0) {
239
- return [];
227
+ return []
240
228
  }
241
229
  if (nx === 1) {
242
230
  if (_hasValue(ys, xs[0])) {
243
- xIsIn[xidx] = true;
244
- return [xs[0]];
231
+ xIsIn[xidx] = true
232
+ return [xs[0]]
245
233
  }
246
- return [];
234
+ return []
247
235
  }
248
- i = Math.floor(nx / 2);
249
- xb = xs.slice(0, i);
250
- xe = xs.slice(i);
251
- llB = lcsLens(xb, ys);
252
- llE = lcsLens(xe.slice(0).reverse(), ys.slice(0).reverse());
253
-
254
- pivot = 0;
255
- max = 0;
236
+ const i = Math.floor(nx / 2)
237
+ const xb = xs.slice(0, i)
238
+ const xe = xs.slice(i)
239
+ const llB = lcsLens(xb, ys)
240
+ const llE = lcsLens(xe.slice(0).reverse(), ys.slice(0).reverse())
241
+
242
+ let pivot = 0
243
+ let max = 0
256
244
  for (j = 0; j <= ny; j++) {
257
245
  if (llB[j] + llE[ny - j] > max) {
258
- pivot = j;
259
- max = llB[j] + llE[ny - j];
246
+ pivot = j
247
+ max = llB[j] + llE[ny - j]
260
248
  }
261
249
  }
262
- yb = ys.slice(0, pivot);
263
- ye = ys.slice(pivot);
264
- return _findLcs(xb, xidx, xIsIn, yb).concat(_findLcs(xe, xidx + i, xIsIn, ye));
265
- };
250
+ const yb = ys.slice(0, pivot)
251
+ const ye = ys.slice(pivot)
252
+ return _findLcs(xb, xidx, xIsIn, yb).concat(_findLcs(xe, xidx + i, xIsIn, ye))
253
+ }
266
254
 
267
255
  // Fill in seq1IsInLcs to find the optimal longest common subsequence of first sequence
268
- _findLcs(seq1, 0, seq1IsInLcs, seq2);
256
+ _findLcs(seq1, 0, seq1IsInLcs, seq2)
269
257
  // Fill in seq2IsInLcs to find the optimal longest common subsequence
270
258
  // of second sequence and return the result
271
- return _findLcs(seq2, 0, seq2IsInLcs, seq1);
272
- };
259
+ return _findLcs(seq2, 0, seq2IsInLcs, seq1)
260
+ }
273
261
 
274
262
  // First, check the parameters
275
263
  if (_areTypeOf('string', oldData, newData) === false) {
276
- return false;
264
+ return false
277
265
  }
278
266
 
279
267
  if (oldData === newData) {
280
- return '';
268
+ return ''
281
269
  }
282
270
 
283
271
  if (typeof contextLines !== 'number' || contextLines > MAX_CONTEXT_LINES || contextLines < MIN_CONTEXT_LINES) {
284
- contextLines = DEFAULT_CONTEXT_LINES;
272
+ contextLines = DEFAULT_CONTEXT_LINES
285
273
  }
286
274
 
287
- oriLines = _splitIntoLines(oldData);
288
- newLines = _splitIntoLines(newData);
289
- var oriLen = oriLines.length;
290
- var newLen = newLines.length;
291
- var oriIsInLcs = _getInitializedArray(oriLen, false);
292
- var newIsInLcs = _getInitializedArray(newLen, false);
293
- var lcsLen = _findLongestCommonSequence(oriLines, newLines, oriIsInLcs, newIsInLcs).length;
294
- var unidiff = '';
275
+ oriLines = _splitIntoLines(oldData)
276
+ newLines = _splitIntoLines(newData)
277
+ const oriLen = oriLines.length
278
+ const newLen = newLines.length
279
+ const oriIsInLcs = _getInitializedArray(oriLen, false)
280
+ const newIsInLcs = _getInitializedArray(newLen, false)
281
+ const lcsLen = _findLongestCommonSequence(oriLines, newLines, oriIsInLcs, newIsInLcs).length
282
+ let unidiff = ''
295
283
 
296
284
  if (lcsLen === 0) {
297
285
  // No common sequence
298
- unidiff = [HEADER_PREFIX, ORIGINAL_INDICATOR, oriLen > 0 ? '1' : '0', RANGE_SEPARATOR, oriLen, ' ', NEW_INDICATOR, newLen > 0 ? '1' : '0', RANGE_SEPARATOR, newLen, HEADER_SUFFIX].join('');
286
+ unidiff = [
287
+ HEADER_PREFIX,
288
+ ORIGINAL_INDICATOR,
289
+ oriLen > 0 ? '1' : '0',
290
+ RANGE_SEPARATOR,
291
+ oriLen,
292
+ ' ',
293
+ NEW_INDICATOR,
294
+ newLen > 0 ? '1' : '0',
295
+ RANGE_SEPARATOR,
296
+ newLen,
297
+ HEADER_SUFFIX,
298
+ ].join('')
299
299
 
300
300
  for (i = 0; i < oriLen; i++) {
301
- unidiff += NEW_LINE + DELETION_INDICATOR + oriLines[i];
301
+ unidiff += NEW_LINE + DELETION_INDICATOR + oriLines[i]
302
302
  }
303
303
 
304
304
  for (j = 0; j < newLen; j++) {
305
- unidiff += NEW_LINE + ADDITION_INDICATOR + newLines[j];
305
+ unidiff += NEW_LINE + ADDITION_INDICATOR + newLines[j]
306
306
  }
307
307
 
308
- return unidiff;
308
+ return unidiff
309
309
  }
310
310
 
311
- var leadingContext = [];
312
- var trailingContext = [];
313
- var actualLeadingContext = [];
314
- var actualTrailingContext = [];
311
+ let leadingContext = []
312
+ let trailingContext = []
313
+ let actualLeadingContext = []
314
+ let actualTrailingContext = []
315
315
 
316
316
  // Regularize leading context by the contextLines parameter
317
- var regularizeLeadingContext = function regularizeLeadingContext(context) {
317
+ const regularizeLeadingContext = function (context) {
318
318
  if (context.length === 0 || contextLines === 0) {
319
- return [];
319
+ return []
320
320
  }
321
321
 
322
- var contextStartPos = Math.max(context.length - contextLines, 0);
322
+ const contextStartPos = Math.max(context.length - contextLines, 0)
323
323
 
324
- return context.slice(contextStartPos);
325
- };
324
+ return context.slice(contextStartPos)
325
+ }
326
326
 
327
327
  // Regularize trailing context by the contextLines parameter
328
- var regularizeTrailingContext = function regularizeTrailingContext(context) {
328
+ const regularizeTrailingContext = function (context) {
329
329
  if (context.length === 0 || contextLines === 0) {
330
- return [];
330
+ return []
331
331
  }
332
332
 
333
- return context.slice(0, Math.min(contextLines, context.length));
334
- };
333
+ return context.slice(0, Math.min(contextLines, context.length))
334
+ }
335
335
 
336
336
  // Skip common lines in the beginning
337
337
  while (i < oriLen && oriIsInLcs[i] === true && newIsInLcs[i] === true) {
338
- leadingContext.push(oriLines[i]);
339
- i++;
338
+ leadingContext.push(oriLines[i])
339
+ i++
340
340
  }
341
341
 
342
- j = i;
342
+ j = i
343
343
  // The index in the longest common sequence
344
- k = i;
345
- oriHunkStart = i;
346
- newHunkStart = j;
347
- oriHunkEnd = i;
348
- newHunkEnd = j;
344
+ k = i
345
+ oriHunkStart = i
346
+ newHunkStart = j
347
+ oriHunkEnd = i
348
+ newHunkEnd = j
349
349
 
350
350
  while (i < oriLen || j < newLen) {
351
351
  while (i < oriLen && oriIsInLcs[i] === false) {
352
- i++;
352
+ i++
353
353
  }
354
- oriHunkEnd = i;
354
+ oriHunkEnd = i
355
355
 
356
356
  while (j < newLen && newIsInLcs[j] === false) {
357
- j++;
357
+ j++
358
358
  }
359
- newHunkEnd = j;
359
+ newHunkEnd = j
360
360
 
361
361
  // Find the trailing context
362
- trailingContext = [];
362
+ trailingContext = []
363
363
  while (i < oriLen && oriIsInLcs[i] === true && j < newLen && newIsInLcs[j] === true) {
364
- trailingContext.push(oriLines[i]);
365
- k++;
366
- i++;
367
- j++;
364
+ trailingContext.push(oriLines[i])
365
+ k++
366
+ i++
367
+ j++
368
368
  }
369
369
 
370
- if (k >= lcsLen || // No more in longest common lines
371
- trailingContext.length >= 2 * contextLines) {
370
+ if (
371
+ k >= lcsLen || // No more in longest common lines
372
+ trailingContext.length >= 2 * contextLines
373
+ ) {
372
374
  // Context break found
373
375
  if (trailingContext.length < 2 * contextLines) {
374
376
  // It must be last block of common lines but not a context break
375
- trailingContext = [];
377
+ trailingContext = []
376
378
 
377
379
  // Force break out
378
- i = oriLen;
379
- j = newLen;
380
+ i = oriLen
381
+ j = newLen
380
382
 
381
383
  // Update hunk ends to force output to the end
382
- oriHunkEnd = oriLen;
383
- newHunkEnd = newLen;
384
+ oriHunkEnd = oriLen
385
+ newHunkEnd = newLen
384
386
  }
385
387
 
386
388
  // Output the diff hunk
387
389
 
388
390
  // Trim the leading and trailing context block
389
- actualLeadingContext = regularizeLeadingContext(leadingContext);
390
- actualTrailingContext = regularizeTrailingContext(trailingContext);
391
+ actualLeadingContext = regularizeLeadingContext(leadingContext)
392
+ actualTrailingContext = regularizeTrailingContext(trailingContext)
391
393
 
392
- oriHunkStart -= actualLeadingContext.length;
393
- newHunkStart -= actualLeadingContext.length;
394
- oriHunkEnd += actualTrailingContext.length;
395
- newHunkEnd += actualTrailingContext.length;
394
+ oriHunkStart -= actualLeadingContext.length
395
+ newHunkStart -= actualLeadingContext.length
396
+ oriHunkEnd += actualTrailingContext.length
397
+ newHunkEnd += actualTrailingContext.length
396
398
 
397
- oriHunkLineNo = oriHunkStart + 1;
398
- newHunkLineNo = newHunkStart + 1;
399
- oriHunkSize = oriHunkEnd - oriHunkStart;
400
- newHunkSize = newHunkEnd - newHunkStart;
399
+ oriHunkLineNo = oriHunkStart + 1
400
+ newHunkLineNo = newHunkStart + 1
401
+ oriHunkSize = oriHunkEnd - oriHunkStart
402
+ newHunkSize = newHunkEnd - newHunkStart
401
403
 
402
404
  // Build header
403
- unidiff += [HEADER_PREFIX, ORIGINAL_INDICATOR, oriHunkLineNo, RANGE_SEPARATOR, oriHunkSize, ' ', NEW_INDICATOR, newHunkLineNo, RANGE_SEPARATOR, newHunkSize, HEADER_SUFFIX, NEW_LINE].join('');
405
+ unidiff += [
406
+ HEADER_PREFIX,
407
+ ORIGINAL_INDICATOR,
408
+ oriHunkLineNo,
409
+ RANGE_SEPARATOR,
410
+ oriHunkSize,
411
+ ' ',
412
+ NEW_INDICATOR,
413
+ newHunkLineNo,
414
+ RANGE_SEPARATOR,
415
+ newHunkSize,
416
+ HEADER_SUFFIX,
417
+ NEW_LINE,
418
+ ].join('')
404
419
 
405
420
  // Build the diff hunk content
406
421
  while (oriHunkStart < oriHunkEnd || newHunkStart < newHunkEnd) {
407
422
  if (oriHunkStart < oriHunkEnd && oriIsInLcs[oriHunkStart] === true && newIsInLcs[newHunkStart] === true) {
408
423
  // The context line
409
- unidiff += CONTEXT_INDICATOR + oriLines[oriHunkStart] + NEW_LINE;
410
- oriHunkStart++;
411
- newHunkStart++;
424
+ unidiff += CONTEXT_INDICATOR + oriLines[oriHunkStart] + NEW_LINE
425
+ oriHunkStart++
426
+ newHunkStart++
412
427
  } else if (oriHunkStart < oriHunkEnd && oriIsInLcs[oriHunkStart] === false) {
413
428
  // The deletion line
414
- unidiff += DELETION_INDICATOR + oriLines[oriHunkStart] + NEW_LINE;
415
- oriHunkStart++;
429
+ unidiff += DELETION_INDICATOR + oriLines[oriHunkStart] + NEW_LINE
430
+ oriHunkStart++
416
431
  } else if (newHunkStart < newHunkEnd && newIsInLcs[newHunkStart] === false) {
417
432
  // The additional line
418
- unidiff += ADDITION_INDICATOR + newLines[newHunkStart] + NEW_LINE;
419
- newHunkStart++;
433
+ unidiff += ADDITION_INDICATOR + newLines[newHunkStart] + NEW_LINE
434
+ newHunkStart++
420
435
  }
421
436
  }
422
437
 
423
438
  // Update hunk position and leading context
424
- oriHunkStart = i;
425
- newHunkStart = j;
426
- leadingContext = trailingContext;
439
+ oriHunkStart = i
440
+ newHunkStart = j
441
+ leadingContext = trailingContext
427
442
  }
428
443
  }
429
444
 
430
445
  // Trim the trailing new line if it exists
431
446
  if (unidiff.length > 0 && unidiff.charAt(unidiff.length) === NEW_LINE) {
432
- unidiff = unidiff.slice(0, -1);
447
+ unidiff = unidiff.slice(0, -1)
433
448
  }
434
449
 
435
- return unidiff;
436
- };
437
- //# sourceMappingURL=xdiff_string_diff.js.map
450
+ return unidiff
451
+ }