locutus 2.0.12 → 2.0.16
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.
- package/_util/cli.js.map +1 -1
- package/_util/util.js +11 -16
- package/_util/util.js.map +1 -1
- package/c/index.js +2 -2
- package/c/index.js.map +1 -1
- package/c/math/index.js +2 -2
- package/c/math/index.js.map +1 -1
- package/c/stdio/index.js +1 -1
- package/c/stdio/index.js.map +1 -1
- package/c/stdio/sprintf.js +8 -1
- package/c/stdio/sprintf.js.map +1 -1
- package/golang/index.js +1 -1
- package/golang/index.js.map +1 -1
- package/golang/strings/Count.js +1 -1
- package/golang/strings/Count.js.map +1 -1
- package/golang/strings/index.js +4 -4
- package/golang/strings/index.js.map +1 -1
- package/index.js +5 -5
- package/index.js.map +1 -1
- package/package.json +39 -40
- package/php/_helpers/_bc.js +104 -48
- package/php/_helpers/_bc.js.map +1 -1
- package/php/_helpers/_phpCastString.js.map +1 -1
- package/php/_helpers/_php_cast_float.js.map +1 -1
- package/php/_helpers/_php_cast_int.js.map +1 -1
- package/php/_helpers/index.js +4 -4
- package/php/_helpers/index.js.map +1 -1
- package/php/array/array_change_key_case.js +2 -2
- package/php/array/array_change_key_case.js.map +1 -1
- package/php/array/array_chunk.js +1 -1
- package/php/array/array_chunk.js.map +1 -1
- package/php/array/array_column.js.map +1 -1
- package/php/array/array_combine.js.map +1 -1
- package/php/array/array_count_values.js.map +1 -1
- package/php/array/array_diff.js.map +1 -1
- package/php/array/array_diff_assoc.js.map +1 -1
- package/php/array/array_diff_key.js.map +1 -1
- package/php/array/array_diff_uassoc.js.map +1 -1
- package/php/array/array_diff_ukey.js.map +1 -1
- package/php/array/array_fill.js +1 -1
- package/php/array/array_fill.js.map +1 -1
- package/php/array/array_fill_keys.js.map +1 -1
- package/php/array/array_filter.js +1 -1
- package/php/array/array_filter.js.map +1 -1
- package/php/array/array_flip.js +1 -1
- package/php/array/array_flip.js.map +1 -1
- package/php/array/array_intersect.js.map +1 -1
- package/php/array/array_intersect_assoc.js.map +1 -1
- package/php/array/array_intersect_key.js.map +1 -1
- package/php/array/array_intersect_uassoc.js.map +1 -1
- package/php/array/array_intersect_ukey.js.map +1 -1
- package/php/array/array_keys.js.map +1 -1
- package/php/array/array_map.js.map +1 -1
- package/php/array/array_merge.js +1 -1
- package/php/array/array_merge.js.map +1 -1
- package/php/array/array_merge_recursive.js.map +1 -1
- package/php/array/array_multisort.js +16 -16
- package/php/array/array_multisort.js.map +1 -1
- package/php/array/array_pad.js +1 -1
- package/php/array/array_pad.js.map +1 -1
- package/php/array/array_pop.js.map +1 -1
- package/php/array/array_product.js.map +1 -1
- package/php/array/array_push.js.map +1 -1
- package/php/array/array_rand.js.map +1 -1
- package/php/array/array_reduce.js.map +1 -1
- package/php/array/array_replace.js.map +1 -1
- package/php/array/array_replace_recursive.js +1 -1
- package/php/array/array_replace_recursive.js.map +1 -1
- package/php/array/array_reverse.js +1 -1
- package/php/array/array_reverse.js.map +1 -1
- package/php/array/array_search.js.map +1 -1
- package/php/array/array_shift.js +0 -19
- package/php/array/array_shift.js.map +1 -1
- package/php/array/array_slice.js.map +1 -1
- package/php/array/array_splice.js.map +1 -1
- package/php/array/array_sum.js +1 -1
- package/php/array/array_sum.js.map +1 -1
- package/php/array/array_udiff.js.map +1 -1
- package/php/array/array_udiff_assoc.js.map +1 -1
- package/php/array/array_udiff_uassoc.js.map +1 -1
- package/php/array/array_uintersect.js.map +1 -1
- package/php/array/array_uintersect_uassoc.js.map +1 -1
- package/php/array/array_unique.js.map +1 -1
- package/php/array/array_unshift.js.map +1 -1
- package/php/array/array_values.js.map +1 -1
- package/php/array/array_walk.js.map +1 -1
- package/php/array/array_walk_recursive.js.map +1 -1
- package/php/array/arsort.js +3 -3
- package/php/array/arsort.js.map +1 -1
- package/php/array/asort.js +3 -3
- package/php/array/asort.js.map +1 -1
- package/php/array/count.js +1 -1
- package/php/array/count.js.map +1 -1
- package/php/array/current.js.map +1 -1
- package/php/array/each.js.map +1 -1
- package/php/array/end.js +1 -1
- package/php/array/end.js.map +1 -1
- package/php/array/in_array.js.map +1 -1
- package/php/array/index.js +73 -72
- package/php/array/index.js.map +1 -1
- package/php/array/key.js.map +1 -1
- package/php/array/krsort.js +3 -3
- package/php/array/krsort.js.map +1 -1
- package/php/array/ksort.js +3 -3
- package/php/array/ksort.js.map +1 -1
- package/php/array/natcasesort.js +2 -2
- package/php/array/natcasesort.js.map +1 -1
- package/php/array/natsort.js +2 -2
- package/php/array/natsort.js.map +1 -1
- package/php/array/next.js.map +1 -1
- package/php/array/pos.js.map +1 -1
- package/php/array/prev.js.map +1 -1
- package/php/array/range.js +3 -3
- package/php/array/range.js.map +1 -1
- package/php/array/reset.js.map +1 -1
- package/php/array/rsort.js +3 -3
- package/php/array/rsort.js.map +1 -1
- package/php/array/shuffle.js.map +1 -1
- package/php/array/sizeof.js.map +1 -1
- package/php/array/sort.js +3 -3
- package/php/array/sort.js.map +1 -1
- package/php/array/uasort.js.map +1 -1
- package/php/array/uksort.js.map +1 -1
- package/php/array/usort.js.map +1 -1
- package/php/bc/bcadd.js +3 -1
- package/php/bc/bcadd.js.map +1 -1
- package/php/bc/bccomp.js +2 -1
- package/php/bc/bccomp.js.map +1 -1
- package/php/bc/bcdiv.js +3 -1
- package/php/bc/bcdiv.js.map +1 -1
- package/php/bc/bcmul.js +3 -1
- package/php/bc/bcmul.js.map +1 -1
- package/php/bc/bcround.js +4 -2
- package/php/bc/bcround.js.map +1 -1
- package/php/bc/bcscale.js.map +1 -1
- package/php/bc/bcsub.js +3 -1
- package/php/bc/bcsub.js.map +1 -1
- package/php/bc/index.js +7 -7
- package/php/bc/index.js.map +1 -1
- package/php/ctype/ctype_alnum.js.map +1 -1
- package/php/ctype/ctype_alpha.js.map +1 -1
- package/php/ctype/ctype_cntrl.js.map +1 -1
- package/php/ctype/ctype_digit.js.map +1 -1
- package/php/ctype/ctype_graph.js.map +1 -1
- package/php/ctype/ctype_lower.js.map +1 -1
- package/php/ctype/ctype_print.js.map +1 -1
- package/php/ctype/ctype_punct.js.map +1 -1
- package/php/ctype/ctype_space.js.map +1 -1
- package/php/ctype/ctype_upper.js.map +1 -1
- package/php/ctype/ctype_xdigit.js.map +1 -1
- package/php/ctype/index.js +11 -11
- package/php/ctype/index.js.map +1 -1
- package/php/datetime/date.js +2 -1
- package/php/datetime/date.js.map +1 -1
- package/php/datetime/date_parse.js +1 -1
- package/php/datetime/date_parse.js.map +1 -1
- package/php/datetime/getdate.js.map +1 -1
- package/php/datetime/gettimeofday.js.map +1 -1
- package/php/datetime/gmdate.js.map +1 -1
- package/php/datetime/gmmktime.js.map +1 -1
- package/php/datetime/gmstrftime.js.map +1 -1
- package/php/datetime/idate.js +1 -1
- package/php/datetime/idate.js.map +1 -1
- package/php/datetime/index.js +15 -15
- package/php/datetime/index.js.map +1 -1
- package/php/datetime/microtime.js +3 -3
- package/php/datetime/microtime.js.map +1 -1
- package/php/datetime/mktime.js.map +1 -1
- package/php/datetime/strftime.js +2 -3
- package/php/datetime/strftime.js.map +1 -1
- package/php/datetime/strptime.js +20 -21
- package/php/datetime/strptime.js.map +1 -1
- package/php/datetime/strtotime.js +170 -4
- package/php/datetime/strtotime.js.map +1 -1
- package/php/exec/escapeshellarg.js +12 -4
- package/php/exec/escapeshellarg.js.map +1 -1
- package/php/exec/index.js +1 -1
- package/php/exec/index.js.map +1 -1
- package/php/filesystem/basename.js.map +1 -1
- package/php/filesystem/file_get_contents.js.map +1 -1
- package/php/filesystem/index.js +5 -5
- package/php/filesystem/index.js.map +1 -1
- package/php/filesystem/pathinfo.js +7 -8
- package/php/filesystem/pathinfo.js.map +1 -1
- package/php/filesystem/realpath.js.map +1 -1
- package/php/funchand/call_user_func.js.map +1 -1
- package/php/funchand/call_user_func_array.js +1 -1
- package/php/funchand/call_user_func_array.js.map +1 -1
- package/php/funchand/function_exists.js.map +1 -1
- package/php/funchand/get_defined_functions.js.map +1 -1
- package/php/funchand/index.js +5 -5
- package/php/funchand/index.js.map +1 -1
- package/php/i18n/i18n_loc_get_default.js.map +1 -1
- package/php/i18n/i18n_loc_set_default.js.map +1 -1
- package/php/i18n/index.js +2 -2
- package/php/i18n/index.js.map +1 -1
- package/php/index.js +19 -19
- package/php/index.js.map +1 -1
- package/php/info/assert_options.js +2 -1
- package/php/info/assert_options.js.map +1 -1
- package/php/info/index.js +6 -6
- package/php/info/index.js.map +1 -1
- package/php/info/ini_get.js.map +1 -1
- package/php/info/ini_set.js.map +1 -1
- package/php/info/set_time_limit.js.map +1 -1
- package/php/info/version_compare.js +21 -22
- package/php/info/version_compare.js.map +1 -1
- package/php/json/index.js +3 -3
- package/php/json/index.js.map +1 -1
- package/php/json/json_decode.js +1 -1
- package/php/json/json_decode.js.map +1 -1
- package/php/json/json_encode.js +1 -1
- package/php/json/json_encode.js.map +1 -1
- package/php/json/json_last_error.js.map +1 -1
- package/php/math/fmod.js +2 -2
- package/php/math/fmod.js.map +1 -1
- package/php/math/hypot.js.map +1 -1
- package/php/math/index.js +46 -46
- package/php/math/index.js.map +1 -1
- package/php/math/is_finite.js.map +1 -1
- package/php/math/is_infinite.js.map +1 -1
- package/php/math/is_nan.js.map +1 -1
- package/php/math/log1p.js.map +1 -1
- package/php/math/max.js +7 -7
- package/php/math/max.js.map +1 -1
- package/php/math/min.js +5 -5
- package/php/math/min.js.map +1 -1
- package/php/math/mt_rand.js.map +1 -1
- package/php/math/rand.js.map +1 -1
- package/php/math/round.js +1 -1
- package/php/math/round.js.map +1 -1
- package/php/misc/index.js +2 -2
- package/php/misc/index.js.map +1 -1
- package/php/misc/pack.js +23 -18
- package/php/misc/pack.js.map +1 -1
- package/php/misc/uniqid.js +1 -1
- package/php/misc/uniqid.js.map +1 -1
- package/php/net-gopher/gopher_parsedir.js +3 -4
- package/php/net-gopher/gopher_parsedir.js.map +1 -1
- package/php/net-gopher/index.js +1 -1
- package/php/net-gopher/index.js.map +1 -1
- package/php/network/index.js +6 -6
- package/php/network/index.js.map +1 -1
- package/php/network/inet_ntop.js.map +1 -1
- package/php/network/inet_pton.js +40 -32
- package/php/network/inet_pton.js.map +1 -1
- package/php/network/setcookie.js.map +1 -1
- package/php/network/setrawcookie.js.map +1 -1
- package/php/pcre/index.js +4 -3
- package/php/pcre/index.js.map +1 -1
- package/php/pcre/preg_replace.js +24 -0
- package/php/pcre/preg_replace.js.map +1 -0
- package/php/pcre/sql_regcase.js.map +1 -1
- package/php/strings/addcslashes.js.map +1 -1
- package/php/strings/bin2hex.js +3 -3
- package/php/strings/bin2hex.js.map +1 -1
- package/php/strings/chop.js.map +1 -1
- package/php/strings/convert_cyr_string.js +1 -1
- package/php/strings/convert_cyr_string.js.map +1 -1
- package/php/strings/convert_uuencode.js.map +1 -1
- package/php/strings/count_chars.js +1 -1
- package/php/strings/count_chars.js.map +1 -1
- package/php/strings/crc32.js.map +1 -1
- package/php/strings/echo.js.map +1 -1
- package/php/strings/explode.js.map +1 -1
- package/php/strings/get_html_translation_table.js +1 -1
- package/php/strings/get_html_translation_table.js.map +1 -1
- package/php/strings/hex2bin.js +1 -1
- package/php/strings/hex2bin.js.map +1 -1
- package/php/strings/html_entity_decode.js.map +1 -1
- package/php/strings/htmlentities.js.map +1 -1
- package/php/strings/htmlspecialchars.js +6 -6
- package/php/strings/htmlspecialchars.js.map +1 -1
- package/php/strings/htmlspecialchars_decode.js +6 -6
- package/php/strings/htmlspecialchars_decode.js.map +1 -1
- package/php/strings/implode.js.map +1 -1
- package/php/strings/index.js +91 -91
- package/php/strings/index.js.map +1 -1
- package/php/strings/join.js.map +1 -1
- package/php/strings/lcfirst.js.map +1 -1
- package/php/strings/levenshtein.js +6 -1
- package/php/strings/levenshtein.js.map +1 -1
- package/php/strings/localeconv.js.map +1 -1
- package/php/strings/ltrim.js.map +1 -1
- package/php/strings/md5.js +19 -15
- package/php/strings/md5.js.map +1 -1
- package/php/strings/md5_file.js.map +1 -1
- package/php/strings/metaphone.js +2 -2
- package/php/strings/metaphone.js.map +1 -1
- package/php/strings/money_format.js.map +1 -1
- package/php/strings/nl2br.js.map +1 -1
- package/php/strings/nl_langinfo.js.map +1 -1
- package/php/strings/number_format.js.map +1 -1
- package/php/strings/ord.js.map +1 -1
- package/php/strings/parse_str.js +13 -13
- package/php/strings/parse_str.js.map +1 -1
- package/php/strings/printf.js.map +1 -1
- package/php/strings/quoted_printable_decode.js.map +1 -1
- package/php/strings/quoted_printable_encode.js.map +1 -1
- package/php/strings/rtrim.js.map +1 -1
- package/php/strings/setlocale.js +18 -19
- package/php/strings/setlocale.js.map +1 -1
- package/php/strings/sha1.js +12 -7
- package/php/strings/sha1.js.map +1 -1
- package/php/strings/sha1_file.js.map +1 -1
- package/php/strings/similar_text.js +4 -4
- package/php/strings/similar_text.js.map +1 -1
- package/php/strings/soundex.js +3 -3
- package/php/strings/soundex.js.map +1 -1
- package/php/strings/split.js.map +1 -1
- package/php/strings/sprintf.js +7 -2
- package/php/strings/sprintf.js.map +1 -1
- package/php/strings/sscanf.js +2 -2
- package/php/strings/sscanf.js.map +1 -1
- package/php/strings/str_getcsv.js +2 -2
- package/php/strings/str_getcsv.js.map +1 -1
- package/php/strings/str_ireplace.js +6 -0
- package/php/strings/str_ireplace.js.map +1 -1
- package/php/strings/str_pad.js +1 -1
- package/php/strings/str_pad.js.map +1 -1
- package/php/strings/str_repeat.js.map +1 -1
- package/php/strings/str_replace.js +6 -0
- package/php/strings/str_replace.js.map +1 -1
- package/php/strings/str_shuffle.js +1 -1
- package/php/strings/str_shuffle.js.map +1 -1
- package/php/strings/str_split.js.map +1 -1
- package/php/strings/str_word_count.js.map +1 -1
- package/php/strings/strcasecmp.js.map +1 -1
- package/php/strings/strchr.js.map +1 -1
- package/php/strings/strcoll.js.map +1 -1
- package/php/strings/strip_tags.js.map +1 -1
- package/php/strings/stripos.js.map +1 -1
- package/php/strings/stristr.js.map +1 -1
- package/php/strings/strlen.js.map +1 -1
- package/php/strings/strnatcasecmp.js.map +1 -1
- package/php/strings/strnatcmp.js.map +1 -1
- package/php/strings/strncasecmp.js +1 -1
- package/php/strings/strncasecmp.js.map +1 -1
- package/php/strings/strncmp.js.map +1 -1
- package/php/strings/strpbrk.js.map +1 -1
- package/php/strings/strpos.js.map +1 -1
- package/php/strings/strrchr.js.map +1 -1
- package/php/strings/strrev.js.map +1 -1
- package/php/strings/strripos.js.map +1 -1
- package/php/strings/strrpos.js.map +1 -1
- package/php/strings/strspn.js +3 -3
- package/php/strings/strspn.js.map +1 -1
- package/php/strings/strstr.js.map +1 -1
- package/php/strings/strtok.js.map +1 -1
- package/php/strings/strtr.js.map +1 -1
- package/php/strings/substr.js.map +1 -1
- package/php/strings/substr_count.js.map +1 -1
- package/php/strings/trim.js.map +1 -1
- package/php/strings/ucfirst.js.map +1 -1
- package/php/strings/vprintf.js.map +1 -1
- package/php/strings/vsprintf.js.map +1 -1
- package/php/strings/wordwrap.js +4 -2
- package/php/strings/wordwrap.js.map +1 -1
- package/php/url/base64_decode.js +8 -8
- package/php/url/base64_decode.js.map +1 -1
- package/php/url/base64_encode.js +8 -8
- package/php/url/base64_encode.js.map +1 -1
- package/php/url/http_build_query.js +4 -4
- package/php/url/http_build_query.js.map +1 -1
- package/php/url/index.js +8 -8
- package/php/url/index.js.map +1 -1
- package/php/url/parse_url.js +1 -1
- package/php/url/parse_url.js.map +1 -1
- package/php/var/doubleval.js.map +1 -1
- package/php/var/empty.js +4 -4
- package/php/var/empty.js.map +1 -1
- package/php/var/gettype.js +1 -1
- package/php/var/gettype.js.map +1 -1
- package/php/var/index.js +30 -30
- package/php/var/index.js.map +1 -1
- package/php/var/intval.js +2 -1
- package/php/var/intval.js.map +1 -1
- package/php/var/is_array.js.map +1 -1
- package/php/var/is_callable.js.map +1 -1
- package/php/var/is_double.js.map +1 -1
- package/php/var/is_integer.js.map +1 -1
- package/php/var/is_long.js.map +1 -1
- package/php/var/is_numeric.js.map +1 -1
- package/php/var/is_real.js.map +1 -1
- package/php/var/is_unicode.js.map +1 -1
- package/php/var/isset.js +1 -1
- package/php/var/isset.js.map +1 -1
- package/php/var/print_r.js.map +1 -1
- package/php/var/serialize.js +7 -5
- package/php/var/serialize.js.map +1 -1
- package/php/var/strval.js.map +1 -1
- package/php/var/unserialize.js +422 -236
- package/php/var/unserialize.js.map +1 -1
- package/php/var/var_dump.js +3 -3
- package/php/var/var_dump.js.map +1 -1
- package/php/var/var_export.js +5 -5
- package/php/var/var_export.js.map +1 -1
- package/php/xdiff/index.js +2 -2
- package/php/xdiff/index.js.map +1 -1
- package/php/xdiff/xdiff_string_diff.js +30 -30
- package/php/xdiff/xdiff_string_diff.js.map +1 -1
- package/php/xdiff/xdiff_string_patch.js +7 -8
- package/php/xdiff/xdiff_string_patch.js.map +1 -1
- package/php/xml/index.js +2 -2
- package/php/xml/index.js.map +1 -1
- package/php/xml/utf8_decode.js.map +1 -1
- package/php/xml/utf8_encode.js +2 -2
- package/php/xml/utf8_encode.js.map +1 -1
- package/python/index.js +1 -1
- package/python/index.js.map +1 -1
- package/python/string/capwords.js.map +1 -1
- package/python/string/index.js +4 -4
- package/python/string/index.js.map +1 -1
- package/python/string/punctuation.js +10 -0
- package/python/string/punctuation.js.map +1 -0
- package/ruby/Math/index.js +1 -1
- package/ruby/Math/index.js.map +1 -1
- package/ruby/index.js +1 -1
- package/ruby/index.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/php/var/unserialize.js"],"names":["module","exports","unserialize","data","utf8Overhead","str","s","length","i","code","charCodeAt","readUntil","offset","stopchr","buf","chr","slice","Error","push","join","readChrs","_unserialize","dtype","dataoffset","keyandchrs","keys","contig","array","obj","readdata","readData","ccount","stringlength","key","kprops","kchrs","vprops","vchrs","value","chrs","typeconvert","x","parseInt","SyntaxError","parseFloat","Array","err","console","error"],"mappings":"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","file":"unserialize.js","sourcesContent":["module.exports = function unserialize (data) {\n // discuss at: https://locutus.io/php/unserialize/\n // original by: Arpad Ray (mailto:arpad@php.net)\n // improved by: Pedro Tainha (https://www.pedrotainha.com)\n // improved by: Kevin van Zonneveld (https://kvz.io)\n // improved by: Kevin van Zonneveld (https://kvz.io)\n // improved by: Chris\n // improved by: James\n // improved by: Le Torbi\n // improved by: Eli Skeggs\n // bugfixed by: dptr1988\n // bugfixed by: Kevin van Zonneveld (https://kvz.io)\n // bugfixed by: Brett Zamir (https://brett-zamir.me)\n // bugfixed by: philippsimon (https://github.com/philippsimon/)\n // revised by: d3x\n // input by: Brett Zamir (https://brett-zamir.me)\n // input by: Martin (https://www.erlenwiese.de/)\n // input by: kilops\n // input by: Jaroslaw Czarniak\n // input by: lovasoa (https://github.com/lovasoa/)\n // improved by: Rafał Kukawski\n // note 1: We feel the main purpose of this function should be\n // note 1: to ease the transport of data between php & js\n // note 1: Aiming for PHP-compatibility, we have to translate objects to arrays\n // example 1: unserialize('a:3:{i:0;s:5:\"Kevin\";i:1;s:3:\"van\";i:2;s:9:\"Zonneveld\";}')\n // returns 1: ['Kevin', 'van', 'Zonneveld']\n // example 2: unserialize('a:2:{s:9:\"firstName\";s:5:\"Kevin\";s:7:\"midName\";s:3:\"van\";}')\n // returns 2: {firstName: 'Kevin', midName: 'van'}\n // example 3: unserialize('a:3:{s:2:\"ü\";s:2:\"ü\";s:3:\"四\";s:3:\"四\";s:4:\"𠜎\";s:4:\"𠜎\";}')\n // returns 3: {'ü': 'ü', '四': '四', '𠜎': '𠜎'}\n // example 4: unserialize(undefined)\n // returns 4: false\n // example 5: unserialize('O:8:\"stdClass\":1:{s:3:\"foo\";b:1;}')\n // returns 5: { foo: true }\n\n var utf8Overhead = function (str) {\n var s = str.length\n for (var i = str.length - 1; i >= 0; i--) {\n var code = str.charCodeAt(i)\n if (code > 0x7f && code <= 0x7ff) {\n s++\n } else if (code > 0x7ff && code <= 0xffff) {\n s += 2\n }\n // trail surrogate\n if (code >= 0xDC00 && code <= 0xDFFF) {\n i--\n }\n }\n return s - 1\n }\n var readUntil = function (data, offset, stopchr) {\n var i = 2\n var buf = []\n var chr = data.slice(offset, offset + 1)\n\n while (chr !== stopchr) {\n if ((i + offset) > data.length) {\n throw Error('Invalid')\n }\n buf.push(chr)\n chr = data.slice(offset + (i - 1), offset + i)\n i += 1\n }\n return [buf.length, buf.join('')]\n }\n var readChrs = function (data, offset, length) {\n var i, chr, buf\n\n buf = []\n for (i = 0; i < length; i++) {\n chr = data.slice(offset + (i - 1), offset + i)\n buf.push(chr)\n length -= utf8Overhead(chr)\n }\n return [buf.length, buf.join('')]\n }\n function _unserialize (data, offset) {\n var dtype\n var dataoffset\n var keyandchrs\n var keys\n var contig\n var length\n var array\n var obj\n var readdata\n var readData\n var ccount\n var stringlength\n var i\n var key\n var kprops\n var kchrs\n var vprops\n var vchrs\n var value\n var chrs = 0\n var typeconvert = function (x) {\n return x\n }\n\n if (!offset) {\n offset = 0\n }\n dtype = (data.slice(offset, offset + 1))\n\n dataoffset = offset + 2\n\n switch (dtype) {\n case 'i':\n typeconvert = function (x) {\n return parseInt(x, 10)\n }\n readData = readUntil(data, dataoffset, ';')\n chrs = readData[0]\n readdata = readData[1]\n dataoffset += chrs + 1\n break\n case 'b':\n typeconvert = function (x) {\n const value = parseInt(x, 10)\n\n switch (value) {\n case 0:\n return false\n case 1:\n return true\n default:\n throw SyntaxError('Invalid boolean value')\n }\n }\n readData = readUntil(data, dataoffset, ';')\n chrs = readData[0]\n readdata = readData[1]\n dataoffset += chrs + 1\n break\n case 'd':\n typeconvert = function (x) {\n return parseFloat(x)\n }\n readData = readUntil(data, dataoffset, ';')\n chrs = readData[0]\n readdata = readData[1]\n dataoffset += chrs + 1\n break\n case 'n':\n readdata = null\n break\n case 's':\n ccount = readUntil(data, dataoffset, ':')\n chrs = ccount[0]\n stringlength = ccount[1]\n dataoffset += chrs + 2\n\n readData = readChrs(data, dataoffset + 1, parseInt(stringlength, 10))\n chrs = readData[0]\n readdata = readData[1]\n dataoffset += chrs + 2\n if (chrs !== parseInt(stringlength, 10) && chrs !== readdata.length) {\n throw SyntaxError('String length mismatch')\n }\n break\n case 'a':\n readdata = {}\n\n keyandchrs = readUntil(data, dataoffset, ':')\n chrs = keyandchrs[0]\n keys = keyandchrs[1]\n dataoffset += chrs + 2\n\n length = parseInt(keys, 10)\n contig = true\n\n for (i = 0; i < length; i++) {\n kprops = _unserialize(data, dataoffset)\n kchrs = kprops[1]\n key = kprops[2]\n dataoffset += kchrs\n\n vprops = _unserialize(data, dataoffset)\n vchrs = vprops[1]\n value = vprops[2]\n dataoffset += vchrs\n\n if (key !== i) {\n contig = false\n }\n\n readdata[key] = value\n }\n\n if (contig) {\n array = new Array(length)\n for (i = 0; i < length; i++) {\n array[i] = readdata[i]\n }\n readdata = array\n }\n\n dataoffset += 1\n break\n case 'O': {\n // O:<class name length>:\"class name\":<prop count>:{<props and values>}\n // O:8:\"stdClass\":2:{s:3:\"foo\";s:3:\"bar\";s:3:\"bar\";s:3:\"baz\";}\n readData = readUntil(data, dataoffset, ':') // read class name length\n dataoffset += readData[0] + 1\n readData = readUntil(data, dataoffset, ':')\n\n if (readData[1] !== '\"stdClass\"') {\n throw Error('Unsupported object type: ' + readData[1])\n }\n\n dataoffset += readData[0] + 1 // skip \":\"\n readData = readUntil(data, dataoffset, ':')\n keys = parseInt(readData[1], 10)\n\n dataoffset += readData[0] + 2 // skip \":{\"\n obj = {}\n\n for (i = 0; i < keys; i++) {\n readData = _unserialize(data, dataoffset)\n key = readData[2]\n dataoffset += readData[1]\n\n readData = _unserialize(data, dataoffset)\n dataoffset += readData[1]\n obj[key] = readData[2]\n }\n\n dataoffset += 1 // skip \"}\"\n readdata = obj\n break\n }\n default:\n throw SyntaxError('Unknown / Unhandled data type(s): ' + dtype)\n }\n return [dtype, dataoffset - offset, typeconvert(readdata)]\n }\n\n try {\n if (typeof data !== 'string') {\n return false\n }\n\n return _unserialize(data, 0)[2]\n } catch (err) {\n console.error(err)\n return false\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/php/var/unserialize.js"],"names":["initCache","store","cache","value","push","get","index","length","RangeError","expectType","str","types","type","exec","SyntaxError","expectBool","expectInt","expectFloat","expectString","expectEscapedString","expectArray","expectObject","expectClass","expectReference","reBool","match","boolMatch","reInt","intMatch","parseInt","reFloat","floatMatch","floatValue","Number","NaN","NEGATIVE_INFINITY","POSITIVE_INFINITY","parseFloat","readBytes","len","escapedString","bytes","out","c","strLen","wasHighSurrogate","escapedChars","chr","charAt","code","charCodeAt","isHighSurrogate","isLowSurrogate","String","fromCharCode","substr","reStrLength","byteLenMatch","strMatch","startsWith","strLenMatch","expectKeyOrIndex","err","reObjectLiteral","objectLiteralBeginMatch","className","propCountMatch","totalOffset","propCount","obj","i","prop","Error","reRef","refIndex","reArrayLength","arrayLiteralBeginMatch","arrayLengthMatch","array","expectArrayItems","expectedItems","key","hasStringKeys","item","items","Object","assign","module","exports","unserialize","console","error"],"mappings":"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","file":"unserialize.js","sourcesContent":["function initCache () {\n const store = []\n // cache only first element, second is length to jump ahead for the parser\n const cache = function cache (value) {\n store.push(value[0])\n return value\n }\n\n cache.get = (index) => {\n if (index >= store.length) {\n throw RangeError(`Can't resolve reference ${index + 1}`)\n }\n\n return store[index]\n }\n\n return cache\n}\n\nfunction expectType (str, cache) {\n const types = /^(?:N(?=;)|[bidsSaOCrR](?=:)|[^:]+(?=:))/g\n const type = (types.exec(str) || [])[0]\n\n if (!type) {\n throw SyntaxError('Invalid input: ' + str)\n }\n\n switch (type) {\n case 'N':\n return cache([null, 2])\n case 'b':\n return cache(expectBool(str))\n case 'i':\n return cache(expectInt(str))\n case 'd':\n return cache(expectFloat(str))\n case 's':\n return cache(expectString(str))\n case 'S':\n return cache(expectEscapedString(str))\n case 'a':\n return expectArray(str, cache)\n case 'O':\n return expectObject(str, cache)\n case 'C':\n return expectClass(str, cache)\n case 'r':\n case 'R':\n return expectReference(str, cache)\n default:\n throw SyntaxError(`Invalid or unsupported data type: ${type}`)\n }\n}\n\nfunction expectBool (str) {\n const reBool = /^b:([01]);/\n const [match, boolMatch] = reBool.exec(str) || []\n\n if (!boolMatch) {\n throw SyntaxError('Invalid bool value, expected 0 or 1')\n }\n\n return [boolMatch === '1', match.length]\n}\n\nfunction expectInt (str) {\n const reInt = /^i:([+-]?\\d+);/\n const [match, intMatch] = reInt.exec(str) || []\n\n if (!intMatch) {\n throw SyntaxError('Expected an integer value')\n }\n\n return [parseInt(intMatch, 10), match.length]\n}\n\nfunction expectFloat (str) {\n const reFloat = /^d:(NAN|-?INF|(?:\\d+\\.\\d*|\\d*\\.\\d+|\\d+)(?:[eE][+-]\\d+)?);/\n const [match, floatMatch] = reFloat.exec(str) || []\n\n if (!floatMatch) {\n throw SyntaxError('Expected a float value')\n }\n\n let floatValue\n\n switch (floatMatch) {\n case 'NAN':\n floatValue = Number.NaN\n break\n case '-INF':\n floatValue = Number.NEGATIVE_INFINITY\n break\n case 'INF':\n floatValue = Number.POSITIVE_INFINITY\n break\n default:\n floatValue = parseFloat(floatMatch)\n break\n }\n\n return [floatValue, match.length]\n}\n\nfunction readBytes (str, len, escapedString = false) {\n let bytes = 0\n let out = ''\n let c = 0\n const strLen = str.length\n let wasHighSurrogate = false\n let escapedChars = 0\n\n while (bytes < len && c < strLen) {\n let chr = str.charAt(c)\n const code = chr.charCodeAt(0)\n const isHighSurrogate = code >= 0xd800 && code <= 0xdbff\n const isLowSurrogate = code >= 0xdc00 && code <= 0xdfff\n\n if (escapedString && chr === '\\\\') {\n chr = String.fromCharCode(parseInt(str.substr(c + 1, 2), 16))\n escapedChars++\n\n // each escaped sequence is 3 characters. Go 2 chars ahead.\n // third character will be jumped over a few lines later\n c += 2\n }\n\n c++\n\n bytes += isHighSurrogate || (isLowSurrogate && wasHighSurrogate)\n // if high surrogate, count 2 bytes, as expectation is to be followed by low surrogate\n // if low surrogate preceded by high surrogate, add 2 bytes\n ? 2\n : code > 0x7ff\n // otherwise low surrogate falls into this part\n ? 3\n : code > 0x7f\n ? 2\n : 1\n\n // if high surrogate is not followed by low surrogate, add 1 more byte\n bytes += wasHighSurrogate && !isLowSurrogate ? 1 : 0\n\n out += chr\n wasHighSurrogate = isHighSurrogate\n }\n\n return [out, bytes, escapedChars]\n}\n\nfunction expectString (str) {\n // PHP strings consist of one-byte characters.\n // JS uses 2 bytes with possible surrogate pairs.\n // Serialized length of 2 is still 1 JS string character\n const reStrLength = /^s:(\\d+):\"/g // also match the opening \" char\n const [match, byteLenMatch] = reStrLength.exec(str) || []\n\n if (!match) {\n throw SyntaxError('Expected a string value')\n }\n\n const len = parseInt(byteLenMatch, 10)\n\n str = str.substr(match.length)\n\n const [strMatch, bytes] = readBytes(str, len)\n\n if (bytes !== len) {\n throw SyntaxError(`Expected string of ${len} bytes, but got ${bytes}`)\n }\n\n str = str.substr(strMatch.length)\n\n // strict parsing, match closing \"; chars\n if (!str.startsWith('\";')) {\n throw SyntaxError('Expected \";')\n }\n\n return [strMatch, match.length + strMatch.length + 2] // skip last \";\n}\n\nfunction expectEscapedString (str) {\n const reStrLength = /^S:(\\d+):\"/g // also match the opening \" char\n const [match, strLenMatch] = reStrLength.exec(str) || []\n\n if (!match) {\n throw SyntaxError('Expected an escaped string value')\n }\n\n const len = parseInt(strLenMatch, 10)\n\n str = str.substr(match.length)\n\n const [strMatch, bytes, escapedChars] = readBytes(str, len, true)\n\n if (bytes !== len) {\n throw SyntaxError(`Expected escaped string of ${len} bytes, but got ${bytes}`)\n }\n\n str = str.substr(strMatch.length + escapedChars * 2)\n\n // strict parsing, match closing \"; chars\n if (!str.startsWith('\";')) {\n throw SyntaxError('Expected \";')\n }\n\n return [strMatch, match.length + strMatch.length + 2] // skip last \";\n}\n\nfunction expectKeyOrIndex (str) {\n try {\n return expectString(str)\n } catch (err) {}\n\n try {\n return expectEscapedString(str)\n } catch (err) {}\n\n try {\n return expectInt(str)\n } catch (err) {\n throw SyntaxError('Expected key or index')\n }\n}\n\nfunction expectObject (str, cache) {\n // O:<class name length>:\"class name\":<prop count>:{<props and values>}\n // O:8:\"stdClass\":2:{s:3:\"foo\";s:3:\"bar\";s:3:\"bar\";s:3:\"baz\";}\n const reObjectLiteral = /^O:(\\d+):\"([^\"]+)\":(\\d+):\\{/\n const [objectLiteralBeginMatch, /* classNameLengthMatch */, className, propCountMatch] = reObjectLiteral.exec(str) || []\n\n if (!objectLiteralBeginMatch) {\n throw SyntaxError('Invalid input')\n }\n\n if (className !== 'stdClass') {\n throw SyntaxError(`Unsupported object type: ${className}`)\n }\n\n let totalOffset = objectLiteralBeginMatch.length\n\n const propCount = parseInt(propCountMatch, 10)\n const obj = {}\n cache([obj])\n\n str = str.substr(totalOffset)\n\n for (let i = 0; i < propCount; i++) {\n const prop = expectKeyOrIndex(str)\n str = str.substr(prop[1])\n totalOffset += prop[1]\n\n const value = expectType(str, cache)\n str = str.substr(value[1])\n totalOffset += value[1]\n\n obj[prop[0]] = value[0]\n }\n\n // strict parsing, expect } after object literal\n if (str.charAt(0) !== '}') {\n throw SyntaxError('Expected }')\n }\n\n return [obj, totalOffset + 1] // skip final }\n}\n\nfunction expectClass (str, cache) {\n // can't be well supported, because requires calling eval (or similar)\n // in order to call serialized constructor name\n // which is unsafe\n // or assume that constructor is defined in global scope\n // but this is too much limiting\n throw Error('Not yet implemented')\n}\n\nfunction expectReference (str, cache) {\n const reRef = /^[rR]:([1-9]\\d*);/\n const [match, refIndex] = reRef.exec(str) || []\n\n if (!match) {\n throw SyntaxError('Expected reference value')\n }\n\n return [cache.get(parseInt(refIndex, 10) - 1), match.length]\n}\n\nfunction expectArray (str, cache) {\n const reArrayLength = /^a:(\\d+):{/\n const [arrayLiteralBeginMatch, arrayLengthMatch] = reArrayLength.exec(str) || []\n\n if (!arrayLengthMatch) {\n throw SyntaxError('Expected array length annotation')\n }\n\n str = str.substr(arrayLiteralBeginMatch.length)\n\n const array = expectArrayItems(str, parseInt(arrayLengthMatch, 10), cache)\n\n // strict parsing, expect closing } brace after array literal\n if (str.charAt(array[1]) !== '}') {\n throw SyntaxError('Expected }')\n }\n\n return [array[0], arrayLiteralBeginMatch.length + array[1] + 1] // jump over }\n}\n\nfunction expectArrayItems (str, expectedItems = 0, cache) {\n let key\n let hasStringKeys = false\n let item\n let totalOffset = 0\n let items = []\n cache([items])\n\n for (let i = 0; i < expectedItems; i++) {\n key = expectKeyOrIndex(str)\n\n // this is for backward compatibility with previous implementation\n if (!hasStringKeys) {\n hasStringKeys = (typeof key[0] === 'string')\n }\n\n str = str.substr(key[1])\n totalOffset += key[1]\n\n // references are resolved immediately, so if duplicate key overwrites previous array index\n // the old value is anyway resolved\n // fixme: but next time the same reference should point to the new value\n item = expectType(str, cache)\n str = str.substr(item[1])\n totalOffset += item[1]\n\n items[key[0]] = item[0]\n }\n\n // this is for backward compatibility with previous implementation\n if (hasStringKeys) {\n items = Object.assign({}, items)\n }\n\n return [items, totalOffset]\n}\n\nmodule.exports = function unserialize (str) {\n // discuss at: https://locutus.io/php/unserialize/\n // original by: Arpad Ray (mailto:arpad@php.net)\n // improved by: Pedro Tainha (https://www.pedrotainha.com)\n // improved by: Kevin van Zonneveld (https://kvz.io)\n // improved by: Kevin van Zonneveld (https://kvz.io)\n // improved by: Chris\n // improved by: James\n // improved by: Le Torbi\n // improved by: Eli Skeggs\n // bugfixed by: dptr1988\n // bugfixed by: Kevin van Zonneveld (https://kvz.io)\n // bugfixed by: Brett Zamir (https://brett-zamir.me)\n // bugfixed by: philippsimon (https://github.com/philippsimon/)\n // revised by: d3x\n // input by: Brett Zamir (https://brett-zamir.me)\n // input by: Martin (https://www.erlenwiese.de/)\n // input by: kilops\n // input by: Jaroslaw Czarniak\n // input by: lovasoa (https://github.com/lovasoa/)\n // improved by: Rafał Kukawski\n // reimplemented by: Rafał Kukawski\n // note 1: We feel the main purpose of this function should be\n // note 1: to ease the transport of data between php & js\n // note 1: Aiming for PHP-compatibility, we have to translate objects to arrays\n // example 1: unserialize('a:3:{i:0;s:5:\"Kevin\";i:1;s:3:\"van\";i:2;s:9:\"Zonneveld\";}')\n // returns 1: ['Kevin', 'van', 'Zonneveld']\n // example 2: unserialize('a:2:{s:9:\"firstName\";s:5:\"Kevin\";s:7:\"midName\";s:3:\"van\";}')\n // returns 2: {firstName: 'Kevin', midName: 'van'}\n // example 3: unserialize('a:3:{s:2:\"ü\";s:2:\"ü\";s:3:\"四\";s:3:\"四\";s:4:\"𠜎\";s:4:\"𠜎\";}')\n // returns 3: {'ü': 'ü', '四': '四', '𠜎': '𠜎'}\n // example 4: unserialize(undefined)\n // returns 4: false\n // example 5: unserialize('O:8:\"stdClass\":1:{s:3:\"foo\";b:1;}')\n // returns 5: { foo: true }\n // example 6: unserialize('a:2:{i:0;N;i:1;s:0:\"\";}')\n // returns 6: [null, \"\"]\n // example 7: unserialize('S:7:\"\\\\65\\\\73\\\\63\\\\61\\\\70\\\\65\\\\64\";')\n // returns 7: 'escaped'\n\n try {\n if (typeof str !== 'string') {\n return false\n }\n\n return expectType(str, initCache())[0]\n } catch (err) {\n console.error(err)\n return false\n }\n}\n"]}
|
package/php/var/var_dump.js
CHANGED
|
@@ -30,7 +30,7 @@ module.exports = function var_dump() {
|
|
|
30
30
|
|
|
31
31
|
var _repeatChar = function _repeatChar(len, padChar) {
|
|
32
32
|
var str = '';
|
|
33
|
-
for (var
|
|
33
|
+
for (var _i = 0; _i < len; _i++) {
|
|
34
34
|
str += padChar;
|
|
35
35
|
}
|
|
36
36
|
return str;
|
|
@@ -56,8 +56,8 @@ module.exports = function var_dump() {
|
|
|
56
56
|
} else if (typeof val === 'function') {
|
|
57
57
|
var funcLines = val.toString().split('\n');
|
|
58
58
|
ret = '';
|
|
59
|
-
for (var
|
|
60
|
-
ret += (
|
|
59
|
+
for (var _i2 = 0, fll = funcLines.length; _i2 < fll; _i2++) {
|
|
60
|
+
ret += (_i2 !== 0 ? '\n' + thickPad : '') + funcLines[_i2];
|
|
61
61
|
}
|
|
62
62
|
} else if (val instanceof Date) {
|
|
63
63
|
ret = 'Date(' + val + ')';
|
package/php/var/var_dump.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/php/var/var_dump.js"],"names":["module","exports","var_dump","echo","require","output","padChar","padVal","lgth","i","_getFuncName","fn","name","exec","_repeatChar","len","str","_getInnerVal","val","thickPad","ret","length","parseFloat","parseInt","funcLines","toString","split","fll","Date","RegExp","nodeName","nodeType","namespaceURI","nodeValue","_formatArray","obj","curDepth","basePad","constructor","someProp","hasOwnProperty","key","objVal","arguments"],"mappings":";;;;AAAAA,OAAOC,OAAP,GAAiB,SAASC,QAAT,GAAqB;AAAE;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,
|
|
1
|
+
{"version":3,"sources":["../../../src/php/var/var_dump.js"],"names":["module","exports","var_dump","echo","require","output","padChar","padVal","lgth","i","_getFuncName","fn","name","exec","_repeatChar","len","str","_getInnerVal","val","thickPad","ret","length","parseFloat","parseInt","funcLines","toString","split","fll","Date","RegExp","nodeName","nodeType","namespaceURI","nodeValue","_formatArray","obj","curDepth","basePad","constructor","someProp","hasOwnProperty","key","objVal","arguments"],"mappings":"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","file":"var_dump.js","sourcesContent":["module.exports = function var_dump () { // eslint-disable-line camelcase\n // discuss at: https://locutus.io/php/var_dump/\n // original by: Brett Zamir (https://brett-zamir.me)\n // improved by: Zahlii\n // improved by: Brett Zamir (https://brett-zamir.me)\n // note 1: For returning a string, use var_export() with the second argument set to true\n // test: skip-all\n // example 1: var_dump(1)\n // returns 1: 'int(1)'\n\n const echo = require('../strings/echo')\n let output = ''\n const padChar = ' '\n const padVal = 4\n let lgth = 0\n let i = 0\n\n const _getFuncName = function (fn) {\n const name = (/\\W*function\\s+([\\w$]+)\\s*\\(/)\n .exec(fn)\n if (!name) {\n return '(Anonymous)'\n }\n return name[1]\n }\n\n const _repeatChar = function (len, padChar) {\n let str = ''\n for (let i = 0; i < len; i++) {\n str += padChar\n }\n return str\n }\n const _getInnerVal = function (val, thickPad) {\n let ret = ''\n if (val === null) {\n ret = 'NULL'\n } else if (typeof val === 'boolean') {\n ret = 'bool(' + val + ')'\n } else if (typeof val === 'string') {\n ret = 'string(' + val.length + ') \"' + val + '\"'\n } else if (typeof val === 'number') {\n if (parseFloat(val) === parseInt(val, 10)) {\n ret = 'int(' + val + ')'\n } else {\n ret = 'float(' + val + ')'\n }\n } else if (typeof val === 'undefined') {\n // The remaining are not PHP behavior because these values\n // only exist in this exact form in JavaScript\n ret = 'undefined'\n } else if (typeof val === 'function') {\n const funcLines = val.toString()\n .split('\\n')\n ret = ''\n for (let i = 0, fll = funcLines.length; i < fll; i++) {\n ret += (i !== 0 ? '\\n' + thickPad : '') + funcLines[i]\n }\n } else if (val instanceof Date) {\n ret = 'Date(' + val + ')'\n } else if (val instanceof RegExp) {\n ret = 'RegExp(' + val + ')'\n } else if (val.nodeName) {\n // Different than PHP's DOMElement\n switch (val.nodeType) {\n case 1:\n if (typeof val.namespaceURI === 'undefined' ||\n val.namespaceURI === 'https://www.w3.org/1999/xhtml') {\n // Undefined namespace could be plain XML, but namespaceURI not widely supported\n ret = 'HTMLElement(\"' + val.nodeName + '\")'\n } else {\n ret = 'XML Element(\"' + val.nodeName + '\")'\n }\n break\n case 2:\n ret = 'ATTRIBUTE_NODE(' + val.nodeName + ')'\n break\n case 3:\n ret = 'TEXT_NODE(' + val.nodeValue + ')'\n break\n case 4:\n ret = 'CDATA_SECTION_NODE(' + val.nodeValue + ')'\n break\n case 5:\n ret = 'ENTITY_REFERENCE_NODE'\n break\n case 6:\n ret = 'ENTITY_NODE'\n break\n case 7:\n ret = 'PROCESSING_INSTRUCTION_NODE(' + val.nodeName + ':' + val.nodeValue + ')'\n break\n case 8:\n ret = 'COMMENT_NODE(' + val.nodeValue + ')'\n break\n case 9:\n ret = 'DOCUMENT_NODE'\n break\n case 10:\n ret = 'DOCUMENT_TYPE_NODE'\n break\n case 11:\n ret = 'DOCUMENT_FRAGMENT_NODE'\n break\n case 12:\n ret = 'NOTATION_NODE'\n break\n }\n }\n return ret\n }\n\n var _formatArray = function (obj, curDepth, padVal, padChar) {\n if (curDepth > 0) {\n curDepth++\n }\n\n const basePad = _repeatChar(padVal * (curDepth - 1), padChar)\n const thickPad = _repeatChar(padVal * (curDepth + 1), padChar)\n let str = ''\n let val = ''\n\n if (typeof obj === 'object' && obj !== null) {\n if (obj.constructor && _getFuncName(obj.constructor) === 'LOCUTUS_Resource') {\n return obj.var_dump()\n }\n lgth = 0\n for (const someProp in obj) {\n if (obj.hasOwnProperty(someProp)) {\n lgth++\n }\n }\n str += 'array(' + lgth + ') {\\n'\n for (const key in obj) {\n const objVal = obj[key]\n if (typeof objVal === 'object' &&\n objVal !== null &&\n !(objVal instanceof Date) &&\n !(objVal instanceof RegExp) &&\n !objVal.nodeName) {\n str += thickPad\n str += '['\n str += key\n str += '] =>\\n'\n str += thickPad\n str += _formatArray(objVal, curDepth + 1, padVal, padChar)\n } else {\n val = _getInnerVal(objVal, thickPad)\n str += thickPad\n str += '['\n str += key\n str += '] =>\\n'\n str += thickPad\n str += val\n str += '\\n'\n }\n }\n str += basePad + '}\\n'\n } else {\n str = _getInnerVal(obj, thickPad)\n }\n return str\n }\n\n output = _formatArray(arguments[0], 0, padVal, padChar)\n for (i = 1; i < arguments.length; i++) {\n output += '\\n' + _formatArray(arguments[i], 0, padVal, padChar)\n }\n\n echo(output)\n\n // Not how PHP does it, but helps us test:\n return output\n}\n"]}
|
package/php/var/var_export.js
CHANGED
|
@@ -32,7 +32,7 @@ module.exports = function var_export(mixedExpression, boolReturn) {
|
|
|
32
32
|
var echo = require('../strings/echo');
|
|
33
33
|
var retstr = '';
|
|
34
34
|
var iret = '';
|
|
35
|
-
var value;
|
|
35
|
+
var value = void 0;
|
|
36
36
|
var cnt = 0;
|
|
37
37
|
var x = [];
|
|
38
38
|
var i = 0;
|
|
@@ -60,9 +60,9 @@ module.exports = function var_export(mixedExpression, boolReturn) {
|
|
|
60
60
|
};
|
|
61
61
|
var __getType = function __getType(inp) {
|
|
62
62
|
var i = 0;
|
|
63
|
-
var match;
|
|
64
|
-
var types;
|
|
65
|
-
var cons;
|
|
63
|
+
var match = void 0;
|
|
64
|
+
var types = void 0;
|
|
65
|
+
var cons = void 0;
|
|
66
66
|
var type = typeof inp === 'undefined' ? 'undefined' : _typeof(inp);
|
|
67
67
|
if (type === 'object' && inp && inp.constructor && getFuncName(inp.constructor) === 'LOCUTUS_Resource') {
|
|
68
68
|
return 'resource';
|
|
@@ -124,7 +124,7 @@ module.exports = function var_export(mixedExpression, boolReturn) {
|
|
|
124
124
|
// variables in JavaScript); if using instead in JavaScript and you
|
|
125
125
|
// are using the namespaced version, note that create_function() will
|
|
126
126
|
// not be available as a global
|
|
127
|
-
retstr = "create_function ('" + funcParts[1] + "', '" + funcParts[2].replace(
|
|
127
|
+
retstr = "create_function ('" + funcParts[1] + "', '" + funcParts[2].replace(/'/g, "\\'") + "')";
|
|
128
128
|
} else if (type === 'resource') {
|
|
129
129
|
// Resources treated as null for var_export
|
|
130
130
|
retstr = 'NULL';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/php/var/var_export.js"],"names":["module","exports","var_export","mixedExpression","boolReturn","echo","require","retstr","iret","value","cnt","x","i","funcParts","idtLevel","arguments","innerIndent","outerIndent","getFuncName","fn","name","exec","_isNormalInteger","string","number","Math","floor","Number","Infinity","String","_makeIndent","Array","join","__getType","inp","match","types","cons","type","constructor","toString","toLowerCase","length","subtype","replace"
|
|
1
|
+
{"version":3,"sources":["../../../src/php/var/var_export.js"],"names":["module","exports","var_export","mixedExpression","boolReturn","echo","require","retstr","iret","value","cnt","x","i","funcParts","idtLevel","arguments","innerIndent","outerIndent","getFuncName","fn","name","exec","_isNormalInteger","string","number","Math","floor","Number","Infinity","String","_makeIndent","Array","join","__getType","inp","match","types","cons","type","constructor","toString","toLowerCase","length","subtype","replace"],"mappings":"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","file":"var_export.js","sourcesContent":["module.exports = function var_export (mixedExpression, boolReturn) { // eslint-disable-line camelcase\n // discuss at: https://locutus.io/php/var_export/\n // original by: Philip Peterson\n // improved by: johnrembo\n // improved by: Brett Zamir (https://brett-zamir.me)\n // input by: Brian Tafoya (https://www.premasolutions.com/)\n // input by: Hans Henrik (https://hanshenrik.tk/)\n // bugfixed by: Brett Zamir (https://brett-zamir.me)\n // bugfixed by: Brett Zamir (https://brett-zamir.me)\n // bugfixed by: simivar (https://github.com/simivar)\n // bugfixed by: simivar (https://github.com/simivar)\n // bugfixed by: simivar (https://github.com/simivar)\n // example 1: var_export(null)\n // returns 1: null\n // example 2: var_export({0: 'Kevin', 1: 'van', 2: 'Zonneveld'}, true)\n // returns 2: \"array (\\n 0 => 'Kevin',\\n 1 => 'van',\\n 2 => 'Zonneveld',\\n)\"\n // example 3: var data = 'Kevin'\n // example 3: var_export(data, true)\n // returns 3: \"'Kevin'\"\n // example 4: var_export({0: 'Kevin', 1: 'van', 'lastName': 'Zonneveld'}, true)\n // returns 4: \"array (\\n 0 => 'Kevin',\\n 1 => 'van',\\n 'lastName' => 'Zonneveld',\\n)\"\n // example 5: var_export([], true)\n // returns 5: \"array (\\n)\"\n // example 6: var_export({ test: [ 'a', 'b' ] }, true)\n // returns 6: \"array (\\n 'test' =>\\n array (\\n 0 => 'a',\\n 1 => 'b',\\n ),\\n)\"\n\n const echo = require('../strings/echo')\n let retstr = ''\n let iret = ''\n let value\n let cnt = 0\n const x = []\n let i = 0\n let funcParts = []\n // We use the last argument (not part of PHP) to pass in\n // our indentation level\n const idtLevel = arguments[2] || 2\n let innerIndent = ''\n let outerIndent = ''\n const getFuncName = function (fn) {\n const name = (/\\W*function\\s+([\\w$]+)\\s*\\(/).exec(fn)\n if (!name) {\n return '(Anonymous)'\n }\n return name[1]\n }\n\n const _isNormalInteger = function (string) {\n const number = Math.floor(Number(string))\n return number !== Infinity && String(number) === string && number >= 0\n }\n\n const _makeIndent = function (idtLevel) {\n return (new Array(idtLevel + 1))\n .join(' ')\n }\n const __getType = function (inp) {\n let i = 0\n let match\n let types\n let cons\n let type = typeof inp\n if (type === 'object' && (inp && inp.constructor) &&\n getFuncName(inp.constructor) === 'LOCUTUS_Resource') {\n return 'resource'\n }\n if (type === 'function') {\n return 'function'\n }\n if (type === 'object' && !inp) {\n // Should this be just null?\n return 'null'\n }\n if (type === 'object') {\n if (!inp.constructor) {\n return 'object'\n }\n cons = inp.constructor.toString()\n match = cons.match(/(\\w+)\\(/)\n if (match) {\n cons = match[1].toLowerCase()\n }\n types = ['boolean', 'number', 'string', 'array']\n for (i = 0; i < types.length; i++) {\n if (cons === types[i]) {\n type = types[i]\n break\n }\n }\n }\n return type\n }\n const type = __getType(mixedExpression)\n\n if (type === null) {\n retstr = 'NULL'\n } else if (type === 'array' || type === 'object') {\n outerIndent = _makeIndent(idtLevel - 2)\n innerIndent = _makeIndent(idtLevel)\n for (i in mixedExpression) {\n value = ' '\n const subtype = __getType(mixedExpression[i])\n if (subtype === 'array' || subtype === 'object') {\n value = '\\n'\n }\n value += var_export(mixedExpression[i], 1, idtLevel + 2)\n i = _isNormalInteger(i) ? i : `'${i}'`\n x[cnt++] = innerIndent + i + ' =>' + value\n }\n if (x.length > 0) {\n iret = x.join(',\\n') + ',\\n'\n }\n retstr = outerIndent + 'array (\\n' + iret + outerIndent + ')'\n } else if (type === 'function') {\n funcParts = mixedExpression.toString().match(/function .*?\\((.*?)\\) \\{([\\s\\S]*)\\}/)\n\n // For lambda functions, var_export() outputs such as the following:\n // '\\000lambda_1'. Since it will probably not be a common use to\n // expect this (unhelpful) form, we'll use another PHP-exportable\n // construct, create_function() (though dollar signs must be on the\n // variables in JavaScript); if using instead in JavaScript and you\n // are using the namespaced version, note that create_function() will\n // not be available as a global\n retstr = \"create_function ('\" + funcParts[1] + \"', '\" +\n funcParts[2].replace(/'/g, \"\\\\'\") + \"')\"\n } else if (type === 'resource') {\n // Resources treated as null for var_export\n retstr = 'NULL'\n } else {\n retstr = typeof mixedExpression !== 'string'\n ? mixedExpression\n : \"'\" + mixedExpression.replace(/([\"'])/g, '\\\\$1').replace(/\\0/g, '\\\\0') + \"'\"\n }\n\n if (!boolReturn) {\n echo(retstr)\n return null\n }\n\n return retstr\n}\n"]}
|
package/php/xdiff/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
module.exports
|
|
4
|
-
module.exports
|
|
3
|
+
module.exports.xdiff_string_diff = require('./xdiff_string_diff');
|
|
4
|
+
module.exports.xdiff_string_patch = require('./xdiff_string_patch');
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
package/php/xdiff/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/php/xdiff/index.js"],"names":["module","exports","require"],"mappings":";;AAAAA,OAAOC,OAAP,
|
|
1
|
+
{"version":3,"sources":["../../../src/php/xdiff/index.js"],"names":["module","exports","xdiff_string_diff","require","xdiff_string_patch"],"mappings":";;AAAAA,OAAOC,OAAP,CAAeC,iBAAf,GAAmCC,QAAQ,qBAAR,CAAnC;AACAH,OAAOC,OAAP,CAAeG,kBAAf,GAAoCD,QAAQ,sBAAR,CAApC","file":"index.js","sourcesContent":["module.exports.xdiff_string_diff = require('./xdiff_string_diff')\nmodule.exports.xdiff_string_patch = require('./xdiff_string_patch')\n"]}
|
|
@@ -19,14 +19,14 @@ module.exports = function xdiff_string_diff(oldData, newData, contextLines, mini
|
|
|
19
19
|
var i = 0;
|
|
20
20
|
var j = 0;
|
|
21
21
|
var k = 0;
|
|
22
|
-
var oriHunkStart;
|
|
23
|
-
var newHunkStart;
|
|
24
|
-
var oriHunkEnd;
|
|
25
|
-
var newHunkEnd;
|
|
26
|
-
var oriHunkLineNo;
|
|
27
|
-
var newHunkLineNo;
|
|
28
|
-
var oriHunkSize;
|
|
29
|
-
var newHunkSize;
|
|
22
|
+
var oriHunkStart = void 0;
|
|
23
|
+
var newHunkStart = void 0;
|
|
24
|
+
var oriHunkEnd = void 0;
|
|
25
|
+
var newHunkEnd = void 0;
|
|
26
|
+
var oriHunkLineNo = void 0;
|
|
27
|
+
var newHunkLineNo = void 0;
|
|
28
|
+
var oriHunkSize = void 0;
|
|
29
|
+
var newHunkSize = void 0;
|
|
30
30
|
var MAX_CONTEXT_LINES = Number.POSITIVE_INFINITY; // Potential configuration
|
|
31
31
|
var MIN_CONTEXT_LINES = 0;
|
|
32
32
|
var DEFAULT_CONTEXT_LINES = 3;
|
|
@@ -38,8 +38,8 @@ module.exports = function xdiff_string_diff(oldData, newData, contextLines, mini
|
|
|
38
38
|
var CONTEXT_INDICATOR = ' ';
|
|
39
39
|
var DELETION_INDICATOR = '-';
|
|
40
40
|
var ADDITION_INDICATOR = '+';
|
|
41
|
-
var oriLines;
|
|
42
|
-
var newLines;
|
|
41
|
+
var oriLines = void 0;
|
|
42
|
+
var newLines = void 0;
|
|
43
43
|
var NEW_LINE = '\n';
|
|
44
44
|
|
|
45
45
|
var _trim = function _trim(text) {
|
|
@@ -54,9 +54,9 @@ module.exports = function xdiff_string_diff(oldData, newData, contextLines, mini
|
|
|
54
54
|
var args = arguments;
|
|
55
55
|
var argsLen = arguments.length;
|
|
56
56
|
var basicTypes = ['number', 'boolean', 'string', 'function', 'object', 'undefined'];
|
|
57
|
-
var basicType;
|
|
58
|
-
var i;
|
|
59
|
-
var j;
|
|
57
|
+
var basicType = void 0;
|
|
58
|
+
var i = void 0;
|
|
59
|
+
var j = void 0;
|
|
60
60
|
var typeOfType = typeof type === 'undefined' ? 'undefined' : _typeof(type);
|
|
61
61
|
if (typeOfType !== 'string' && typeOfType !== 'function') {
|
|
62
62
|
throw new Error('Bad type parameter');
|
|
@@ -99,7 +99,7 @@ module.exports = function xdiff_string_diff(oldData, newData, contextLines, mini
|
|
|
99
99
|
};
|
|
100
100
|
|
|
101
101
|
var _hasValue = function _hasValue(array, value) {
|
|
102
|
-
var i;
|
|
102
|
+
var i = void 0;
|
|
103
103
|
_verifyType(Array, array);
|
|
104
104
|
|
|
105
105
|
for (i = 0; i < array.length; i++) {
|
|
@@ -115,9 +115,9 @@ module.exports = function xdiff_string_diff(oldData, newData, contextLines, mini
|
|
|
115
115
|
var args = arguments;
|
|
116
116
|
var argsLen = arguments.length;
|
|
117
117
|
var basicTypes = ['number', 'boolean', 'string', 'function', 'object', 'undefined'];
|
|
118
|
-
var basicType;
|
|
119
|
-
var i;
|
|
120
|
-
var j;
|
|
118
|
+
var basicType = void 0;
|
|
119
|
+
var i = void 0;
|
|
120
|
+
var j = void 0;
|
|
121
121
|
var typeOfType = typeof type === 'undefined' ? 'undefined' : _typeof(type);
|
|
122
122
|
|
|
123
123
|
if (typeOfType !== 'string' && typeOfType !== 'function') {
|
|
@@ -164,7 +164,7 @@ module.exports = function xdiff_string_diff(oldData, newData, contextLines, mini
|
|
|
164
164
|
|
|
165
165
|
var _getInitializedArray = function _getInitializedArray(arraySize, initValue) {
|
|
166
166
|
var array = [];
|
|
167
|
-
var i;
|
|
167
|
+
var i = void 0;
|
|
168
168
|
_verifyType('number', arraySize);
|
|
169
169
|
|
|
170
170
|
for (i = 0; i < arraySize; i++) {
|
|
@@ -203,9 +203,9 @@ module.exports = function xdiff_string_diff(oldData, newData, contextLines, mini
|
|
|
203
203
|
|
|
204
204
|
// Function to calculate lcs lengths
|
|
205
205
|
var lcsLens = function lcsLens(xs, ys) {
|
|
206
|
-
var i;
|
|
207
|
-
var j;
|
|
208
|
-
var prev;
|
|
206
|
+
var i = void 0;
|
|
207
|
+
var j = void 0;
|
|
208
|
+
var prev = void 0;
|
|
209
209
|
var curr = _getInitializedArray(ys.length + 1, 0);
|
|
210
210
|
|
|
211
211
|
for (i = 0; i < xs.length; i++) {
|
|
@@ -224,15 +224,15 @@ module.exports = function xdiff_string_diff(oldData, newData, contextLines, mini
|
|
|
224
224
|
|
|
225
225
|
// Function to find lcs and fill in the array to indicate the optimal longest common sequence
|
|
226
226
|
var _findLcs = function _findLcs(xs, xidx, xIsIn, ys) {
|
|
227
|
-
var i;
|
|
228
|
-
var xb;
|
|
229
|
-
var xe;
|
|
230
|
-
var llB;
|
|
231
|
-
var llE;
|
|
232
|
-
var pivot;
|
|
233
|
-
var max;
|
|
234
|
-
var yb;
|
|
235
|
-
var ye;
|
|
227
|
+
var i = void 0;
|
|
228
|
+
var xb = void 0;
|
|
229
|
+
var xe = void 0;
|
|
230
|
+
var llB = void 0;
|
|
231
|
+
var llE = void 0;
|
|
232
|
+
var pivot = void 0;
|
|
233
|
+
var max = void 0;
|
|
234
|
+
var yb = void 0;
|
|
235
|
+
var ye = void 0;
|
|
236
236
|
var nx = xs.length;
|
|
237
237
|
var ny = ys.length;
|
|
238
238
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/php/xdiff/xdiff_string_diff.js"],"names":["module","exports","xdiff_string_diff","oldData","newData","contextLines","minimal","i","j","k","oriHunkStart","newHunkStart","oriHunkEnd","newHunkEnd","oriHunkLineNo","newHunkLineNo","oriHunkSize","newHunkSize","MAX_CONTEXT_LINES","Number","POSITIVE_INFINITY","MIN_CONTEXT_LINES","DEFAULT_CONTEXT_LINES","HEADER_PREFIX","HEADER_SUFFIX","ORIGINAL_INDICATOR","NEW_INDICATOR","RANGE_SEPARATOR","CONTEXT_INDICATOR","DELETION_INDICATOR","ADDITION_INDICATOR","oriLines","newLines","NEW_LINE","_trim","text","Error","replace","_verifyType","type","args","arguments","argsLen","length","basicTypes","basicType","typeOfType","_hasValue","array","value","Array","_areTypeOf","_getInitializedArray","arraySize","initValue","push","_splitIntoLines","split","_isEmptyArray","obj","_findLongestCommonSequence","seq1","seq2","seq1IsInLcs","seq2IsInLcs","lcsLens","xs","ys","prev","curr","slice","Math","max","_findLcs","xidx","xIsIn","xb","xe","llB","llE","pivot","yb","ye","nx","ny","floor","reverse","concat","oriLen","newLen","oriIsInLcs","newIsInLcs","lcsLen","unidiff","join","leadingContext","trailingContext","actualLeadingContext","actualTrailingContext","regularizeLeadingContext","context","contextStartPos","regularizeTrailingContext","min","charAt"],"mappings":"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","file":"xdiff_string_diff.js","sourcesContent":["module.exports = function xdiff_string_diff (oldData, newData, contextLines, minimal) { // eslint-disable-line camelcase\n // discuss at: https://locutus.io/php/xdiff_string_diff\n // original by: Brett Zamir (https://brett-zamir.me)\n // based on: Imgen Tata (https://www.myipdf.com/)\n // bugfixed by: Imgen Tata (https://www.myipdf.com/)\n // improved by: Brett Zamir (https://brett-zamir.me)\n // note 1: The minimal argument is not currently supported\n // example 1: xdiff_string_diff('', 'Hello world!')\n // returns 1: '@@ -0,0 +1,1 @@\\n+Hello world!'\n\n // (This code was done by Imgen Tata; I have only reformatted for use in Locutus)\n\n // See https://en.wikipedia.org/wiki/Diff#Unified_format\n var i = 0\n var j = 0\n var k = 0\n var oriHunkStart\n var newHunkStart\n var oriHunkEnd\n var newHunkEnd\n var oriHunkLineNo\n var newHunkLineNo\n var oriHunkSize\n var newHunkSize\n var MAX_CONTEXT_LINES = Number.POSITIVE_INFINITY // Potential configuration\n var MIN_CONTEXT_LINES = 0\n var DEFAULT_CONTEXT_LINES = 3\n var HEADER_PREFIX = '@@ ' //\n var HEADER_SUFFIX = ' @@'\n var ORIGINAL_INDICATOR = '-'\n var NEW_INDICATOR = '+'\n var RANGE_SEPARATOR = ','\n var CONTEXT_INDICATOR = ' '\n var DELETION_INDICATOR = '-'\n var ADDITION_INDICATOR = '+'\n var oriLines\n var newLines\n var NEW_LINE = '\\n'\n\n var _trim = function (text) {\n if (typeof text !== 'string') {\n throw new Error('String parameter required')\n }\n\n return text.replace(/(^\\s*)|(\\s*$)/g, '')\n }\n\n var _verifyType = function (type) {\n var args = arguments\n var argsLen = arguments.length\n var basicTypes = ['number', 'boolean', 'string', 'function', 'object', 'undefined']\n var basicType\n var i\n var j\n var typeOfType = typeof type\n if (typeOfType !== 'string' && typeOfType !== 'function') {\n throw new Error('Bad type parameter')\n }\n\n if (argsLen < 2) {\n throw new Error('Too few arguments')\n }\n\n if (typeOfType === 'string') {\n type = _trim(type)\n\n if (type === '') {\n throw new Error('Bad type parameter')\n }\n\n for (j = 0; j < basicTypes.length; j++) {\n basicType = basicTypes[j]\n\n if (basicType === type) {\n for (i = 1; i < argsLen; i++) {\n if (typeof args[i] !== type) {\n throw new Error('Bad type')\n }\n }\n\n return\n }\n }\n\n throw new Error('Bad type parameter')\n }\n\n // Not basic type. we need to use instanceof operator\n for (i = 1; i < argsLen; i++) {\n if (!(args[i] instanceof type)) {\n throw new Error('Bad type')\n }\n }\n }\n\n var _hasValue = function (array, value) {\n var i\n _verifyType(Array, array)\n\n for (i = 0; i < array.length; i++) {\n if (array[i] === value) {\n return true\n }\n }\n\n return false\n }\n\n var _areTypeOf = function (type) {\n var args = arguments\n var argsLen = arguments.length\n var basicTypes = ['number', 'boolean', 'string', 'function', 'object', 'undefined']\n var basicType\n var i\n var j\n var typeOfType = typeof type\n\n if (typeOfType !== 'string' && typeOfType !== 'function') {\n throw new Error('Bad type parameter')\n }\n\n if (argsLen < 2) {\n throw new Error('Too few arguments')\n }\n\n if (typeOfType === 'string') {\n type = _trim(type)\n\n if (type === '') {\n return false\n }\n\n for (j = 0; j < basicTypes.length; j++) {\n basicType = basicTypes[j]\n\n if (basicType === type) {\n for (i = 1; i < argsLen; i++) {\n if (typeof args[i] !== type) {\n return false\n }\n }\n\n return true\n }\n }\n\n throw new Error('Bad type parameter')\n }\n\n // Not basic type. we need to use instanceof operator\n for (i = 1; i < argsLen; i++) {\n if (!(args[i] instanceof type)) {\n return false\n }\n }\n\n return true\n }\n\n var _getInitializedArray = function (arraySize, initValue) {\n var array = []\n var i\n _verifyType('number', arraySize)\n\n for (i = 0; i < arraySize; i++) {\n array.push(initValue)\n }\n\n return array\n }\n\n var _splitIntoLines = function (text) {\n _verifyType('string', text)\n\n if (text === '') {\n return []\n }\n return text.split('\\n')\n }\n\n var _isEmptyArray = function (obj) {\n return _areTypeOf(Array, obj) && obj.length === 0\n }\n\n /**\n * Finds longest common sequence between two sequences\n * @see {@link https://wordaligned.org/articles/longest-common-subsequence}\n */\n var _findLongestCommonSequence = function (seq1, seq2, seq1IsInLcs, seq2IsInLcs) {\n if (!_areTypeOf(Array, seq1, seq2)) {\n throw new Error('Array parameters are required')\n }\n\n // Deal with edge case\n if (_isEmptyArray(seq1) || _isEmptyArray(seq2)) {\n return []\n }\n\n // Function to calculate lcs lengths\n var lcsLens = function (xs, ys) {\n var i\n var j\n var prev\n var curr = _getInitializedArray(ys.length + 1, 0)\n\n for (i = 0; i < xs.length; i++) {\n prev = curr.slice(0)\n for (j = 0; j < ys.length; j++) {\n if (xs[i] === ys[j]) {\n curr[j + 1] = prev[j] + 1\n } else {\n curr[j + 1] = Math.max(curr[j], prev[j + 1])\n }\n }\n }\n\n return curr\n }\n\n // Function to find lcs and fill in the array to indicate the optimal longest common sequence\n var _findLcs = function (xs, xidx, xIsIn, ys) {\n var i\n var xb\n var xe\n var llB\n var llE\n var pivot\n var max\n var yb\n var ye\n var nx = xs.length\n var ny = ys.length\n\n if (nx === 0) {\n return []\n }\n if (nx === 1) {\n if (_hasValue(ys, xs[0])) {\n xIsIn[xidx] = true\n return [xs[0]]\n }\n return []\n }\n i = Math.floor(nx / 2)\n xb = xs.slice(0, i)\n xe = xs.slice(i)\n llB = lcsLens(xb, ys)\n llE = lcsLens(xe.slice(0)\n .reverse(), ys.slice(0)\n .reverse())\n\n pivot = 0\n max = 0\n for (j = 0; j <= ny; j++) {\n if (llB[j] + llE[ny - j] > max) {\n pivot = j\n max = llB[j] + llE[ny - j]\n }\n }\n yb = ys.slice(0, pivot)\n ye = ys.slice(pivot)\n return _findLcs(xb, xidx, xIsIn, yb).concat(_findLcs(xe, xidx + i, xIsIn, ye))\n }\n\n // Fill in seq1IsInLcs to find the optimal longest common subsequence of first sequence\n _findLcs(seq1, 0, seq1IsInLcs, seq2)\n // Fill in seq2IsInLcs to find the optimal longest common subsequence\n // of second sequence and return the result\n return _findLcs(seq2, 0, seq2IsInLcs, seq1)\n }\n\n // First, check the parameters\n if (_areTypeOf('string', oldData, newData) === false) {\n return false\n }\n\n if (oldData === newData) {\n return ''\n }\n\n if (typeof contextLines !== 'number' ||\n contextLines > MAX_CONTEXT_LINES ||\n contextLines < MIN_CONTEXT_LINES) {\n contextLines = DEFAULT_CONTEXT_LINES\n }\n\n oriLines = _splitIntoLines(oldData)\n newLines = _splitIntoLines(newData)\n var oriLen = oriLines.length\n var newLen = newLines.length\n var oriIsInLcs = _getInitializedArray(oriLen, false)\n var newIsInLcs = _getInitializedArray(newLen, false)\n var lcsLen = _findLongestCommonSequence(oriLines, newLines, oriIsInLcs, newIsInLcs).length\n var unidiff = ''\n\n if (lcsLen === 0) {\n // No common sequence\n unidiff = [\n HEADER_PREFIX,\n ORIGINAL_INDICATOR,\n (oriLen > 0 ? '1' : '0'),\n RANGE_SEPARATOR,\n oriLen,\n ' ',\n NEW_INDICATOR,\n (newLen > 0 ? '1' : '0'),\n RANGE_SEPARATOR,\n newLen,\n HEADER_SUFFIX\n ].join('')\n\n for (i = 0; i < oriLen; i++) {\n unidiff += NEW_LINE + DELETION_INDICATOR + oriLines[i]\n }\n\n for (j = 0; j < newLen; j++) {\n unidiff += NEW_LINE + ADDITION_INDICATOR + newLines[j]\n }\n\n return unidiff\n }\n\n var leadingContext = []\n var trailingContext = []\n var actualLeadingContext = []\n var actualTrailingContext = []\n\n // Regularize leading context by the contextLines parameter\n var regularizeLeadingContext = function (context) {\n if (context.length === 0 || contextLines === 0) {\n return []\n }\n\n var contextStartPos = Math.max(context.length - contextLines, 0)\n\n return context.slice(contextStartPos)\n }\n\n // Regularize trailing context by the contextLines parameter\n var regularizeTrailingContext = function (context) {\n if (context.length === 0 || contextLines === 0) {\n return []\n }\n\n return context.slice(0, Math.min(contextLines, context.length))\n }\n\n // Skip common lines in the beginning\n while (i < oriLen && oriIsInLcs[i] === true && newIsInLcs[i] === true) {\n leadingContext.push(oriLines[i])\n i++\n }\n\n j = i\n // The index in the longest common sequence\n k = i\n oriHunkStart = i\n newHunkStart = j\n oriHunkEnd = i\n newHunkEnd = j\n\n while (i < oriLen || j < newLen) {\n while (i < oriLen && oriIsInLcs[i] === false) {\n i++\n }\n oriHunkEnd = i\n\n while (j < newLen && newIsInLcs[j] === false) {\n j++\n }\n newHunkEnd = j\n\n // Find the trailing context\n trailingContext = []\n while (i < oriLen && oriIsInLcs[i] === true && j < newLen && newIsInLcs[j] === true) {\n trailingContext.push(oriLines[i])\n k++\n i++\n j++\n }\n\n if (k >= lcsLen || // No more in longest common lines\n trailingContext.length >= 2 * contextLines) {\n // Context break found\n if (trailingContext.length < 2 * contextLines) {\n // It must be last block of common lines but not a context break\n trailingContext = []\n\n // Force break out\n i = oriLen\n j = newLen\n\n // Update hunk ends to force output to the end\n oriHunkEnd = oriLen\n newHunkEnd = newLen\n }\n\n // Output the diff hunk\n\n // Trim the leading and trailing context block\n actualLeadingContext = regularizeLeadingContext(leadingContext)\n actualTrailingContext = regularizeTrailingContext(trailingContext)\n\n oriHunkStart -= actualLeadingContext.length\n newHunkStart -= actualLeadingContext.length\n oriHunkEnd += actualTrailingContext.length\n newHunkEnd += actualTrailingContext.length\n\n oriHunkLineNo = oriHunkStart + 1\n newHunkLineNo = newHunkStart + 1\n oriHunkSize = oriHunkEnd - oriHunkStart\n newHunkSize = newHunkEnd - newHunkStart\n\n // Build header\n unidiff += [\n HEADER_PREFIX,\n ORIGINAL_INDICATOR,\n oriHunkLineNo,\n RANGE_SEPARATOR,\n oriHunkSize,\n ' ',\n NEW_INDICATOR,\n newHunkLineNo,\n RANGE_SEPARATOR,\n newHunkSize,\n HEADER_SUFFIX,\n NEW_LINE\n ].join('')\n\n // Build the diff hunk content\n while (oriHunkStart < oriHunkEnd || newHunkStart < newHunkEnd) {\n if (oriHunkStart < oriHunkEnd &&\n oriIsInLcs[oriHunkStart] === true &&\n newIsInLcs[newHunkStart] === true) {\n // The context line\n unidiff += CONTEXT_INDICATOR + oriLines[oriHunkStart] + NEW_LINE\n oriHunkStart++\n newHunkStart++\n } else if (oriHunkStart < oriHunkEnd && oriIsInLcs[oriHunkStart] === false) {\n // The deletion line\n unidiff += DELETION_INDICATOR + oriLines[oriHunkStart] + NEW_LINE\n oriHunkStart++\n } else if (newHunkStart < newHunkEnd && newIsInLcs[newHunkStart] === false) {\n // The additional line\n unidiff += ADDITION_INDICATOR + newLines[newHunkStart] + NEW_LINE\n newHunkStart++\n }\n }\n\n // Update hunk position and leading context\n oriHunkStart = i\n newHunkStart = j\n leadingContext = trailingContext\n }\n }\n\n // Trim the trailing new line if it exists\n if (unidiff.length > 0 && unidiff.charAt(unidiff.length) === NEW_LINE) {\n unidiff = unidiff.slice(0, -1)\n }\n\n return unidiff\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/php/xdiff/xdiff_string_diff.js"],"names":["module","exports","xdiff_string_diff","oldData","newData","contextLines","minimal","i","j","k","oriHunkStart","newHunkStart","oriHunkEnd","newHunkEnd","oriHunkLineNo","newHunkLineNo","oriHunkSize","newHunkSize","MAX_CONTEXT_LINES","Number","POSITIVE_INFINITY","MIN_CONTEXT_LINES","DEFAULT_CONTEXT_LINES","HEADER_PREFIX","HEADER_SUFFIX","ORIGINAL_INDICATOR","NEW_INDICATOR","RANGE_SEPARATOR","CONTEXT_INDICATOR","DELETION_INDICATOR","ADDITION_INDICATOR","oriLines","newLines","NEW_LINE","_trim","text","Error","replace","_verifyType","type","args","arguments","argsLen","length","basicTypes","basicType","typeOfType","_hasValue","array","value","Array","_areTypeOf","_getInitializedArray","arraySize","initValue","push","_splitIntoLines","split","_isEmptyArray","obj","_findLongestCommonSequence","seq1","seq2","seq1IsInLcs","seq2IsInLcs","lcsLens","xs","ys","prev","curr","slice","Math","max","_findLcs","xidx","xIsIn","xb","xe","llB","llE","pivot","yb","ye","nx","ny","floor","reverse","concat","oriLen","newLen","oriIsInLcs","newIsInLcs","lcsLen","unidiff","join","leadingContext","trailingContext","actualLeadingContext","actualTrailingContext","regularizeLeadingContext","context","contextStartPos","regularizeTrailingContext","min","charAt"],"mappings":"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","file":"xdiff_string_diff.js","sourcesContent":["module.exports = function xdiff_string_diff (oldData, newData, contextLines, minimal) { // eslint-disable-line camelcase\n // discuss at: https://locutus.io/php/xdiff_string_diff\n // original by: Brett Zamir (https://brett-zamir.me)\n // based on: Imgen Tata (https://www.myipdf.com/)\n // bugfixed by: Imgen Tata (https://www.myipdf.com/)\n // improved by: Brett Zamir (https://brett-zamir.me)\n // note 1: The minimal argument is not currently supported\n // example 1: xdiff_string_diff('', 'Hello world!')\n // returns 1: '@@ -0,0 +1,1 @@\\n+Hello world!'\n\n // (This code was done by Imgen Tata; I have only reformatted for use in Locutus)\n\n // See https://en.wikipedia.org/wiki/Diff#Unified_format\n let i = 0\n let j = 0\n let k = 0\n let oriHunkStart\n let newHunkStart\n let oriHunkEnd\n let newHunkEnd\n let oriHunkLineNo\n let newHunkLineNo\n let oriHunkSize\n let newHunkSize\n const MAX_CONTEXT_LINES = Number.POSITIVE_INFINITY // Potential configuration\n const MIN_CONTEXT_LINES = 0\n const DEFAULT_CONTEXT_LINES = 3\n const HEADER_PREFIX = '@@ ' //\n const HEADER_SUFFIX = ' @@'\n const ORIGINAL_INDICATOR = '-'\n const NEW_INDICATOR = '+'\n const RANGE_SEPARATOR = ','\n const CONTEXT_INDICATOR = ' '\n const DELETION_INDICATOR = '-'\n const ADDITION_INDICATOR = '+'\n let oriLines\n let newLines\n const NEW_LINE = '\\n'\n\n const _trim = function (text) {\n if (typeof text !== 'string') {\n throw new Error('String parameter required')\n }\n\n return text.replace(/(^\\s*)|(\\s*$)/g, '')\n }\n\n const _verifyType = function (type) {\n const args = arguments\n const argsLen = arguments.length\n const basicTypes = ['number', 'boolean', 'string', 'function', 'object', 'undefined']\n let basicType\n let i\n let j\n const typeOfType = typeof type\n if (typeOfType !== 'string' && typeOfType !== 'function') {\n throw new Error('Bad type parameter')\n }\n\n if (argsLen < 2) {\n throw new Error('Too few arguments')\n }\n\n if (typeOfType === 'string') {\n type = _trim(type)\n\n if (type === '') {\n throw new Error('Bad type parameter')\n }\n\n for (j = 0; j < basicTypes.length; j++) {\n basicType = basicTypes[j]\n\n if (basicType === type) {\n for (i = 1; i < argsLen; i++) {\n if (typeof args[i] !== type) {\n throw new Error('Bad type')\n }\n }\n\n return\n }\n }\n\n throw new Error('Bad type parameter')\n }\n\n // Not basic type. we need to use instanceof operator\n for (i = 1; i < argsLen; i++) {\n if (!(args[i] instanceof type)) {\n throw new Error('Bad type')\n }\n }\n }\n\n const _hasValue = function (array, value) {\n let i\n _verifyType(Array, array)\n\n for (i = 0; i < array.length; i++) {\n if (array[i] === value) {\n return true\n }\n }\n\n return false\n }\n\n const _areTypeOf = function (type) {\n const args = arguments\n const argsLen = arguments.length\n const basicTypes = ['number', 'boolean', 'string', 'function', 'object', 'undefined']\n let basicType\n let i\n let j\n const typeOfType = typeof type\n\n if (typeOfType !== 'string' && typeOfType !== 'function') {\n throw new Error('Bad type parameter')\n }\n\n if (argsLen < 2) {\n throw new Error('Too few arguments')\n }\n\n if (typeOfType === 'string') {\n type = _trim(type)\n\n if (type === '') {\n return false\n }\n\n for (j = 0; j < basicTypes.length; j++) {\n basicType = basicTypes[j]\n\n if (basicType === type) {\n for (i = 1; i < argsLen; i++) {\n if (typeof args[i] !== type) {\n return false\n }\n }\n\n return true\n }\n }\n\n throw new Error('Bad type parameter')\n }\n\n // Not basic type. we need to use instanceof operator\n for (i = 1; i < argsLen; i++) {\n if (!(args[i] instanceof type)) {\n return false\n }\n }\n\n return true\n }\n\n const _getInitializedArray = function (arraySize, initValue) {\n const array = []\n let i\n _verifyType('number', arraySize)\n\n for (i = 0; i < arraySize; i++) {\n array.push(initValue)\n }\n\n return array\n }\n\n const _splitIntoLines = function (text) {\n _verifyType('string', text)\n\n if (text === '') {\n return []\n }\n return text.split('\\n')\n }\n\n const _isEmptyArray = function (obj) {\n return _areTypeOf(Array, obj) && obj.length === 0\n }\n\n /**\n * Finds longest common sequence between two sequences\n * @see {@link https://wordaligned.org/articles/longest-common-subsequence}\n */\n const _findLongestCommonSequence = function (seq1, seq2, seq1IsInLcs, seq2IsInLcs) {\n if (!_areTypeOf(Array, seq1, seq2)) {\n throw new Error('Array parameters are required')\n }\n\n // Deal with edge case\n if (_isEmptyArray(seq1) || _isEmptyArray(seq2)) {\n return []\n }\n\n // Function to calculate lcs lengths\n const lcsLens = function (xs, ys) {\n let i\n let j\n let prev\n const curr = _getInitializedArray(ys.length + 1, 0)\n\n for (i = 0; i < xs.length; i++) {\n prev = curr.slice(0)\n for (j = 0; j < ys.length; j++) {\n if (xs[i] === ys[j]) {\n curr[j + 1] = prev[j] + 1\n } else {\n curr[j + 1] = Math.max(curr[j], prev[j + 1])\n }\n }\n }\n\n return curr\n }\n\n // Function to find lcs and fill in the array to indicate the optimal longest common sequence\n var _findLcs = function (xs, xidx, xIsIn, ys) {\n let i\n let xb\n let xe\n let llB\n let llE\n let pivot\n let max\n let yb\n let ye\n const nx = xs.length\n const ny = ys.length\n\n if (nx === 0) {\n return []\n }\n if (nx === 1) {\n if (_hasValue(ys, xs[0])) {\n xIsIn[xidx] = true\n return [xs[0]]\n }\n return []\n }\n i = Math.floor(nx / 2)\n xb = xs.slice(0, i)\n xe = xs.slice(i)\n llB = lcsLens(xb, ys)\n llE = lcsLens(xe.slice(0)\n .reverse(), ys.slice(0)\n .reverse())\n\n pivot = 0\n max = 0\n for (j = 0; j <= ny; j++) {\n if (llB[j] + llE[ny - j] > max) {\n pivot = j\n max = llB[j] + llE[ny - j]\n }\n }\n yb = ys.slice(0, pivot)\n ye = ys.slice(pivot)\n return _findLcs(xb, xidx, xIsIn, yb).concat(_findLcs(xe, xidx + i, xIsIn, ye))\n }\n\n // Fill in seq1IsInLcs to find the optimal longest common subsequence of first sequence\n _findLcs(seq1, 0, seq1IsInLcs, seq2)\n // Fill in seq2IsInLcs to find the optimal longest common subsequence\n // of second sequence and return the result\n return _findLcs(seq2, 0, seq2IsInLcs, seq1)\n }\n\n // First, check the parameters\n if (_areTypeOf('string', oldData, newData) === false) {\n return false\n }\n\n if (oldData === newData) {\n return ''\n }\n\n if (typeof contextLines !== 'number' ||\n contextLines > MAX_CONTEXT_LINES ||\n contextLines < MIN_CONTEXT_LINES) {\n contextLines = DEFAULT_CONTEXT_LINES\n }\n\n oriLines = _splitIntoLines(oldData)\n newLines = _splitIntoLines(newData)\n const oriLen = oriLines.length\n const newLen = newLines.length\n const oriIsInLcs = _getInitializedArray(oriLen, false)\n const newIsInLcs = _getInitializedArray(newLen, false)\n const lcsLen = _findLongestCommonSequence(oriLines, newLines, oriIsInLcs, newIsInLcs).length\n let unidiff = ''\n\n if (lcsLen === 0) {\n // No common sequence\n unidiff = [\n HEADER_PREFIX,\n ORIGINAL_INDICATOR,\n (oriLen > 0 ? '1' : '0'),\n RANGE_SEPARATOR,\n oriLen,\n ' ',\n NEW_INDICATOR,\n (newLen > 0 ? '1' : '0'),\n RANGE_SEPARATOR,\n newLen,\n HEADER_SUFFIX\n ].join('')\n\n for (i = 0; i < oriLen; i++) {\n unidiff += NEW_LINE + DELETION_INDICATOR + oriLines[i]\n }\n\n for (j = 0; j < newLen; j++) {\n unidiff += NEW_LINE + ADDITION_INDICATOR + newLines[j]\n }\n\n return unidiff\n }\n\n let leadingContext = []\n let trailingContext = []\n let actualLeadingContext = []\n let actualTrailingContext = []\n\n // Regularize leading context by the contextLines parameter\n const regularizeLeadingContext = function (context) {\n if (context.length === 0 || contextLines === 0) {\n return []\n }\n\n const contextStartPos = Math.max(context.length - contextLines, 0)\n\n return context.slice(contextStartPos)\n }\n\n // Regularize trailing context by the contextLines parameter\n const regularizeTrailingContext = function (context) {\n if (context.length === 0 || contextLines === 0) {\n return []\n }\n\n return context.slice(0, Math.min(contextLines, context.length))\n }\n\n // Skip common lines in the beginning\n while (i < oriLen && oriIsInLcs[i] === true && newIsInLcs[i] === true) {\n leadingContext.push(oriLines[i])\n i++\n }\n\n j = i\n // The index in the longest common sequence\n k = i\n oriHunkStart = i\n newHunkStart = j\n oriHunkEnd = i\n newHunkEnd = j\n\n while (i < oriLen || j < newLen) {\n while (i < oriLen && oriIsInLcs[i] === false) {\n i++\n }\n oriHunkEnd = i\n\n while (j < newLen && newIsInLcs[j] === false) {\n j++\n }\n newHunkEnd = j\n\n // Find the trailing context\n trailingContext = []\n while (i < oriLen && oriIsInLcs[i] === true && j < newLen && newIsInLcs[j] === true) {\n trailingContext.push(oriLines[i])\n k++\n i++\n j++\n }\n\n if (k >= lcsLen || // No more in longest common lines\n trailingContext.length >= 2 * contextLines) {\n // Context break found\n if (trailingContext.length < 2 * contextLines) {\n // It must be last block of common lines but not a context break\n trailingContext = []\n\n // Force break out\n i = oriLen\n j = newLen\n\n // Update hunk ends to force output to the end\n oriHunkEnd = oriLen\n newHunkEnd = newLen\n }\n\n // Output the diff hunk\n\n // Trim the leading and trailing context block\n actualLeadingContext = regularizeLeadingContext(leadingContext)\n actualTrailingContext = regularizeTrailingContext(trailingContext)\n\n oriHunkStart -= actualLeadingContext.length\n newHunkStart -= actualLeadingContext.length\n oriHunkEnd += actualTrailingContext.length\n newHunkEnd += actualTrailingContext.length\n\n oriHunkLineNo = oriHunkStart + 1\n newHunkLineNo = newHunkStart + 1\n oriHunkSize = oriHunkEnd - oriHunkStart\n newHunkSize = newHunkEnd - newHunkStart\n\n // Build header\n unidiff += [\n HEADER_PREFIX,\n ORIGINAL_INDICATOR,\n oriHunkLineNo,\n RANGE_SEPARATOR,\n oriHunkSize,\n ' ',\n NEW_INDICATOR,\n newHunkLineNo,\n RANGE_SEPARATOR,\n newHunkSize,\n HEADER_SUFFIX,\n NEW_LINE\n ].join('')\n\n // Build the diff hunk content\n while (oriHunkStart < oriHunkEnd || newHunkStart < newHunkEnd) {\n if (oriHunkStart < oriHunkEnd &&\n oriIsInLcs[oriHunkStart] === true &&\n newIsInLcs[newHunkStart] === true) {\n // The context line\n unidiff += CONTEXT_INDICATOR + oriLines[oriHunkStart] + NEW_LINE\n oriHunkStart++\n newHunkStart++\n } else if (oriHunkStart < oriHunkEnd && oriIsInLcs[oriHunkStart] === false) {\n // The deletion line\n unidiff += DELETION_INDICATOR + oriLines[oriHunkStart] + NEW_LINE\n oriHunkStart++\n } else if (newHunkStart < newHunkEnd && newIsInLcs[newHunkStart] === false) {\n // The additional line\n unidiff += ADDITION_INDICATOR + newLines[newHunkStart] + NEW_LINE\n newHunkStart++\n }\n }\n\n // Update hunk position and leading context\n oriHunkStart = i\n newHunkStart = j\n leadingContext = trailingContext\n }\n }\n\n // Trim the trailing new line if it exists\n if (unidiff.length > 0 && unidiff.charAt(unidiff.length) === NEW_LINE) {\n unidiff = unidiff.slice(0, -1)\n }\n\n return unidiff\n}\n"]}
|
|
@@ -33,8 +33,8 @@ module.exports = function xdiff_string_patch(originalStr, patch, flags, errorObj
|
|
|
33
33
|
var str = String(string);
|
|
34
34
|
var output = [];
|
|
35
35
|
var lastLastIndex = 0;
|
|
36
|
-
var match;
|
|
37
|
-
var lastLength;
|
|
36
|
+
var match = void 0;
|
|
37
|
+
var lastLength = void 0;
|
|
38
38
|
var limit = Infinity;
|
|
39
39
|
var x = sep._xregexp;
|
|
40
40
|
// This is required if not `s.global`, and it avoids needing to set `s.lastIndex` to zero
|
|
@@ -96,13 +96,12 @@ module.exports = function xdiff_string_patch(originalStr, patch, flags, errorObj
|
|
|
96
96
|
var optTemp = 0; // Both string & integer (constant) input is allowed
|
|
97
97
|
var OPTS = {
|
|
98
98
|
// Unsure of actual PHP values, so better to rely on string
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
};
|
|
99
|
+
XDIFF_PATCH_NORMAL: 1,
|
|
100
|
+
XDIFF_PATCH_REVERSE: 2,
|
|
101
|
+
XDIFF_PATCH_IGNORESPACE: 4
|
|
103
102
|
|
|
104
|
-
|
|
105
|
-
if (typeof originalStr !== 'string' || !patch) {
|
|
103
|
+
// Input defaulting & sanitation
|
|
104
|
+
};if (typeof originalStr !== 'string' || !patch) {
|
|
106
105
|
return false;
|
|
107
106
|
}
|
|
108
107
|
if (!flags) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/php/xdiff/xdiff_string_patch.js"],"names":["module","exports","xdiff_string_patch","originalStr","patch","flags","errorObj","_getNativeFlags","regex","global","ignoreCase","multiline","extended","sticky","join","_cbSplit","string","sep","RegExp","String","prototype","split","apply","arguments","str","output","lastLastIndex","match","lastLength","limit","Infinity","x","_xregexp","s","source","captureNames","slice","exec","lastIndex","push","index","length","Array","test","i","ll","ranges","lastLinePos","firstChar","rangeExp","lineBreaks","lines","replace","origLines","newStrArr","linePos","errors","optTemp","OPTS","concat","XDIFF_PATCH_NORMAL","charAt","Error","XDIFF_PATCH_REVERSE","value"],"mappings":"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","file":"xdiff_string_patch.js","sourcesContent":["module.exports = function xdiff_string_patch (originalStr, patch, flags, errorObj) { // eslint-disable-line camelcase\n // discuss at: https://locutus.io/php/xdiff_string_patch/\n // original by: Brett Zamir (https://brett-zamir.me)\n // improved by: Steven Levithan (stevenlevithan.com)\n // note 1: The XDIFF_PATCH_IGNORESPACE flag and the error argument are not\n // note 1: currently supported.\n // note 2: This has not been tested exhaustively yet.\n // note 3: The errorObj parameter (optional) if used must be passed in as a\n // note 3: object. The errors will then be written by reference into it's `value` property\n // example 1: xdiff_string_patch('', '@@ -0,0 +1,1 @@\\n+Hello world!')\n // returns 1: 'Hello world!'\n\n // First two functions were adapted from Steven Levithan, also under an MIT license\n // Adapted from XRegExp 1.5.0\n // (c) 2007-2010 Steven Levithan\n // MIT License\n // <https://xregexp.com>\n\n var _getNativeFlags = function (regex) {\n // Proposed for ES4; included in AS3\n return [\n (regex.global ? 'g' : ''),\n (regex.ignoreCase ? 'i' : ''),\n (regex.multiline ? 'm' : ''),\n (regex.extended ? 'x' : ''),\n (regex.sticky ? 'y' : '')\n ].join('')\n }\n\n var _cbSplit = function (string, sep) {\n // If separator `s` is not a regex, use the native `split`\n if (!(sep instanceof RegExp)) {\n // Had problems to get it to work here using prototype test\n return String.prototype.split.apply(string, arguments)\n }\n var str = String(string)\n var output = []\n var lastLastIndex = 0\n var match\n var lastLength\n var limit = Infinity\n var x = sep._xregexp\n // This is required if not `s.global`, and it avoids needing to set `s.lastIndex` to zero\n // and restore it to its original value when we're done using the regex\n // Brett paring down\n var s = new RegExp(sep.source, _getNativeFlags(sep) + 'g')\n if (x) {\n s._xregexp = {\n source: x.source,\n captureNames: x.captureNames ? x.captureNames.slice(0) : null\n }\n }\n\n while ((match = s.exec(str))) {\n // Run the altered `exec` (required for `lastIndex` fix, etc.)\n if (s.lastIndex > lastLastIndex) {\n output.push(str.slice(lastLastIndex, match.index))\n\n if (match.length > 1 && match.index < str.length) {\n Array.prototype.push.apply(output, match.slice(1))\n }\n\n lastLength = match[0].length\n lastLastIndex = s.lastIndex\n\n if (output.length >= limit) {\n break\n }\n }\n\n if (s.lastIndex === match.index) {\n s.lastIndex++\n }\n }\n\n if (lastLastIndex === str.length) {\n if (!s.test('') || lastLength) {\n output.push('')\n }\n } else {\n output.push(str.slice(lastLastIndex))\n }\n\n return output.length > limit ? output.slice(0, limit) : output\n }\n\n var i = 0\n var ll = 0\n var ranges = []\n var lastLinePos = 0\n var firstChar = ''\n var rangeExp = /^@@\\s+-(\\d+),(\\d+)\\s+\\+(\\d+),(\\d+)\\s+@@$/\n var lineBreaks = /\\r?\\n/\n var lines = _cbSplit(patch.replace(/(\\r?\\n)+$/, ''), lineBreaks)\n var origLines = _cbSplit(originalStr, lineBreaks)\n var newStrArr = []\n var linePos = 0\n var errors = ''\n var optTemp = 0 // Both string & integer (constant) input is allowed\n var OPTS = {\n // Unsure of actual PHP values, so better to rely on string\n 'XDIFF_PATCH_NORMAL': 1,\n 'XDIFF_PATCH_REVERSE': 2,\n 'XDIFF_PATCH_IGNORESPACE': 4\n }\n\n // Input defaulting & sanitation\n if (typeof originalStr !== 'string' || !patch) {\n return false\n }\n if (!flags) {\n flags = 'XDIFF_PATCH_NORMAL'\n }\n\n if (typeof flags !== 'number') {\n // Allow for a single string or an array of string flags\n flags = [].concat(flags)\n for (i = 0; i < flags.length; i++) {\n // Resolve string input to bitwise e.g. 'XDIFF_PATCH_NORMAL' becomes 1\n if (OPTS[flags[i]]) {\n optTemp = optTemp | OPTS[flags[i]]\n }\n }\n flags = optTemp\n }\n\n if (flags & OPTS.XDIFF_PATCH_NORMAL) {\n for (i = 0, ll = lines.length; i < ll; i++) {\n ranges = lines[i].match(rangeExp)\n if (ranges) {\n lastLinePos = linePos\n linePos = ranges[1] - 1\n while (lastLinePos < linePos) {\n newStrArr[newStrArr.length] = origLines[lastLinePos++]\n }\n while (lines[++i] && (rangeExp.exec(lines[i])) === null) {\n firstChar = lines[i].charAt(0)\n switch (firstChar) {\n case '-':\n // Skip including that line\n ++linePos\n break\n case '+':\n newStrArr[newStrArr.length] = lines[i].slice(1)\n break\n case ' ':\n newStrArr[newStrArr.length] = origLines[linePos++]\n break\n default:\n // Reconcile with returning errrors arg?\n throw new Error('Unrecognized initial character in unidiff line')\n }\n }\n if (lines[i]) {\n i--\n }\n }\n }\n while (linePos > 0 && linePos < origLines.length) {\n newStrArr[newStrArr.length] = origLines[linePos++]\n }\n } else if (flags & OPTS.XDIFF_PATCH_REVERSE) {\n // Only differs from above by a few lines\n for (i = 0, ll = lines.length; i < ll; i++) {\n ranges = lines[i].match(rangeExp)\n if (ranges) {\n lastLinePos = linePos\n linePos = ranges[3] - 1\n while (lastLinePos < linePos) {\n newStrArr[newStrArr.length] = origLines[lastLinePos++]\n }\n while (lines[++i] && (rangeExp.exec(lines[i])) === null) {\n firstChar = lines[i].charAt(0)\n switch (firstChar) {\n case '-':\n newStrArr[newStrArr.length] = lines[i].slice(1)\n break\n case '+':\n // Skip including that line\n ++linePos\n break\n case ' ':\n newStrArr[newStrArr.length] = origLines[linePos++]\n break\n default:\n // Reconcile with returning errrors arg?\n throw new Error('Unrecognized initial character in unidiff line')\n }\n }\n if (lines[i]) {\n i--\n }\n }\n }\n while (linePos > 0 && linePos < origLines.length) {\n newStrArr[newStrArr.length] = origLines[linePos++]\n }\n }\n\n if (errorObj) {\n errorObj.value = errors\n }\n\n return newStrArr.join('\\n')\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/php/xdiff/xdiff_string_patch.js"],"names":["module","exports","xdiff_string_patch","originalStr","patch","flags","errorObj","_getNativeFlags","regex","global","ignoreCase","multiline","extended","sticky","join","_cbSplit","string","sep","RegExp","String","prototype","split","apply","arguments","str","output","lastLastIndex","match","lastLength","limit","Infinity","x","_xregexp","s","source","captureNames","slice","exec","lastIndex","push","index","length","Array","test","i","ll","ranges","lastLinePos","firstChar","rangeExp","lineBreaks","lines","replace","origLines","newStrArr","linePos","errors","optTemp","OPTS","XDIFF_PATCH_NORMAL","XDIFF_PATCH_REVERSE","XDIFF_PATCH_IGNORESPACE","concat","charAt","Error","value"],"mappings":";;AAAAA,OAAOC,OAAP,GAAiB,SAASC,kBAAT,CAA6BC,WAA7B,EAA0CC,KAA1C,EAAiDC,KAAjD,EAAwDC,QAAxD,EAAkE;AAAE;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,MAAMC,kBAAkB,SAAlBA,eAAkB,CAAUC,KAAV,EAAiB;AACvC;AACA,WAAO,CACJA,MAAMC,MAAN,GAAe,GAAf,GAAqB,EADjB,EAEJD,MAAME,UAAN,GAAmB,GAAnB,GAAyB,EAFrB,EAGJF,MAAMG,SAAN,GAAkB,GAAlB,GAAwB,EAHpB,EAIJH,MAAMI,QAAN,GAAiB,GAAjB,GAAuB,EAJnB,EAKJJ,MAAMK,MAAN,GAAe,GAAf,GAAqB,EALjB,EAMLC,IANK,CAMA,EANA,CAAP;AAOD,GATD;;AAWA,MAAMC,WAAW,SAAXA,QAAW,CAAUC,MAAV,EAAkBC,GAAlB,EAAuB;AACtC;AACA,QAAI,EAAEA,eAAeC,MAAjB,CAAJ,EAA8B;AAC5B;AACA,aAAOC,OAAOC,SAAP,CAAiBC,KAAjB,CAAuBC,KAAvB,CAA6BN,MAA7B,EAAqCO,SAArC,CAAP;AACD;AACD,QAAMC,MAAML,OAAOH,MAAP,CAAZ;AACA,QAAMS,SAAS,EAAf;AACA,QAAIC,gBAAgB,CAApB;AACA,QAAIC,cAAJ;AACA,QAAIC,mBAAJ;AACA,QAAMC,QAAQC,QAAd;AACA,QAAMC,IAAId,IAAIe,QAAd;AACA;AACA;AACA;AACA,QAAMC,IAAI,IAAIf,MAAJ,CAAWD,IAAIiB,MAAf,EAAuB3B,gBAAgBU,GAAhB,IAAuB,GAA9C,CAAV;AACA,QAAIc,CAAJ,EAAO;AACLE,QAAED,QAAF,GAAa;AACXE,gBAAQH,EAAEG,MADC;AAEXC,sBAAcJ,EAAEI,YAAF,GAAiBJ,EAAEI,YAAF,CAAeC,KAAf,CAAqB,CAArB,CAAjB,GAA2C;AAF9C,OAAb;AAID;;AAED,WAAQT,QAAQM,EAAEI,IAAF,CAAOb,GAAP,CAAhB,EAA8B;AAC5B;AACA,UAAIS,EAAEK,SAAF,GAAcZ,aAAlB,EAAiC;AAC/BD,eAAOc,IAAP,CAAYf,IAAIY,KAAJ,CAAUV,aAAV,EAAyBC,MAAMa,KAA/B,CAAZ;;AAEA,YAAIb,MAAMc,MAAN,GAAe,CAAf,IAAoBd,MAAMa,KAAN,GAAchB,IAAIiB,MAA1C,EAAkD;AAChDC,gBAAMtB,SAAN,CAAgBmB,IAAhB,CAAqBjB,KAArB,CAA2BG,MAA3B,EAAmCE,MAAMS,KAAN,CAAY,CAAZ,CAAnC;AACD;;AAEDR,qBAAaD,MAAM,CAAN,EAASc,MAAtB;AACAf,wBAAgBO,EAAEK,SAAlB;;AAEA,YAAIb,OAAOgB,MAAP,IAAiBZ,KAArB,EAA4B;AAC1B;AACD;AACF;;AAED,UAAII,EAAEK,SAAF,KAAgBX,MAAMa,KAA1B,EAAiC;AAC/BP,UAAEK,SAAF;AACD;AACF;;AAED,QAAIZ,kBAAkBF,IAAIiB,MAA1B,EAAkC;AAChC,UAAI,CAACR,EAAEU,IAAF,CAAO,EAAP,CAAD,IAAef,UAAnB,EAA+B;AAC7BH,eAAOc,IAAP,CAAY,EAAZ;AACD;AACF,KAJD,MAIO;AACLd,aAAOc,IAAP,CAAYf,IAAIY,KAAJ,CAAUV,aAAV,CAAZ;AACD;;AAED,WAAOD,OAAOgB,MAAP,GAAgBZ,KAAhB,GAAwBJ,OAAOW,KAAP,CAAa,CAAb,EAAgBP,KAAhB,CAAxB,GAAiDJ,MAAxD;AACD,GAvDD;;AAyDA,MAAImB,IAAI,CAAR;AACA,MAAIC,KAAK,CAAT;AACA,MAAIC,SAAS,EAAb;AACA,MAAIC,cAAc,CAAlB;AACA,MAAIC,YAAY,EAAhB;AACA,MAAMC,WAAW,0CAAjB;AACA,MAAMC,aAAa,OAAnB;AACA,MAAMC,QAAQpC,SAASX,MAAMgD,OAAN,CAAc,WAAd,EAA2B,EAA3B,CAAT,EAAyCF,UAAzC,CAAd;AACA,MAAMG,YAAYtC,SAASZ,WAAT,EAAsB+C,UAAtB,CAAlB;AACA,MAAMI,YAAY,EAAlB;AACA,MAAIC,UAAU,CAAd;AACA,MAAMC,SAAS,EAAf;AACA,MAAIC,UAAU,CAAd,CAlGiF,CAkGjE;AAChB,MAAMC,OAAO;AACX;AACAC,wBAAoB,CAFT;AAGXC,yBAAqB,CAHV;AAIXC,6BAAyB;;AAG3B;AAPa,GAAb,CAQA,IAAI,OAAO1D,WAAP,KAAuB,QAAvB,IAAmC,CAACC,KAAxC,EAA+C;AAC7C,WAAO,KAAP;AACD;AACD,MAAI,CAACC,KAAL,EAAY;AACVA,YAAQ,oBAAR;AACD;;AAED,MAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;AAC7B;AACAA,YAAQ,GAAGyD,MAAH,CAAUzD,KAAV,CAAR;AACA,SAAKuC,IAAI,CAAT,EAAYA,IAAIvC,MAAMoC,MAAtB,EAA8BG,GAA9B,EAAmC;AACjC;AACA,UAAIc,KAAKrD,MAAMuC,CAAN,CAAL,CAAJ,EAAoB;AAClBa,kBAAUA,UAAUC,KAAKrD,MAAMuC,CAAN,CAAL,CAApB;AACD;AACF;AACDvC,YAAQoD,OAAR;AACD;;AAED,MAAIpD,QAAQqD,KAAKC,kBAAjB,EAAqC;AACnC,SAAKf,IAAI,CAAJ,EAAOC,KAAKM,MAAMV,MAAvB,EAA+BG,IAAIC,EAAnC,EAAuCD,GAAvC,EAA4C;AAC1CE,eAASK,MAAMP,CAAN,EAASjB,KAAT,CAAesB,QAAf,CAAT;AACA,UAAIH,MAAJ,EAAY;AACVC,sBAAcQ,OAAd;AACAA,kBAAUT,OAAO,CAAP,IAAY,CAAtB;AACA,eAAOC,cAAcQ,OAArB,EAA8B;AAC5BD,oBAAUA,UAAUb,MAApB,IAA8BY,UAAUN,aAAV,CAA9B;AACD;AACD,eAAOI,MAAM,EAAEP,CAAR,KAAeK,SAASZ,IAAT,CAAcc,MAAMP,CAAN,CAAd,CAAD,KAA8B,IAAnD,EAAyD;AACvDI,sBAAYG,MAAMP,CAAN,EAASmB,MAAT,CAAgB,CAAhB,CAAZ;AACA,kBAAQf,SAAR;AACE,iBAAK,GAAL;AACA;AACE,gBAAEO,OAAF;AACA;AACF,iBAAK,GAAL;AACED,wBAAUA,UAAUb,MAApB,IAA8BU,MAAMP,CAAN,EAASR,KAAT,CAAe,CAAf,CAA9B;AACA;AACF,iBAAK,GAAL;AACEkB,wBAAUA,UAAUb,MAApB,IAA8BY,UAAUE,SAAV,CAA9B;AACA;AACF;AACA;AACE,oBAAM,IAAIS,KAAJ,CAAU,gDAAV,CAAN;AAbJ;AAeD;AACD,YAAIb,MAAMP,CAAN,CAAJ,EAAc;AACZA;AACD;AACF;AACF;AACD,WAAOW,UAAU,CAAV,IAAeA,UAAUF,UAAUZ,MAA1C,EAAkD;AAChDa,gBAAUA,UAAUb,MAApB,IAA8BY,UAAUE,SAAV,CAA9B;AACD;AACF,GAnCD,MAmCO,IAAIlD,QAAQqD,KAAKE,mBAAjB,EAAsC;AAC3C;AACA,SAAKhB,IAAI,CAAJ,EAAOC,KAAKM,MAAMV,MAAvB,EAA+BG,IAAIC,EAAnC,EAAuCD,GAAvC,EAA4C;AAC1CE,eAASK,MAAMP,CAAN,EAASjB,KAAT,CAAesB,QAAf,CAAT;AACA,UAAIH,MAAJ,EAAY;AACVC,sBAAcQ,OAAd;AACAA,kBAAUT,OAAO,CAAP,IAAY,CAAtB;AACA,eAAOC,cAAcQ,OAArB,EAA8B;AAC5BD,oBAAUA,UAAUb,MAApB,IAA8BY,UAAUN,aAAV,CAA9B;AACD;AACD,eAAOI,MAAM,EAAEP,CAAR,KAAeK,SAASZ,IAAT,CAAcc,MAAMP,CAAN,CAAd,CAAD,KAA8B,IAAnD,EAAyD;AACvDI,sBAAYG,MAAMP,CAAN,EAASmB,MAAT,CAAgB,CAAhB,CAAZ;AACA,kBAAQf,SAAR;AACE,iBAAK,GAAL;AACEM,wBAAUA,UAAUb,MAApB,IAA8BU,MAAMP,CAAN,EAASR,KAAT,CAAe,CAAf,CAA9B;AACA;AACF,iBAAK,GAAL;AACA;AACE,gBAAEmB,OAAF;AACA;AACF,iBAAK,GAAL;AACED,wBAAUA,UAAUb,MAApB,IAA8BY,UAAUE,SAAV,CAA9B;AACA;AACF;AACA;AACE,oBAAM,IAAIS,KAAJ,CAAU,gDAAV,CAAN;AAbJ;AAeD;AACD,YAAIb,MAAMP,CAAN,CAAJ,EAAc;AACZA;AACD;AACF;AACF;AACD,WAAOW,UAAU,CAAV,IAAeA,UAAUF,UAAUZ,MAA1C,EAAkD;AAChDa,gBAAUA,UAAUb,MAApB,IAA8BY,UAAUE,SAAV,CAA9B;AACD;AACF;;AAED,MAAIjD,QAAJ,EAAc;AACZA,aAAS2D,KAAT,GAAiBT,MAAjB;AACD;;AAED,SAAOF,UAAUxC,IAAV,CAAe,IAAf,CAAP;AACD,CA5MD","file":"xdiff_string_patch.js","sourcesContent":["module.exports = function xdiff_string_patch (originalStr, patch, flags, errorObj) { // eslint-disable-line camelcase\n // discuss at: https://locutus.io/php/xdiff_string_patch/\n // original by: Brett Zamir (https://brett-zamir.me)\n // improved by: Steven Levithan (stevenlevithan.com)\n // note 1: The XDIFF_PATCH_IGNORESPACE flag and the error argument are not\n // note 1: currently supported.\n // note 2: This has not been tested exhaustively yet.\n // note 3: The errorObj parameter (optional) if used must be passed in as a\n // note 3: object. The errors will then be written by reference into it's `value` property\n // example 1: xdiff_string_patch('', '@@ -0,0 +1,1 @@\\n+Hello world!')\n // returns 1: 'Hello world!'\n\n // First two functions were adapted from Steven Levithan, also under an MIT license\n // Adapted from XRegExp 1.5.0\n // (c) 2007-2010 Steven Levithan\n // MIT License\n // <https://xregexp.com>\n\n const _getNativeFlags = function (regex) {\n // Proposed for ES4; included in AS3\n return [\n (regex.global ? 'g' : ''),\n (regex.ignoreCase ? 'i' : ''),\n (regex.multiline ? 'm' : ''),\n (regex.extended ? 'x' : ''),\n (regex.sticky ? 'y' : '')\n ].join('')\n }\n\n const _cbSplit = function (string, sep) {\n // If separator `s` is not a regex, use the native `split`\n if (!(sep instanceof RegExp)) {\n // Had problems to get it to work here using prototype test\n return String.prototype.split.apply(string, arguments)\n }\n const str = String(string)\n const output = []\n let lastLastIndex = 0\n let match\n let lastLength\n const limit = Infinity\n const x = sep._xregexp\n // This is required if not `s.global`, and it avoids needing to set `s.lastIndex` to zero\n // and restore it to its original value when we're done using the regex\n // Brett paring down\n const s = new RegExp(sep.source, _getNativeFlags(sep) + 'g')\n if (x) {\n s._xregexp = {\n source: x.source,\n captureNames: x.captureNames ? x.captureNames.slice(0) : null\n }\n }\n\n while ((match = s.exec(str))) {\n // Run the altered `exec` (required for `lastIndex` fix, etc.)\n if (s.lastIndex > lastLastIndex) {\n output.push(str.slice(lastLastIndex, match.index))\n\n if (match.length > 1 && match.index < str.length) {\n Array.prototype.push.apply(output, match.slice(1))\n }\n\n lastLength = match[0].length\n lastLastIndex = s.lastIndex\n\n if (output.length >= limit) {\n break\n }\n }\n\n if (s.lastIndex === match.index) {\n s.lastIndex++\n }\n }\n\n if (lastLastIndex === str.length) {\n if (!s.test('') || lastLength) {\n output.push('')\n }\n } else {\n output.push(str.slice(lastLastIndex))\n }\n\n return output.length > limit ? output.slice(0, limit) : output\n }\n\n let i = 0\n let ll = 0\n let ranges = []\n let lastLinePos = 0\n let firstChar = ''\n const rangeExp = /^@@\\s+-(\\d+),(\\d+)\\s+\\+(\\d+),(\\d+)\\s+@@$/\n const lineBreaks = /\\r?\\n/\n const lines = _cbSplit(patch.replace(/(\\r?\\n)+$/, ''), lineBreaks)\n const origLines = _cbSplit(originalStr, lineBreaks)\n const newStrArr = []\n let linePos = 0\n const errors = ''\n let optTemp = 0 // Both string & integer (constant) input is allowed\n const OPTS = {\n // Unsure of actual PHP values, so better to rely on string\n XDIFF_PATCH_NORMAL: 1,\n XDIFF_PATCH_REVERSE: 2,\n XDIFF_PATCH_IGNORESPACE: 4\n }\n\n // Input defaulting & sanitation\n if (typeof originalStr !== 'string' || !patch) {\n return false\n }\n if (!flags) {\n flags = 'XDIFF_PATCH_NORMAL'\n }\n\n if (typeof flags !== 'number') {\n // Allow for a single string or an array of string flags\n flags = [].concat(flags)\n for (i = 0; i < flags.length; i++) {\n // Resolve string input to bitwise e.g. 'XDIFF_PATCH_NORMAL' becomes 1\n if (OPTS[flags[i]]) {\n optTemp = optTemp | OPTS[flags[i]]\n }\n }\n flags = optTemp\n }\n\n if (flags & OPTS.XDIFF_PATCH_NORMAL) {\n for (i = 0, ll = lines.length; i < ll; i++) {\n ranges = lines[i].match(rangeExp)\n if (ranges) {\n lastLinePos = linePos\n linePos = ranges[1] - 1\n while (lastLinePos < linePos) {\n newStrArr[newStrArr.length] = origLines[lastLinePos++]\n }\n while (lines[++i] && (rangeExp.exec(lines[i])) === null) {\n firstChar = lines[i].charAt(0)\n switch (firstChar) {\n case '-':\n // Skip including that line\n ++linePos\n break\n case '+':\n newStrArr[newStrArr.length] = lines[i].slice(1)\n break\n case ' ':\n newStrArr[newStrArr.length] = origLines[linePos++]\n break\n default:\n // Reconcile with returning errrors arg?\n throw new Error('Unrecognized initial character in unidiff line')\n }\n }\n if (lines[i]) {\n i--\n }\n }\n }\n while (linePos > 0 && linePos < origLines.length) {\n newStrArr[newStrArr.length] = origLines[linePos++]\n }\n } else if (flags & OPTS.XDIFF_PATCH_REVERSE) {\n // Only differs from above by a few lines\n for (i = 0, ll = lines.length; i < ll; i++) {\n ranges = lines[i].match(rangeExp)\n if (ranges) {\n lastLinePos = linePos\n linePos = ranges[3] - 1\n while (lastLinePos < linePos) {\n newStrArr[newStrArr.length] = origLines[lastLinePos++]\n }\n while (lines[++i] && (rangeExp.exec(lines[i])) === null) {\n firstChar = lines[i].charAt(0)\n switch (firstChar) {\n case '-':\n newStrArr[newStrArr.length] = lines[i].slice(1)\n break\n case '+':\n // Skip including that line\n ++linePos\n break\n case ' ':\n newStrArr[newStrArr.length] = origLines[linePos++]\n break\n default:\n // Reconcile with returning errrors arg?\n throw new Error('Unrecognized initial character in unidiff line')\n }\n }\n if (lines[i]) {\n i--\n }\n }\n }\n while (linePos > 0 && linePos < origLines.length) {\n newStrArr[newStrArr.length] = origLines[linePos++]\n }\n }\n\n if (errorObj) {\n errorObj.value = errors\n }\n\n return newStrArr.join('\\n')\n}\n"]}
|