@port-labs/jq-node-bindings 0.0.14 → 0.0.15-dev2
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/README.md +6 -1
- package/binding.gyp +42 -20
- package/configure +1 -1
- package/deps/jq/.gitattributes +12 -0
- package/deps/jq/AUTHORS +149 -43
- package/deps/jq/COPYING +75 -1
- package/deps/jq/ChangeLog +2 -2
- package/deps/jq/Makefile.am +106 -65
- package/deps/jq/NEWS.md +391 -0
- package/deps/jq/README.md +54 -52
- package/deps/jq/SECURITY.md +7 -0
- package/deps/jq/compile-ios.sh +106 -102
- package/deps/jq/configure.ac +72 -59
- package/deps/jq/docs/Pipfile +14 -0
- package/deps/jq/docs/Pipfile.lock +415 -0
- package/deps/jq/docs/README.md +15 -14
- package/deps/jq/docs/build_manpage.py +251 -0
- package/deps/jq/docs/build_mantests.py +21 -0
- package/deps/jq/docs/build_website.py +95 -0
- package/deps/jq/docs/content/download/default.yml +249 -0
- package/deps/jq/docs/content/index.yml +83 -0
- package/deps/jq/docs/content/{3.manual/v1.6 → manual/dev}/manual.yml +992 -452
- package/deps/jq/docs/content/{3.manual → manual}/v1.3/manual.yml +105 -116
- package/deps/jq/docs/content/{3.manual → manual}/v1.4/manual.yml +122 -129
- package/deps/jq/docs/content/{3.manual → manual}/v1.5/manual.yml +313 -262
- package/deps/jq/docs/content/{3.manual → manual/v1.6}/manual.yml +407 -332
- package/deps/jq/docs/content/manual/v1.7/manual.yml +3697 -0
- package/deps/jq/docs/content/tutorial/default.yml +337 -0
- package/deps/jq/docs/manual_schema.yml +60 -0
- package/deps/jq/docs/public/css/style.css +99 -0
- package/deps/jq/docs/public/icon.png +0 -0
- package/deps/jq/docs/public/icon.svg +1 -0
- package/deps/jq/docs/public/jq.svg +1 -0
- package/deps/jq/docs/public/js/manual-search.js +31 -49
- package/deps/jq/docs/templates/default.html.j2 +31 -0
- package/deps/jq/docs/templates/index.html.j2 +58 -0
- package/deps/jq/docs/templates/manual.html.j2 +120 -0
- package/deps/jq/docs/templates/shared/_footer.html.j2 +14 -0
- package/deps/jq/docs/templates/shared/_head.html.j2 +23 -0
- package/deps/jq/docs/templates/shared/_navbar.html.j2 +40 -0
- package/deps/jq/docs/validate_manual_schema.py +19 -0
- package/deps/jq/jq.1.prebuilt +1102 -294
- package/deps/jq/jq.spec +2 -3
- package/deps/jq/libjq.pc.in +11 -0
- package/deps/jq/m4/ax_pthread.m4 +522 -0
- package/deps/jq/modules/oniguruma/.travis.yml +17 -0
- package/deps/jq/modules/oniguruma/CMakeLists.txt +206 -41
- package/deps/jq/modules/oniguruma/COPYING +23 -25
- package/deps/jq/modules/oniguruma/HISTORY +368 -23
- package/deps/jq/modules/oniguruma/Makefile.am +61 -7
- package/deps/jq/modules/oniguruma/README +34 -20
- package/deps/jq/modules/oniguruma/README.md +106 -33
- package/deps/jq/modules/oniguruma/README_japanese +183 -0
- package/deps/jq/modules/oniguruma/autogen.sh +9 -0
- package/deps/jq/modules/oniguruma/cmake/Config.cmake.in +4 -0
- package/deps/jq/modules/oniguruma/configure.ac +66 -55
- package/deps/jq/modules/oniguruma/doc/API +485 -42
- package/deps/jq/modules/oniguruma/doc/API.ja +732 -293
- package/deps/jq/modules/oniguruma/doc/CALLOUTS.API +397 -0
- package/deps/jq/modules/oniguruma/doc/CALLOUTS.API.ja +393 -0
- package/deps/jq/modules/oniguruma/doc/CALLOUTS.BUILTIN +95 -0
- package/deps/jq/modules/oniguruma/doc/CALLOUTS.BUILTIN.ja +93 -0
- package/deps/jq/modules/oniguruma/doc/FAQ +3 -3
- package/deps/jq/modules/oniguruma/doc/FAQ.ja +8 -8
- package/deps/jq/modules/oniguruma/doc/RE +223 -63
- package/deps/jq/modules/oniguruma/doc/RE.ja +420 -265
- package/deps/jq/modules/oniguruma/doc/SYNTAX.md +1091 -0
- package/deps/jq/modules/oniguruma/doc/UNICODE_PROPERTIES +840 -697
- package/deps/jq/modules/oniguruma/harnesses/ascii_compatible.dict +113 -0
- package/deps/jq/modules/oniguruma/harnesses/base.c +749 -0
- package/deps/jq/modules/oniguruma/harnesses/deluxe.c +206 -0
- package/deps/jq/modules/oniguruma/harnesses/dict_conv.py +72 -0
- package/deps/jq/modules/oniguruma/harnesses/fuzzer.options +2 -0
- package/deps/jq/modules/oniguruma/harnesses/libfuzzer-onig.cpp +45 -0
- package/deps/jq/modules/oniguruma/harnesses/regset.c +392 -0
- package/deps/jq/modules/oniguruma/index.html +16 -5
- package/deps/jq/modules/oniguruma/index_ja.html +16 -5
- package/deps/jq/modules/oniguruma/make_win.bat +5 -0
- package/deps/jq/modules/oniguruma/make_win32.bat +5 -3
- package/deps/jq/modules/oniguruma/make_win64.bat +5 -3
- package/deps/jq/modules/oniguruma/onig-config.cmake.in +80 -0
- package/deps/jq/modules/oniguruma/onig-config.in +1 -1
- package/deps/jq/modules/oniguruma/oniguruma.pc.cmake.in +1 -1
- package/deps/jq/modules/oniguruma/oniguruma.pc.in +0 -1
- package/deps/jq/modules/oniguruma/sample/CMakeLists.txt +9 -2
- package/deps/jq/modules/oniguruma/sample/Makefile.am +24 -5
- package/deps/jq/modules/oniguruma/sample/bug_fix.c +13 -51
- package/deps/jq/modules/oniguruma/sample/callback_each_match.c +168 -0
- package/deps/jq/modules/oniguruma/sample/callout.c +268 -0
- package/deps/jq/modules/oniguruma/sample/count.c +125 -0
- package/deps/jq/modules/oniguruma/sample/crnl.c +6 -4
- package/deps/jq/modules/oniguruma/sample/echo.c +136 -0
- package/deps/jq/modules/oniguruma/sample/encode.c +53 -146
- package/deps/jq/modules/oniguruma/sample/listcap.c +18 -10
- package/deps/jq/modules/oniguruma/sample/names.c +10 -6
- package/deps/jq/modules/oniguruma/sample/posix.c +13 -2
- package/deps/jq/modules/oniguruma/sample/regset.c +95 -0
- package/deps/jq/modules/oniguruma/sample/scan.c +20 -6
- package/deps/jq/modules/oniguruma/sample/simple.c +8 -4
- package/deps/jq/modules/oniguruma/sample/sql.c +13 -8
- package/deps/jq/modules/oniguruma/sample/syntax.c +11 -10
- package/deps/jq/modules/oniguruma/sample/user_property.c +12 -7
- package/deps/jq/modules/oniguruma/src/Makefile.am +41 -15
- package/deps/jq/modules/oniguruma/src/Makefile.windows +196 -183
- package/deps/jq/modules/oniguruma/src/ascii.c +64 -7
- package/deps/jq/modules/oniguruma/src/big5.c +25 -15
- package/deps/jq/modules/oniguruma/src/config.h.cmake.in +7 -22
- package/deps/jq/modules/oniguruma/src/config.h.win32 +56 -84
- package/deps/jq/modules/oniguruma/src/config.h.win64 +56 -84
- package/deps/jq/modules/oniguruma/src/config.h.windows.in +62 -0
- package/deps/jq/modules/oniguruma/src/cp1251.c +14 -8
- package/deps/jq/modules/oniguruma/src/euc_jp.c +28 -30
- package/deps/jq/modules/oniguruma/src/euc_jp_prop.c +25 -32
- package/deps/jq/modules/oniguruma/src/euc_jp_prop.gperf +1 -2
- package/deps/jq/modules/oniguruma/src/euc_kr.c +27 -15
- package/deps/jq/modules/oniguruma/src/euc_tw.c +40 -17
- package/deps/jq/modules/oniguruma/src/gb18030.c +177 -119
- package/deps/jq/modules/oniguruma/src/gperf_fold_key_conv.py +12 -8
- package/deps/jq/modules/oniguruma/src/gperf_unfold_key_conv.py +8 -6
- package/deps/jq/modules/oniguruma/src/iso8859_1.c +92 -91
- package/deps/jq/modules/oniguruma/src/iso8859_10.c +13 -29
- package/deps/jq/modules/oniguruma/src/iso8859_11.c +4 -2
- package/deps/jq/modules/oniguruma/src/iso8859_13.c +13 -33
- package/deps/jq/modules/oniguruma/src/iso8859_14.c +13 -30
- package/deps/jq/modules/oniguruma/src/iso8859_15.c +13 -34
- package/deps/jq/modules/oniguruma/src/iso8859_16.c +13 -29
- package/deps/jq/modules/oniguruma/src/iso8859_2.c +13 -29
- package/deps/jq/modules/oniguruma/src/iso8859_3.c +13 -33
- package/deps/jq/modules/oniguruma/src/iso8859_4.c +13 -32
- package/deps/jq/modules/oniguruma/src/iso8859_5.c +16 -23
- package/deps/jq/modules/oniguruma/src/iso8859_6.c +4 -2
- package/deps/jq/modules/oniguruma/src/iso8859_7.c +14 -29
- package/deps/jq/modules/oniguruma/src/iso8859_8.c +4 -2
- package/deps/jq/modules/oniguruma/src/iso8859_9.c +13 -33
- package/deps/jq/modules/oniguruma/src/koi8.c +14 -27
- package/deps/jq/modules/oniguruma/src/koi8_r.c +12 -19
- package/deps/jq/modules/oniguruma/src/make_property.sh +21 -0
- package/deps/jq/modules/oniguruma/src/make_unicode_egcb.sh +7 -0
- package/deps/jq/modules/oniguruma/src/make_unicode_egcb_data.py +267 -0
- package/deps/jq/modules/oniguruma/src/make_unicode_fold.sh +25 -11
- package/deps/jq/modules/oniguruma/src/make_unicode_fold_data.py +206 -26
- package/deps/jq/modules/oniguruma/src/make_unicode_property.sh +19 -10
- package/deps/jq/modules/oniguruma/src/make_unicode_property_data.py +474 -375
- package/deps/jq/modules/oniguruma/src/make_unicode_wb.sh +7 -0
- package/deps/jq/modules/oniguruma/src/make_unicode_wb_data.py +267 -0
- package/deps/jq/modules/oniguruma/src/mktable.c +28 -24
- package/deps/jq/modules/oniguruma/src/onig_init.c +2 -2
- package/deps/jq/modules/oniguruma/src/oniggnu.h +7 -5
- package/deps/jq/modules/oniguruma/src/onigposix.h +40 -16
- package/deps/jq/modules/oniguruma/src/oniguruma.h +357 -107
- package/deps/jq/modules/oniguruma/src/regcomp.c +6214 -3933
- package/deps/jq/modules/oniguruma/src/regenc.c +197 -120
- package/deps/jq/modules/oniguruma/src/regenc.h +106 -63
- package/deps/jq/modules/oniguruma/src/regerror.c +112 -91
- package/deps/jq/modules/oniguruma/src/regexec.c +4876 -2010
- package/deps/jq/modules/oniguruma/src/regext.c +8 -8
- package/deps/jq/modules/oniguruma/src/reggnu.c +13 -17
- package/deps/jq/modules/oniguruma/src/regint.h +757 -491
- package/deps/jq/modules/oniguruma/src/regparse.c +7204 -3240
- package/deps/jq/modules/oniguruma/src/regparse.h +361 -218
- package/deps/jq/modules/oniguruma/src/regposerr.c +49 -9
- package/deps/jq/modules/oniguruma/src/regposix.c +106 -24
- package/deps/jq/modules/oniguruma/src/regsyntax.c +66 -13
- package/deps/jq/modules/oniguruma/src/regtrav.c +1 -1
- package/deps/jq/modules/oniguruma/src/regversion.c +6 -4
- package/deps/jq/modules/oniguruma/src/sjis.c +23 -52
- package/deps/jq/modules/oniguruma/src/sjis_prop.c +25 -32
- package/deps/jq/modules/oniguruma/src/sjis_prop.gperf +1 -2
- package/deps/jq/modules/oniguruma/src/st.c +248 -249
- package/deps/jq/modules/oniguruma/src/st.h +4 -5
- package/deps/jq/modules/oniguruma/src/unicode.c +869 -294
- package/deps/jq/modules/oniguruma/src/unicode_egcb_data.c +1419 -0
- package/deps/jq/modules/oniguruma/src/unicode_fold1_key.c +1829 -1300
- package/deps/jq/modules/oniguruma/src/unicode_fold2_key.c +32 -9
- package/deps/jq/modules/oniguruma/src/unicode_fold3_key.c +32 -9
- package/deps/jq/modules/oniguruma/src/unicode_fold_data.c +1210 -984
- package/deps/jq/modules/oniguruma/src/unicode_property_data.c +22480 -15198
- package/deps/jq/modules/oniguruma/src/unicode_property_data_posix.c +1463 -591
- package/deps/jq/modules/oniguruma/src/unicode_unfold_key.c +1958 -1418
- package/deps/jq/modules/oniguruma/src/unicode_wb_data.c +1106 -0
- package/deps/jq/modules/oniguruma/src/utf16_be.c +90 -49
- package/deps/jq/modules/oniguruma/src/utf16_le.c +80 -49
- package/deps/jq/modules/oniguruma/src/utf32_be.c +14 -42
- package/deps/jq/modules/oniguruma/src/utf32_le.c +13 -40
- package/deps/jq/modules/oniguruma/src/utf8.c +33 -78
- package/deps/jq/modules/oniguruma/test/CMakeLists.txt +55 -0
- package/deps/jq/modules/oniguruma/test/Makefile.am +65 -10
- package/deps/jq/modules/oniguruma/test/test.sh +17 -0
- package/deps/jq/modules/oniguruma/test/test_back.c +1450 -0
- package/deps/jq/modules/oniguruma/test/test_options.c +228 -0
- package/deps/jq/modules/oniguruma/test/test_regset.c +466 -0
- package/deps/jq/modules/oniguruma/test/test_syntax.c +365 -0
- package/deps/jq/modules/oniguruma/test/test_utf8.c +1761 -0
- package/deps/jq/modules/oniguruma/test/testc.c +128 -88
- package/deps/jq/modules/oniguruma/test/testp.c +613 -0
- package/deps/jq/modules/oniguruma/test/testu.c +75 -28
- package/deps/jq/modules/oniguruma/tis-ci/stub.c +3 -0
- package/deps/jq/modules/oniguruma/tis-ci/test_back.config +26 -0
- package/deps/jq/modules/oniguruma/tis-ci/test_regset.config +20 -0
- package/deps/jq/modules/oniguruma/tis-ci/test_syntax.config +26 -0
- package/deps/jq/modules/oniguruma/tis-ci/test_utf8.config +25 -0
- package/deps/jq/modules/oniguruma/tis-ci/testc.config +26 -0
- package/deps/jq/modules/oniguruma/tis-ci/testu.config +24 -0
- package/deps/jq/modules/oniguruma/tis.config +1336 -0
- package/deps/jq/modules/oniguruma/windows/CMakeLists.txt +8 -0
- package/deps/jq/modules/oniguruma/windows/testc.c +865 -869
- package/deps/jq/scripts/update-website +6 -5
- package/deps/jq/scripts/version +10 -7
- package/deps/jq/sig/jq-release-new.key +29 -0
- package/deps/jq/sig/v1.4/sha256sum.txt +1 -0
- package/deps/jq/sig/v1.5/sha256sum.txt +2 -0
- package/deps/jq/sig/v1.5rc1/sha256sum.txt +1 -0
- package/deps/jq/sig/v1.5rc2/sha256sum.txt +2 -0
- package/deps/jq/sig/v1.6/sha256sum.txt +2 -0
- package/deps/jq/sig/v1.7/jq-1.7.tar.gz.asc +16 -0
- package/deps/jq/sig/v1.7/jq-1.7.zip.asc +16 -0
- package/deps/jq/sig/v1.7/jq-linux-amd64.asc +16 -0
- package/deps/jq/sig/v1.7/jq-linux-arm64.asc +16 -0
- package/deps/jq/sig/v1.7/jq-linux-armel.asc +16 -0
- package/deps/jq/sig/v1.7/jq-linux-armhf.asc +16 -0
- package/deps/jq/sig/v1.7/jq-linux-i386.asc +16 -0
- package/deps/jq/sig/v1.7/jq-linux-mips.asc +16 -0
- package/deps/jq/sig/v1.7/jq-linux-mips64.asc +16 -0
- package/deps/jq/sig/v1.7/jq-linux-mips64el.asc +16 -0
- package/deps/jq/sig/v1.7/jq-linux-mips64r6.asc +16 -0
- package/deps/jq/sig/v1.7/jq-linux-mips64r6el.asc +16 -0
- package/deps/jq/sig/v1.7/jq-linux-mipsel.asc +16 -0
- package/deps/jq/sig/v1.7/jq-linux-mipsr6.asc +16 -0
- package/deps/jq/sig/v1.7/jq-linux-mipsr6el.asc +16 -0
- package/deps/jq/sig/v1.7/jq-linux-powerpc.asc +16 -0
- package/deps/jq/sig/v1.7/jq-linux-ppc64el.asc +16 -0
- package/deps/jq/sig/v1.7/jq-linux-riscv64.asc +16 -0
- package/deps/jq/sig/v1.7/jq-linux-s390x.asc +16 -0
- package/deps/jq/sig/v1.7/jq-macos-amd64.asc +16 -0
- package/deps/jq/sig/v1.7/jq-macos-arm64.asc +16 -0
- package/deps/jq/sig/v1.7/jq-windows-amd64.exe.asc +16 -0
- package/deps/jq/sig/v1.7/jq-windows-i386.exe.asc +16 -0
- package/deps/jq/sig/v1.7/sha256sum.txt +23 -0
- package/deps/jq/sig/v1.7.1/jq-1.7.1.tar.gz.asc +16 -0
- package/deps/jq/sig/v1.7.1/jq-1.7.1.zip.asc +16 -0
- package/deps/jq/sig/v1.7.1/jq-linux-amd64.asc +16 -0
- package/deps/jq/sig/v1.7.1/jq-linux-arm64.asc +16 -0
- package/deps/jq/sig/v1.7.1/jq-linux-armel.asc +16 -0
- package/deps/jq/sig/v1.7.1/jq-linux-armhf.asc +16 -0
- package/deps/jq/sig/v1.7.1/jq-linux-i386.asc +16 -0
- package/deps/jq/sig/v1.7.1/jq-linux-mips.asc +16 -0
- package/deps/jq/sig/v1.7.1/jq-linux-mips64.asc +16 -0
- package/deps/jq/sig/v1.7.1/jq-linux-mips64el.asc +16 -0
- package/deps/jq/sig/v1.7.1/jq-linux-mips64r6.asc +16 -0
- package/deps/jq/sig/v1.7.1/jq-linux-mips64r6el.asc +16 -0
- package/deps/jq/sig/v1.7.1/jq-linux-mipsel.asc +16 -0
- package/deps/jq/sig/v1.7.1/jq-linux-mipsr6.asc +16 -0
- package/deps/jq/sig/v1.7.1/jq-linux-mipsr6el.asc +16 -0
- package/deps/jq/sig/v1.7.1/jq-linux-powerpc.asc +16 -0
- package/deps/jq/sig/v1.7.1/jq-linux-ppc64el.asc +16 -0
- package/deps/jq/sig/v1.7.1/jq-linux-riscv64.asc +16 -0
- package/deps/jq/sig/v1.7.1/jq-linux-s390x.asc +16 -0
- package/deps/jq/sig/v1.7.1/jq-linux64.asc +16 -0
- package/deps/jq/sig/v1.7.1/jq-macos-amd64.asc +16 -0
- package/deps/jq/sig/v1.7.1/jq-macos-arm64.asc +16 -0
- package/deps/jq/sig/v1.7.1/jq-osx-amd64.asc +16 -0
- package/deps/jq/sig/v1.7.1/jq-win64.exe.asc +16 -0
- package/deps/jq/sig/v1.7.1/jq-windows-amd64.exe.asc +16 -0
- package/deps/jq/sig/v1.7.1/jq-windows-i386.exe.asc +16 -0
- package/deps/jq/sig/v1.7.1/sha256sum.txt +26 -0
- package/deps/jq/sig/v1.7rc1/jq-1.7rc1.tar.gz.asc +16 -0
- package/deps/jq/sig/v1.7rc1/jq-1.7rc1.zip.asc +16 -0
- package/deps/jq/sig/v1.7rc1/jq-linux-amd64.asc +16 -0
- package/deps/jq/sig/v1.7rc1/jq-linux-arm64.asc +16 -0
- package/deps/jq/sig/v1.7rc1/jq-linux-armel.asc +16 -0
- package/deps/jq/sig/v1.7rc1/jq-linux-armhf.asc +16 -0
- package/deps/jq/sig/v1.7rc1/jq-linux-i386.asc +16 -0
- package/deps/jq/sig/v1.7rc1/jq-linux-mips.asc +16 -0
- package/deps/jq/sig/v1.7rc1/jq-linux-mips64.asc +16 -0
- package/deps/jq/sig/v1.7rc1/jq-linux-mips64el.asc +16 -0
- package/deps/jq/sig/v1.7rc1/jq-linux-mips64r6.asc +16 -0
- package/deps/jq/sig/v1.7rc1/jq-linux-mips64r6el.asc +16 -0
- package/deps/jq/sig/v1.7rc1/jq-linux-mipsel.asc +16 -0
- package/deps/jq/sig/v1.7rc1/jq-linux-mipsr6.asc +16 -0
- package/deps/jq/sig/v1.7rc1/jq-linux-mipsr6el.asc +16 -0
- package/deps/jq/sig/v1.7rc1/jq-linux-powerpc.asc +16 -0
- package/deps/jq/sig/v1.7rc1/jq-linux-ppc64el.asc +16 -0
- package/deps/jq/sig/v1.7rc1/jq-linux-riscv64.asc +16 -0
- package/deps/jq/sig/v1.7rc1/jq-linux-s390x.asc +16 -0
- package/deps/jq/sig/v1.7rc1/jq-macos-amd64.asc +16 -0
- package/deps/jq/sig/v1.7rc1/jq-macos-arm64.asc +16 -0
- package/deps/jq/sig/v1.7rc1/jq-windows-amd64.exe.asc +16 -0
- package/deps/jq/sig/v1.7rc1/jq-windows-i386.exe.asc +16 -0
- package/deps/jq/sig/v1.7rc1/sha256sum.txt +23 -0
- package/deps/jq/sig/v1.7rc2/jq-1.7rc2.tar.gz.asc +16 -0
- package/deps/jq/sig/v1.7rc2/jq-1.7rc2.zip.asc +16 -0
- package/deps/jq/sig/v1.7rc2/jq-linux-amd64.asc +16 -0
- package/deps/jq/sig/v1.7rc2/jq-linux-arm64.asc +16 -0
- package/deps/jq/sig/v1.7rc2/jq-linux-armel.asc +16 -0
- package/deps/jq/sig/v1.7rc2/jq-linux-armhf.asc +16 -0
- package/deps/jq/sig/v1.7rc2/jq-linux-i386.asc +16 -0
- package/deps/jq/sig/v1.7rc2/jq-linux-mips.asc +16 -0
- package/deps/jq/sig/v1.7rc2/jq-linux-mips64.asc +16 -0
- package/deps/jq/sig/v1.7rc2/jq-linux-mips64el.asc +16 -0
- package/deps/jq/sig/v1.7rc2/jq-linux-mips64r6.asc +16 -0
- package/deps/jq/sig/v1.7rc2/jq-linux-mips64r6el.asc +16 -0
- package/deps/jq/sig/v1.7rc2/jq-linux-mipsel.asc +16 -0
- package/deps/jq/sig/v1.7rc2/jq-linux-mipsr6.asc +16 -0
- package/deps/jq/sig/v1.7rc2/jq-linux-mipsr6el.asc +16 -0
- package/deps/jq/sig/v1.7rc2/jq-linux-powerpc.asc +16 -0
- package/deps/jq/sig/v1.7rc2/jq-linux-ppc64el.asc +16 -0
- package/deps/jq/sig/v1.7rc2/jq-linux-riscv64.asc +16 -0
- package/deps/jq/sig/v1.7rc2/jq-linux-s390x.asc +16 -0
- package/deps/jq/sig/v1.7rc2/jq-macos-amd64.asc +16 -0
- package/deps/jq/sig/v1.7rc2/jq-macos-arm64.asc +16 -0
- package/deps/jq/sig/v1.7rc2/jq-windows-amd64.exe.asc +16 -0
- package/deps/jq/sig/v1.7rc2/jq-windows-i386.exe.asc +16 -0
- package/deps/jq/sig/v1.7rc2/sha256sum.txt +23 -0
- package/deps/jq/src/builtin.c +537 -343
- package/deps/jq/src/builtin.h +18 -0
- package/deps/jq/src/builtin.jq +116 -143
- package/deps/jq/src/bytecode.h +8 -4
- package/deps/jq/src/compile.c +157 -143
- package/deps/jq/src/compile.h +3 -4
- package/deps/jq/src/decNumber/ICU-license.html +45 -0
- package/deps/jq/src/decNumber/decBasic.c +3908 -0
- package/deps/jq/src/decNumber/decCommon.c +1835 -0
- package/deps/jq/src/decNumber/decContext.c +437 -0
- package/deps/jq/src/decNumber/decContext.h +254 -0
- package/deps/jq/src/decNumber/decDPD.h +1185 -0
- package/deps/jq/src/decNumber/decDouble.c +140 -0
- package/deps/jq/src/decNumber/decDouble.h +155 -0
- package/deps/jq/src/decNumber/decNumber.c +8143 -0
- package/deps/jq/src/decNumber/decNumber.h +182 -0
- package/deps/jq/src/decNumber/decNumberLocal.h +757 -0
- package/deps/jq/src/decNumber/decPacked.c +220 -0
- package/deps/jq/src/decNumber/decPacked.h +52 -0
- package/deps/jq/src/decNumber/decQuad.c +135 -0
- package/deps/jq/src/decNumber/decQuad.h +177 -0
- package/deps/jq/src/decNumber/decSingle.c +71 -0
- package/deps/jq/src/decNumber/decSingle.h +86 -0
- package/deps/jq/src/decNumber/decimal128.c +553 -0
- package/deps/jq/src/decNumber/decimal128.h +81 -0
- package/deps/jq/src/decNumber/decimal32.c +476 -0
- package/deps/jq/src/decNumber/decimal32.h +81 -0
- package/deps/jq/src/decNumber/decimal64.c +839 -0
- package/deps/jq/src/decNumber/decimal64.h +83 -0
- package/deps/jq/src/decNumber/decnumber.pdf +0 -0
- package/deps/jq/src/decNumber/example1.c +38 -0
- package/deps/jq/src/decNumber/example2.c +52 -0
- package/deps/jq/src/decNumber/example3.c +64 -0
- package/deps/jq/src/decNumber/example4.c +61 -0
- package/deps/jq/src/decNumber/example5.c +36 -0
- package/deps/jq/src/decNumber/example6.c +61 -0
- package/deps/jq/src/decNumber/example7.c +35 -0
- package/deps/jq/src/decNumber/example8.c +39 -0
- package/deps/jq/src/decNumber/readme.txt +81 -0
- package/deps/jq/src/exec_stack.h +5 -3
- package/deps/jq/src/execute.c +126 -44
- package/deps/jq/src/inject_errors.c +0 -2
- package/deps/jq/src/jq.h +10 -1
- package/deps/jq/src/jq_test.c +222 -11
- package/deps/jq/src/jv.c +807 -176
- package/deps/jq/src/jv.h +22 -1
- package/deps/jq/src/jv_alloc.c +33 -26
- package/deps/jq/src/jv_alloc.h +0 -11
- package/deps/jq/src/jv_aux.c +153 -67
- package/deps/jq/src/jv_dtoa.c +12 -2
- package/deps/jq/src/jv_dtoa_tsd.c +51 -0
- package/deps/jq/src/jv_dtoa_tsd.h +4 -0
- package/deps/jq/src/jv_parse.c +70 -15
- package/deps/jq/src/jv_print.c +56 -60
- package/deps/jq/src/jv_private.h +7 -0
- package/deps/jq/src/jv_thread.h +76 -0
- package/deps/jq/src/jv_unicode.c +18 -0
- package/deps/jq/src/jv_unicode.h +2 -0
- package/deps/jq/src/lexer.c +782 -543
- package/deps/jq/src/lexer.h +438 -64
- package/deps/jq/src/lexer.l +10 -3
- package/deps/jq/src/libm.h +16 -6
- package/deps/jq/src/linker.c +97 -40
- package/deps/jq/src/locfile.c +2 -1
- package/deps/jq/src/main.c +384 -336
- package/deps/jq/src/opcode_list.h +5 -2
- package/deps/jq/src/parser.c +2260 -1898
- package/deps/jq/src/parser.h +115 -98
- package/deps/jq/src/parser.y +124 -89
- package/deps/jq/src/util.c +854 -55
- package/deps/jq/src/util.h +6 -4
- package/deps/jq/tests/jq.test +762 -26
- package/deps/jq/tests/jq_fuzz_compile.c +27 -0
- package/deps/jq/tests/jq_fuzz_execute.cpp +42 -0
- package/deps/jq/tests/jq_fuzz_fixed.cpp +297 -0
- package/deps/jq/tests/jq_fuzz_load_file.c +28 -0
- package/deps/jq/tests/jq_fuzz_parse.c +21 -0
- package/deps/jq/tests/jq_fuzz_parse_extended.c +36 -0
- package/deps/jq/tests/jq_fuzz_parse_stream.c +21 -0
- package/deps/jq/tests/local.supp +14 -0
- package/deps/jq/tests/man.test +979 -0
- package/deps/jq/tests/manonig.test +76 -0
- package/deps/jq/tests/manonigtest +5 -0
- package/deps/jq/tests/mantest +1 -2
- package/deps/jq/tests/modules/home2/.jq/g.jq +1 -0
- package/deps/jq/tests/modules/shadow1.jq +2 -0
- package/deps/jq/tests/modules/shadow2.jq +1 -0
- package/deps/jq/tests/modules/test_bind_order0.jq +1 -0
- package/deps/jq/tests/modules/test_bind_order1.jq +1 -1
- package/deps/jq/tests/modules/test_bind_order2.jq +0 -1
- package/deps/jq/tests/no-main-program.jq +1 -0
- package/deps/jq/tests/onig.test +77 -2
- package/deps/jq/tests/setup +7 -2
- package/deps/jq/tests/shtest +478 -59
- package/deps/jq/tests/uri.test +38 -0
- package/deps/jq/tests/uritest +5 -0
- package/deps/jq/tests/yes-main-program.jq +2 -0
- package/index.d.ts +2 -0
- package/lib/index.js +3 -0
- package/lib/jq.js +15 -1
- package/lib/templateAsync.js +137 -0
- package/package.json +3 -3
- package/src/binding.cc +623 -146
- package/src/binding.h +3 -4
- package/test/santiy-async.test.js +171 -0
- package/test/santiy.test.js +2 -2
- package/test/template-async.test.js +182 -0
- package/test/template.test.js +3 -3
- package/deps/jq/.travis.yml +0 -202
- package/deps/jq/NEWS +0 -89
- package/deps/jq/appveyor.yml +0 -53
- package/deps/jq/docs/Gemfile +0 -7
- package/deps/jq/docs/Gemfile.lock +0 -63
- package/deps/jq/docs/Rakefile +0 -24
- package/deps/jq/docs/Rakefile.manual +0 -49
- package/deps/jq/docs/Rakefile.website +0 -76
- package/deps/jq/docs/content/1.tutorial/default.yml +0 -327
- package/deps/jq/docs/content/2.download/default.yml +0 -193
- package/deps/jq/docs/content/index/index.yml +0 -73
- package/deps/jq/docs/public/css/base.scss +0 -181
- package/deps/jq/docs/public/jq.png +0 -0
- package/deps/jq/docs/site.yml +0 -9
- package/deps/jq/docs/templates/default.liquid +0 -34
- package/deps/jq/docs/templates/index.liquid +0 -73
- package/deps/jq/docs/templates/manual.liquid +0 -99
- package/deps/jq/docs/templates/shared/_footer.liquid +0 -10
- package/deps/jq/docs/templates/shared/_head.liquid +0 -17
- package/deps/jq/docs/templates/shared/_navbar.liquid +0 -27
- package/deps/jq/modules/oniguruma/README.ja +0 -195
- package/deps/jq/modules/oniguruma/cmake/dist.cmake +0 -321
- package/deps/jq/modules/oniguruma/contributed/libfuzzer-onig.cpp +0 -31
- package/deps/jq/modules/oniguruma/dist.info +0 -10
- package/deps/jq/modules/oniguruma/src/unicode-7.0/unicode_fold1_key.c +0 -2250
- package/deps/jq/modules/oniguruma/src/unicode-7.0/unicode_fold2_key.c +0 -203
- package/deps/jq/modules/oniguruma/src/unicode-7.0/unicode_fold3_key.c +0 -113
- package/deps/jq/modules/oniguruma/src/unicode-7.0/unicode_fold_data.c +0 -1225
- package/deps/jq/modules/oniguruma/src/unicode-7.0/unicode_property_data.c +0 -24742
- package/deps/jq/modules/oniguruma/src/unicode-7.0/unicode_property_data_posix.c +0 -4846
- package/deps/jq/modules/oniguruma/src/unicode-7.0/unicode_unfold_key.c +0 -2571
- /package/deps/jq/sig/{jq-release.key → jq-release-old.key} +0 -0
- /package/deps/jq/tests/modules/{.jq → home1/.jq} +0 -0
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
unicode.c - Oniguruma (regular expression library)
|
|
3
3
|
**********************************************************************/
|
|
4
4
|
/*-
|
|
5
|
-
* Copyright (c) 2002-
|
|
5
|
+
* Copyright (c) 2002-2020 K.Kosako
|
|
6
6
|
* All rights reserved.
|
|
7
7
|
*
|
|
8
8
|
* Redistribution and use in source and binary forms, with or without
|
|
@@ -29,6 +29,11 @@
|
|
|
29
29
|
|
|
30
30
|
#include "regint.h"
|
|
31
31
|
|
|
32
|
+
struct PoolPropertyNameCtype {
|
|
33
|
+
short int name;
|
|
34
|
+
short int ctype;
|
|
35
|
+
};
|
|
36
|
+
|
|
32
37
|
#define ONIGENC_IS_UNICODE_ISO_8859_1_CTYPE(code,ctype) \
|
|
33
38
|
((EncUNICODE_ISO_8859_1_CtypeTable[code] & CTYPE_TO_BIT(ctype)) != 0)
|
|
34
39
|
|
|
@@ -53,199 +58,27 @@ static const unsigned short EncUNICODE_ISO_8859_1_CtypeTable[256] = {
|
|
|
53
58
|
0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
|
|
54
59
|
0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
|
|
55
60
|
0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,
|
|
56
|
-
0x0284, 0x01a0,
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
61
|
+
0x0284, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0,
|
|
62
|
+
0x01a0, 0x01a0, 0x30e2, 0x01a0, 0x01a0, 0x00a8, 0x01a0, 0x01a0,
|
|
63
|
+
0x01a0, 0x01a0, 0x10a0, 0x10a0, 0x01a0, 0x30e2, 0x01a0, 0x01a0,
|
|
64
|
+
0x01a0, 0x10a0, 0x30e2, 0x01a0, 0x10a0, 0x10a0, 0x10a0, 0x01a0,
|
|
60
65
|
0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
|
|
61
66
|
0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
|
|
62
|
-
0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,
|
|
67
|
+
0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x01a0,
|
|
63
68
|
0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2,
|
|
64
69
|
0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
|
|
65
70
|
0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
|
|
66
|
-
0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,
|
|
71
|
+
0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x01a0,
|
|
67
72
|
0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2
|
|
68
73
|
};
|
|
69
74
|
|
|
70
|
-
#ifdef USE_UNICODE_PROPERTIES
|
|
71
|
-
#include "unicode_property_data.c"
|
|
72
|
-
#else
|
|
73
|
-
#include "unicode_property_data_posix.c"
|
|
74
|
-
#endif
|
|
75
|
-
|
|
76
75
|
#include "st.h"
|
|
77
76
|
|
|
78
|
-
#define USER_DEFINED_PROPERTY_MAX_NUM 20
|
|
79
|
-
|
|
80
|
-
typedef struct {
|
|
81
|
-
int ctype;
|
|
82
|
-
OnigCodePoint* ranges;
|
|
83
|
-
} UserDefinedPropertyValue;
|
|
84
|
-
|
|
85
|
-
static int UserDefinedPropertyNum;
|
|
86
|
-
static UserDefinedPropertyValue
|
|
87
|
-
UserDefinedPropertyRanges[USER_DEFINED_PROPERTY_MAX_NUM];
|
|
88
|
-
static st_table* UserDefinedPropertyTable;
|
|
89
|
-
|
|
90
|
-
extern int
|
|
91
|
-
onig_unicode_define_user_property(const char* name, OnigCodePoint* ranges)
|
|
92
|
-
{
|
|
93
|
-
UserDefinedPropertyValue* e;
|
|
94
|
-
int i;
|
|
95
|
-
int n;
|
|
96
|
-
int len;
|
|
97
|
-
int c;
|
|
98
|
-
char* s;
|
|
99
|
-
|
|
100
|
-
if (UserDefinedPropertyNum >= USER_DEFINED_PROPERTY_MAX_NUM)
|
|
101
|
-
return ONIGERR_TOO_MANY_USER_DEFINED_OBJECTS;
|
|
102
|
-
|
|
103
|
-
len = strlen(name);
|
|
104
|
-
if (len >= PROPERTY_NAME_MAX_SIZE)
|
|
105
|
-
return ONIGERR_TOO_LONG_PROPERTY_NAME;
|
|
106
|
-
|
|
107
|
-
s = (char* )xmalloc(len + 1);
|
|
108
|
-
if (s == 0)
|
|
109
|
-
return ONIGERR_MEMORY;
|
|
110
|
-
|
|
111
|
-
n = 0;
|
|
112
|
-
for (i = 0; i < len; i++) {
|
|
113
|
-
c = name[i];
|
|
114
|
-
if (c <= 0 || c >= 0x80) {
|
|
115
|
-
xfree(s);
|
|
116
|
-
return ONIGERR_INVALID_CHAR_PROPERTY_NAME;
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
if (c != ' ' && c != '-' && c != '_') {
|
|
120
|
-
s[n] = c;
|
|
121
|
-
n++;
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
s[n] = '\0';
|
|
125
|
-
|
|
126
|
-
if (UserDefinedPropertyTable == 0) {
|
|
127
|
-
UserDefinedPropertyTable = onig_st_init_strend_table_with_size(10);
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
e = UserDefinedPropertyRanges + UserDefinedPropertyNum;
|
|
131
|
-
e->ctype = CODE_RANGES_NUM + UserDefinedPropertyNum;
|
|
132
|
-
e->ranges = ranges;
|
|
133
|
-
onig_st_insert_strend(UserDefinedPropertyTable,
|
|
134
|
-
(const UChar* )s, (const UChar* )s + n,
|
|
135
|
-
(hash_data_type )((void* )e));
|
|
136
|
-
|
|
137
|
-
UserDefinedPropertyNum++;
|
|
138
|
-
return 0;
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
extern int
|
|
142
|
-
onigenc_unicode_is_code_ctype(OnigCodePoint code, unsigned int ctype)
|
|
143
|
-
{
|
|
144
|
-
if (
|
|
145
|
-
#ifdef USE_UNICODE_PROPERTIES
|
|
146
|
-
ctype <= ONIGENC_MAX_STD_CTYPE &&
|
|
147
|
-
#endif
|
|
148
|
-
code < 256) {
|
|
149
|
-
return ONIGENC_IS_UNICODE_ISO_8859_1_CTYPE(code, ctype);
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
if (ctype >= CODE_RANGES_NUM) {
|
|
153
|
-
int index = ctype - CODE_RANGES_NUM;
|
|
154
|
-
if (index < UserDefinedPropertyNum)
|
|
155
|
-
return onig_is_in_code_range((UChar* )UserDefinedPropertyRanges[index].ranges, code);
|
|
156
|
-
else
|
|
157
|
-
return ONIGERR_TYPE_BUG;
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
return onig_is_in_code_range((UChar* )CodeRanges[ctype], code);
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
extern int
|
|
165
|
-
onigenc_unicode_ctype_code_range(int ctype, const OnigCodePoint* ranges[])
|
|
166
|
-
{
|
|
167
|
-
if (ctype >= CODE_RANGES_NUM) {
|
|
168
|
-
int index = ctype - CODE_RANGES_NUM;
|
|
169
|
-
if (index < UserDefinedPropertyNum) {
|
|
170
|
-
*ranges = UserDefinedPropertyRanges[index].ranges;
|
|
171
|
-
return 0;
|
|
172
|
-
}
|
|
173
|
-
else
|
|
174
|
-
return ONIGERR_TYPE_BUG;
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
*ranges = CodeRanges[ctype];
|
|
178
|
-
return 0;
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
extern int
|
|
182
|
-
onigenc_utf16_32_get_ctype_code_range(OnigCtype ctype, OnigCodePoint* sb_out,
|
|
183
|
-
const OnigCodePoint* ranges[])
|
|
184
|
-
{
|
|
185
|
-
*sb_out = 0x00;
|
|
186
|
-
return onigenc_unicode_ctype_code_range(ctype, ranges);
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
extern int
|
|
190
|
-
onigenc_unicode_property_name_to_ctype(OnigEncoding enc, UChar* name, UChar* end)
|
|
191
|
-
{
|
|
192
|
-
int len;
|
|
193
|
-
UChar *p;
|
|
194
|
-
OnigCodePoint code;
|
|
195
|
-
const struct PropertyNameCtype* pc;
|
|
196
|
-
char buf[PROPERTY_NAME_MAX_SIZE];
|
|
197
|
-
|
|
198
|
-
p = name;
|
|
199
|
-
len = 0;
|
|
200
|
-
while (p < end) {
|
|
201
|
-
code = ONIGENC_MBC_TO_CODE(enc, p, end);
|
|
202
|
-
if (code >= 0x80)
|
|
203
|
-
return ONIGERR_INVALID_CHAR_PROPERTY_NAME;
|
|
204
|
-
|
|
205
|
-
if (code != ' ' && code != '-' && code != '_') {
|
|
206
|
-
buf[len++] = (char )code;
|
|
207
|
-
if (len >= PROPERTY_NAME_MAX_SIZE)
|
|
208
|
-
return ONIGERR_INVALID_CHAR_PROPERTY_NAME;
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
p += enclen(enc, p);
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
buf[len] = 0;
|
|
215
|
-
|
|
216
|
-
if (UserDefinedPropertyTable != 0) {
|
|
217
|
-
UserDefinedPropertyValue* e;
|
|
218
|
-
e = (UserDefinedPropertyValue* )NULL;
|
|
219
|
-
onig_st_lookup_strend(UserDefinedPropertyTable,
|
|
220
|
-
(const UChar* )buf, (const UChar* )buf + len,
|
|
221
|
-
(hash_data_type* )((void* )(&e)));
|
|
222
|
-
if (e != 0) {
|
|
223
|
-
return e->ctype;
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
pc = unicode_lookup_property_name(buf, len);
|
|
228
|
-
if (pc != 0) {
|
|
229
|
-
/* fprintf(stderr, "LOOKUP: %s: %d\n", buf, pc->ctype); */
|
|
230
|
-
#ifndef USE_UNICODE_PROPERTIES
|
|
231
|
-
if (pc->ctype > ONIGENC_MAX_STD_CTYPE)
|
|
232
|
-
return ONIGERR_INVALID_CHAR_PROPERTY_NAME;
|
|
233
|
-
#endif
|
|
234
|
-
|
|
235
|
-
return pc->ctype;
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
return ONIGERR_INVALID_CHAR_PROPERTY_NAME;
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
/* for use macros in unicode_fold_data.c */
|
|
242
77
|
#include "unicode_fold_data.c"
|
|
243
78
|
|
|
244
|
-
|
|
245
79
|
extern int
|
|
246
|
-
onigenc_unicode_mbc_case_fold(OnigEncoding enc,
|
|
247
|
-
|
|
248
|
-
UChar* fold)
|
|
80
|
+
onigenc_unicode_mbc_case_fold(OnigEncoding enc, OnigCaseFoldType flag,
|
|
81
|
+
const UChar** pp, const UChar* end, UChar* fold)
|
|
249
82
|
{
|
|
250
83
|
const struct ByUnfoldKey* buk;
|
|
251
84
|
|
|
@@ -270,23 +103,27 @@ onigenc_unicode_mbc_case_fold(OnigEncoding enc,
|
|
|
270
103
|
}
|
|
271
104
|
#endif
|
|
272
105
|
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
if (buk
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
106
|
+
if (CASE_FOLD_IS_NOT_ASCII_ONLY(flag) || ONIGENC_IS_ASCII_CODE(code)) {
|
|
107
|
+
buk = onigenc_unicode_unfold_key(code);
|
|
108
|
+
if (buk != 0) {
|
|
109
|
+
if (buk->fold_len == 1) {
|
|
110
|
+
if (CASE_FOLD_IS_NOT_ASCII_ONLY(flag) ||
|
|
111
|
+
ONIGENC_IS_ASCII_CODE(*FOLDS1_FOLD(buk->index)))
|
|
112
|
+
return ONIGENC_CODE_TO_MBC(enc, *FOLDS1_FOLD(buk->index), fold);
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
OnigCodePoint* addr;
|
|
116
|
+
|
|
117
|
+
FOLDS_FOLD_ADDR_BUK(buk, addr);
|
|
118
|
+
rlen = 0;
|
|
119
|
+
for (i = 0; i < buk->fold_len; i++) {
|
|
120
|
+
OnigCodePoint c = addr[i];
|
|
121
|
+
len = ONIGENC_CODE_TO_MBC(enc, c, fold);
|
|
122
|
+
fold += len;
|
|
123
|
+
rlen += len;
|
|
124
|
+
}
|
|
125
|
+
return rlen;
|
|
288
126
|
}
|
|
289
|
-
return rlen;
|
|
290
127
|
}
|
|
291
128
|
}
|
|
292
129
|
|
|
@@ -297,16 +134,22 @@ onigenc_unicode_mbc_case_fold(OnigEncoding enc,
|
|
|
297
134
|
}
|
|
298
135
|
|
|
299
136
|
static int
|
|
300
|
-
apply_case_fold1(int from, int to,
|
|
137
|
+
apply_case_fold1(OnigCaseFoldType flag, int from, int to,
|
|
138
|
+
OnigApplyAllCaseFoldFunc f, void* arg)
|
|
301
139
|
{
|
|
302
140
|
int i, j, k, n, r;
|
|
303
141
|
|
|
304
142
|
for (i = from; i < to; ) {
|
|
305
143
|
OnigCodePoint fold = *FOLDS1_FOLD(i);
|
|
144
|
+
if (CASE_FOLD_IS_ASCII_ONLY(flag) && ! ONIGENC_IS_ASCII_CODE(fold)) break;
|
|
145
|
+
|
|
306
146
|
n = FOLDS1_UNFOLDS_NUM(i);
|
|
307
147
|
for (j = 0; j < n; j++) {
|
|
308
148
|
OnigCodePoint unfold = FOLDS1_UNFOLDS(i)[j];
|
|
309
149
|
|
|
150
|
+
if (CASE_FOLD_IS_ASCII_ONLY(flag) && ! ONIGENC_IS_ASCII_CODE(unfold))
|
|
151
|
+
continue;
|
|
152
|
+
|
|
310
153
|
r = (*f)(fold, &unfold, 1, arg);
|
|
311
154
|
if (r != 0) return r;
|
|
312
155
|
r = (*f)(unfold, &fold, 1, arg);
|
|
@@ -314,6 +157,9 @@ apply_case_fold1(int from, int to, OnigApplyAllCaseFoldFunc f, void* arg)
|
|
|
314
157
|
|
|
315
158
|
for (k = 0; k < j; k++) {
|
|
316
159
|
OnigCodePoint unfold2 = FOLDS1_UNFOLDS(i)[k];
|
|
160
|
+
if (CASE_FOLD_IS_ASCII_ONLY(flag) &&
|
|
161
|
+
! ONIGENC_IS_ASCII_CODE(unfold2)) continue;
|
|
162
|
+
|
|
317
163
|
r = (*f)(unfold, &unfold2, 1, arg);
|
|
318
164
|
if (r != 0) return r;
|
|
319
165
|
r = (*f)(unfold2, &unfold, 1, arg);
|
|
@@ -387,11 +233,11 @@ apply_case_fold3(int from, int to, OnigApplyAllCaseFoldFunc f, void* arg)
|
|
|
387
233
|
|
|
388
234
|
extern int
|
|
389
235
|
onigenc_unicode_apply_all_case_fold(OnigCaseFoldType flag,
|
|
390
|
-
|
|
236
|
+
OnigApplyAllCaseFoldFunc f, void* arg)
|
|
391
237
|
{
|
|
392
238
|
int r;
|
|
393
239
|
|
|
394
|
-
r = apply_case_fold1(0, FOLDS1_NORMAL_END_INDEX, f, arg);
|
|
240
|
+
r = apply_case_fold1(flag, 0, FOLDS1_NORMAL_END_INDEX, f, arg);
|
|
395
241
|
if (r != 0) return r;
|
|
396
242
|
|
|
397
243
|
#ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI
|
|
@@ -412,7 +258,7 @@ onigenc_unicode_apply_all_case_fold(OnigCaseFoldType flag,
|
|
|
412
258
|
}
|
|
413
259
|
else {
|
|
414
260
|
#endif
|
|
415
|
-
r = apply_case_fold1(FOLDS1_NORMAL_END_INDEX, FOLDS1_END_INDEX, f, arg);
|
|
261
|
+
r = apply_case_fold1(flag, FOLDS1_NORMAL_END_INDEX, FOLDS1_END_INDEX, f, arg);
|
|
416
262
|
if (r != 0) return r;
|
|
417
263
|
#ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI
|
|
418
264
|
}
|
|
@@ -444,13 +290,19 @@ onigenc_unicode_get_case_fold_codes_by_str(OnigEncoding enc,
|
|
|
444
290
|
OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end,
|
|
445
291
|
OnigCaseFoldCodeItem items[])
|
|
446
292
|
{
|
|
447
|
-
int n, m, i, j, k, len;
|
|
448
|
-
|
|
449
|
-
|
|
293
|
+
int n, m, i, j, k, len, lens[3];
|
|
294
|
+
int index;
|
|
295
|
+
int fn, ncs[3];
|
|
296
|
+
OnigCodePoint cs[3][4];
|
|
297
|
+
OnigCodePoint code, codes[3], orig_codes[3];
|
|
298
|
+
const struct ByUnfoldKey* buk1;
|
|
450
299
|
|
|
451
300
|
n = 0;
|
|
452
301
|
|
|
453
302
|
code = ONIGENC_MBC_TO_CODE(enc, p, end);
|
|
303
|
+
if (CASE_FOLD_IS_ASCII_ONLY(flag)) {
|
|
304
|
+
if (! ONIGENC_IS_ASCII_CODE(code)) return n;
|
|
305
|
+
}
|
|
454
306
|
len = enclen(enc, p);
|
|
455
307
|
|
|
456
308
|
#ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI
|
|
@@ -482,38 +334,167 @@ onigenc_unicode_get_case_fold_codes_by_str(OnigEncoding enc,
|
|
|
482
334
|
}
|
|
483
335
|
#endif
|
|
484
336
|
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
int un;
|
|
489
|
-
items[0].byte_len = len;
|
|
490
|
-
items[0].code_len = 1;
|
|
491
|
-
items[0].code[0] = *FOLDS1_FOLD(buk->index);
|
|
492
|
-
n++;
|
|
337
|
+
orig_codes[0] = code;
|
|
338
|
+
lens[0] = len;
|
|
339
|
+
p += len;
|
|
493
340
|
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
341
|
+
buk1 = onigenc_unicode_unfold_key(orig_codes[0]);
|
|
342
|
+
if (buk1 != 0 && buk1->fold_len == 1) {
|
|
343
|
+
codes[0] = *FOLDS1_FOLD(buk1->index);
|
|
344
|
+
}
|
|
345
|
+
else
|
|
346
|
+
codes[0] = orig_codes[0];
|
|
347
|
+
|
|
348
|
+
if ((flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) == 0)
|
|
349
|
+
goto fold1;
|
|
350
|
+
|
|
351
|
+
if (p < end) {
|
|
352
|
+
const struct ByUnfoldKey* buk;
|
|
353
|
+
|
|
354
|
+
code = ONIGENC_MBC_TO_CODE(enc, p, end);
|
|
355
|
+
orig_codes[1] = code;
|
|
356
|
+
len = enclen(enc, p);
|
|
357
|
+
lens[1] = lens[0] + len;
|
|
358
|
+
buk = onigenc_unicode_unfold_key(orig_codes[1]);
|
|
359
|
+
if (buk != 0 && buk->fold_len == 1) {
|
|
360
|
+
codes[1] = *FOLDS1_FOLD(buk->index);
|
|
361
|
+
}
|
|
362
|
+
else
|
|
363
|
+
codes[1] = orig_codes[1];
|
|
364
|
+
|
|
365
|
+
p += len;
|
|
366
|
+
if (p < end) {
|
|
367
|
+
code = ONIGENC_MBC_TO_CODE(enc, p, end);
|
|
368
|
+
orig_codes[2] = code;
|
|
369
|
+
len = enclen(enc, p);
|
|
370
|
+
lens[2] = lens[1] + len;
|
|
371
|
+
buk = onigenc_unicode_unfold_key(orig_codes[2]);
|
|
372
|
+
if (buk != 0 && buk->fold_len == 1) {
|
|
373
|
+
codes[2] = *FOLDS1_FOLD(buk->index);
|
|
374
|
+
}
|
|
375
|
+
else
|
|
376
|
+
codes[2] = orig_codes[2];
|
|
377
|
+
|
|
378
|
+
index = onigenc_unicode_fold3_key(codes);
|
|
379
|
+
if (index >= 0) {
|
|
380
|
+
m = FOLDS3_UNFOLDS_NUM(index);
|
|
381
|
+
for (i = 0; i < m; i++) {
|
|
382
|
+
items[n].byte_len = lens[2];
|
|
499
383
|
items[n].code_len = 1;
|
|
500
|
-
items[n].code[0] =
|
|
384
|
+
items[n].code[0] = FOLDS3_UNFOLDS(index)[i];
|
|
501
385
|
n++;
|
|
502
386
|
}
|
|
387
|
+
|
|
388
|
+
for (fn = 0; fn < 3; fn++) {
|
|
389
|
+
int sindex;
|
|
390
|
+
cs[fn][0] = FOLDS3_FOLD(index)[fn];
|
|
391
|
+
ncs[fn] = 1;
|
|
392
|
+
sindex = onigenc_unicode_fold1_key(&cs[fn][0]);
|
|
393
|
+
if (sindex >= 0) {
|
|
394
|
+
int m = FOLDS1_UNFOLDS_NUM(sindex);
|
|
395
|
+
for (i = 0; i < m; i++) {
|
|
396
|
+
cs[fn][i+1] = FOLDS1_UNFOLDS(sindex)[i];
|
|
397
|
+
}
|
|
398
|
+
ncs[fn] += m;
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
for (i = 0; i < ncs[0]; i++) {
|
|
403
|
+
for (j = 0; j < ncs[1]; j++) {
|
|
404
|
+
for (k = 0; k < ncs[2]; k++) {
|
|
405
|
+
if (cs[0][i] == orig_codes[0] && cs[1][j] == orig_codes[1] &&
|
|
406
|
+
cs[2][k] == orig_codes[2])
|
|
407
|
+
continue;
|
|
408
|
+
|
|
409
|
+
items[n].byte_len = lens[2];
|
|
410
|
+
items[n].code_len = 3;
|
|
411
|
+
items[n].code[0] = cs[0][i];
|
|
412
|
+
items[n].code[1] = cs[1][j];
|
|
413
|
+
items[n].code[2] = cs[2][k];
|
|
414
|
+
n++;
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
return n;
|
|
503
420
|
}
|
|
504
|
-
code = items[0].code[0]; // for multi-code to unfold search.
|
|
505
421
|
}
|
|
506
|
-
else if ((flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) {
|
|
507
|
-
OnigCodePoint cs[3][4];
|
|
508
|
-
int fn, ncs[3];
|
|
509
422
|
|
|
510
|
-
|
|
511
|
-
|
|
423
|
+
index = onigenc_unicode_fold2_key(codes);
|
|
424
|
+
if (index >= 0) {
|
|
425
|
+
m = FOLDS2_UNFOLDS_NUM(index);
|
|
426
|
+
for (i = 0; i < m; i++) {
|
|
427
|
+
items[n].byte_len = lens[1];
|
|
428
|
+
items[n].code_len = 1;
|
|
429
|
+
items[n].code[0] = FOLDS2_UNFOLDS(index)[i];
|
|
430
|
+
n++;
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
for (fn = 0; fn < 2; fn++) {
|
|
434
|
+
int sindex;
|
|
435
|
+
cs[fn][0] = FOLDS2_FOLD(index)[fn];
|
|
436
|
+
ncs[fn] = 1;
|
|
437
|
+
sindex = onigenc_unicode_fold1_key(&cs[fn][0]);
|
|
438
|
+
if (sindex >= 0) {
|
|
439
|
+
int m = FOLDS1_UNFOLDS_NUM(sindex);
|
|
440
|
+
for (i = 0; i < m; i++) {
|
|
441
|
+
cs[fn][i+1] = FOLDS1_UNFOLDS(sindex)[i];
|
|
442
|
+
}
|
|
443
|
+
ncs[fn] += m;
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
for (i = 0; i < ncs[0]; i++) {
|
|
448
|
+
for (j = 0; j < ncs[1]; j++) {
|
|
449
|
+
if (cs[0][i] == orig_codes[0] && cs[1][j] == orig_codes[1])
|
|
450
|
+
continue;
|
|
451
|
+
items[n].byte_len = lens[1];
|
|
452
|
+
items[n].code_len = 2;
|
|
453
|
+
items[n].code[0] = cs[0][i];
|
|
454
|
+
items[n].code[1] = cs[1][j];
|
|
455
|
+
n++;
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
return n;
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
fold1:
|
|
464
|
+
if (buk1 != 0) {
|
|
465
|
+
if (buk1->fold_len == 1) {
|
|
466
|
+
int un;
|
|
467
|
+
|
|
468
|
+
if (CASE_FOLD_IS_NOT_ASCII_ONLY(flag) ||
|
|
469
|
+
ONIGENC_IS_ASCII_CODE(*FOLDS1_FOLD(buk1->index))) {
|
|
470
|
+
items[0].byte_len = lens[0];
|
|
471
|
+
items[0].code_len = 1;
|
|
472
|
+
items[0].code[0] = *FOLDS1_FOLD(buk1->index);
|
|
473
|
+
n++;
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
un = FOLDS1_UNFOLDS_NUM(buk1->index);
|
|
477
|
+
for (i = 0; i < un; i++) {
|
|
478
|
+
OnigCodePoint unfold = FOLDS1_UNFOLDS(buk1->index)[i];
|
|
479
|
+
if (unfold != orig_codes[0]) {
|
|
480
|
+
if (CASE_FOLD_IS_NOT_ASCII_ONLY(flag) ||
|
|
481
|
+
ONIGENC_IS_ASCII_CODE(unfold)) {
|
|
482
|
+
items[n].byte_len = lens[0];
|
|
483
|
+
items[n].code_len = 1;
|
|
484
|
+
items[n].code[0] = unfold;
|
|
485
|
+
n++;
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
else if ((flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) {
|
|
491
|
+
if (buk1->fold_len == 2) {
|
|
492
|
+
m = FOLDS2_UNFOLDS_NUM(buk1->index);
|
|
512
493
|
for (i = 0; i < m; i++) {
|
|
513
|
-
OnigCodePoint unfold = FOLDS2_UNFOLDS(
|
|
514
|
-
if (unfold ==
|
|
494
|
+
OnigCodePoint unfold = FOLDS2_UNFOLDS(buk1->index)[i];
|
|
495
|
+
if (unfold == orig_codes[0]) continue;
|
|
515
496
|
|
|
516
|
-
items[n].byte_len =
|
|
497
|
+
items[n].byte_len = lens[0];
|
|
517
498
|
items[n].code_len = 1;
|
|
518
499
|
items[n].code[0] = unfold;
|
|
519
500
|
n++;
|
|
@@ -521,22 +502,21 @@ onigenc_unicode_get_case_fold_codes_by_str(OnigEncoding enc,
|
|
|
521
502
|
|
|
522
503
|
for (fn = 0; fn < 2; fn++) {
|
|
523
504
|
int index;
|
|
524
|
-
cs[fn][0] = FOLDS2_FOLD(
|
|
525
|
-
|
|
505
|
+
cs[fn][0] = FOLDS2_FOLD(buk1->index)[fn];
|
|
506
|
+
ncs[fn] = 1;
|
|
507
|
+
index = onigenc_unicode_fold1_key(&cs[fn][0]);
|
|
526
508
|
if (index >= 0) {
|
|
527
509
|
int m = FOLDS1_UNFOLDS_NUM(index);
|
|
528
510
|
for (i = 0; i < m; i++) {
|
|
529
511
|
cs[fn][i+1] = FOLDS1_UNFOLDS(index)[i];
|
|
530
512
|
}
|
|
531
|
-
ncs[fn]
|
|
513
|
+
ncs[fn] += m;
|
|
532
514
|
}
|
|
533
|
-
else
|
|
534
|
-
ncs[fn] = 1;
|
|
535
515
|
}
|
|
536
516
|
|
|
537
517
|
for (i = 0; i < ncs[0]; i++) {
|
|
538
518
|
for (j = 0; j < ncs[1]; j++) {
|
|
539
|
-
items[n].byte_len =
|
|
519
|
+
items[n].byte_len = lens[0];
|
|
540
520
|
items[n].code_len = 2;
|
|
541
521
|
items[n].code[0] = cs[0][i];
|
|
542
522
|
items[n].code[1] = cs[1][j];
|
|
@@ -545,12 +525,12 @@ onigenc_unicode_get_case_fold_codes_by_str(OnigEncoding enc,
|
|
|
545
525
|
}
|
|
546
526
|
}
|
|
547
527
|
else { /* fold_len == 3 */
|
|
548
|
-
m = FOLDS3_UNFOLDS_NUM(
|
|
528
|
+
m = FOLDS3_UNFOLDS_NUM(buk1->index);
|
|
549
529
|
for (i = 0; i < m; i++) {
|
|
550
|
-
OnigCodePoint unfold = FOLDS3_UNFOLDS(
|
|
551
|
-
if (unfold ==
|
|
530
|
+
OnigCodePoint unfold = FOLDS3_UNFOLDS(buk1->index)[i];
|
|
531
|
+
if (unfold == orig_codes[0]) continue;
|
|
552
532
|
|
|
553
|
-
items[n].byte_len =
|
|
533
|
+
items[n].byte_len = lens[0];
|
|
554
534
|
items[n].code_len = 1;
|
|
555
535
|
items[n].code[0] = unfold;
|
|
556
536
|
n++;
|
|
@@ -558,23 +538,22 @@ onigenc_unicode_get_case_fold_codes_by_str(OnigEncoding enc,
|
|
|
558
538
|
|
|
559
539
|
for (fn = 0; fn < 3; fn++) {
|
|
560
540
|
int index;
|
|
561
|
-
cs[fn][0] = FOLDS3_FOLD(
|
|
562
|
-
|
|
541
|
+
cs[fn][0] = FOLDS3_FOLD(buk1->index)[fn];
|
|
542
|
+
ncs[fn] = 1;
|
|
543
|
+
index = onigenc_unicode_fold1_key(&cs[fn][0]);
|
|
563
544
|
if (index >= 0) {
|
|
564
545
|
int m = FOLDS1_UNFOLDS_NUM(index);
|
|
565
546
|
for (i = 0; i < m; i++) {
|
|
566
547
|
cs[fn][i+1] = FOLDS1_UNFOLDS(index)[i];
|
|
567
548
|
}
|
|
568
|
-
ncs[fn]
|
|
549
|
+
ncs[fn] += m;
|
|
569
550
|
}
|
|
570
|
-
else
|
|
571
|
-
ncs[fn] = 1;
|
|
572
551
|
}
|
|
573
552
|
|
|
574
553
|
for (i = 0; i < ncs[0]; i++) {
|
|
575
554
|
for (j = 0; j < ncs[1]; j++) {
|
|
576
555
|
for (k = 0; k < ncs[2]; k++) {
|
|
577
|
-
items[n].byte_len =
|
|
556
|
+
items[n].byte_len = lens[0];
|
|
578
557
|
items[n].code_len = 3;
|
|
579
558
|
items[n].code[0] = cs[0][i];
|
|
580
559
|
items[n].code[1] = cs[1][j];
|
|
@@ -584,81 +563,677 @@ onigenc_unicode_get_case_fold_codes_by_str(OnigEncoding enc,
|
|
|
584
563
|
}
|
|
585
564
|
}
|
|
586
565
|
}
|
|
587
|
-
|
|
588
|
-
/* multi char folded code is not head of another folded multi char */
|
|
589
|
-
return n;
|
|
590
566
|
}
|
|
591
567
|
}
|
|
592
568
|
else {
|
|
593
|
-
int index =
|
|
569
|
+
int index = onigenc_unicode_fold1_key(orig_codes);
|
|
594
570
|
if (index >= 0) {
|
|
595
571
|
int m = FOLDS1_UNFOLDS_NUM(index);
|
|
596
572
|
for (i = 0; i < m; i++) {
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
573
|
+
code = FOLDS1_UNFOLDS(index)[i];
|
|
574
|
+
if (CASE_FOLD_IS_NOT_ASCII_ONLY(flag)||ONIGENC_IS_ASCII_CODE(code)) {
|
|
575
|
+
items[n].byte_len = lens[0];
|
|
576
|
+
items[n].code_len = 1;
|
|
577
|
+
items[n].code[0] = code;
|
|
578
|
+
n++;
|
|
579
|
+
}
|
|
580
|
+
}
|
|
602
581
|
}
|
|
603
582
|
}
|
|
604
583
|
|
|
605
|
-
|
|
606
|
-
|
|
584
|
+
return n;
|
|
585
|
+
}
|
|
607
586
|
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
587
|
+
#ifdef USE_UNICODE_PROPERTIES
|
|
588
|
+
#include "unicode_property_data.c"
|
|
589
|
+
#else
|
|
590
|
+
#include "unicode_property_data_posix.c"
|
|
591
|
+
#endif
|
|
592
|
+
|
|
593
|
+
|
|
594
|
+
#ifdef USE_UNICODE_WORD_BREAK
|
|
595
|
+
|
|
596
|
+
enum WB_TYPE {
|
|
597
|
+
WB_Any = 0,
|
|
598
|
+
WB_ALetter,
|
|
599
|
+
WB_CR,
|
|
600
|
+
WB_Double_Quote,
|
|
601
|
+
WB_Extend,
|
|
602
|
+
WB_ExtendNumLet,
|
|
603
|
+
WB_Format,
|
|
604
|
+
WB_Hebrew_Letter,
|
|
605
|
+
WB_Katakana,
|
|
606
|
+
WB_LF,
|
|
607
|
+
WB_MidLetter,
|
|
608
|
+
WB_MidNum,
|
|
609
|
+
WB_MidNumLet,
|
|
610
|
+
WB_Newline,
|
|
611
|
+
WB_Numeric,
|
|
612
|
+
WB_Regional_Indicator,
|
|
613
|
+
WB_Single_Quote,
|
|
614
|
+
WB_WSegSpace,
|
|
615
|
+
WB_ZWJ,
|
|
616
|
+
};
|
|
617
|
+
|
|
618
|
+
typedef struct {
|
|
619
|
+
OnigCodePoint start;
|
|
620
|
+
OnigCodePoint end;
|
|
621
|
+
enum WB_TYPE type;
|
|
622
|
+
} WB_RANGE_TYPE;
|
|
623
|
+
|
|
624
|
+
#include "unicode_wb_data.c"
|
|
625
|
+
|
|
626
|
+
static enum WB_TYPE
|
|
627
|
+
wb_get_type(OnigCodePoint code)
|
|
628
|
+
{
|
|
629
|
+
OnigCodePoint low, high, x;
|
|
630
|
+
enum WB_TYPE type;
|
|
631
|
+
|
|
632
|
+
for (low = 0, high = (OnigCodePoint )WB_RANGE_NUM; low < high; ) {
|
|
633
|
+
x = (low + high) >> 1;
|
|
634
|
+
if (code > WB_RANGES[x].end)
|
|
635
|
+
low = x + 1;
|
|
636
|
+
else
|
|
637
|
+
high = x;
|
|
638
|
+
}
|
|
639
|
+
|
|
640
|
+
type = (low < (OnigCodePoint )WB_RANGE_NUM &&
|
|
641
|
+
code >= WB_RANGES[low].start) ?
|
|
642
|
+
WB_RANGES[low].type : WB_Any;
|
|
643
|
+
|
|
644
|
+
return type;
|
|
645
|
+
}
|
|
646
|
+
|
|
647
|
+
#define IS_WB_IGNORE_TAIL(t) ((t) == WB_Extend || (t) == WB_Format || (t) == WB_ZWJ)
|
|
648
|
+
#define IS_WB_AHLetter(t) ((t) == WB_ALetter || (t) == WB_Hebrew_Letter)
|
|
649
|
+
#define IS_WB_MidNumLetQ(t) ((t) == WB_MidNumLet || (t) == WB_Single_Quote)
|
|
650
|
+
|
|
651
|
+
static int
|
|
652
|
+
wb_get_next_main_code(OnigEncoding enc, UChar* p, const UChar* end,
|
|
653
|
+
OnigCodePoint* rcode, enum WB_TYPE* rtype)
|
|
654
|
+
{
|
|
655
|
+
OnigCodePoint code;
|
|
656
|
+
enum WB_TYPE type;
|
|
657
|
+
|
|
658
|
+
while (TRUE) {
|
|
659
|
+
p += enclen(enc, p);
|
|
660
|
+
if (p >= end) break;
|
|
612
661
|
|
|
613
|
-
codes[0] = code;
|
|
614
662
|
code = ONIGENC_MBC_TO_CODE(enc, p, end);
|
|
663
|
+
type = wb_get_type(code);
|
|
664
|
+
if (! IS_WB_IGNORE_TAIL(type)) {
|
|
665
|
+
*rcode = code;
|
|
666
|
+
*rtype = type;
|
|
667
|
+
return 1;
|
|
668
|
+
}
|
|
669
|
+
}
|
|
615
670
|
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
671
|
+
return 0;
|
|
672
|
+
}
|
|
673
|
+
|
|
674
|
+
extern int
|
|
675
|
+
onigenc_wb_is_break_position(OnigEncoding enc, UChar* p, UChar* prev,
|
|
676
|
+
const UChar* start, const UChar* end)
|
|
677
|
+
{
|
|
678
|
+
int r;
|
|
679
|
+
UChar* pp;
|
|
680
|
+
OnigCodePoint cfrom;
|
|
681
|
+
OnigCodePoint cfrom2;
|
|
682
|
+
OnigCodePoint cto;
|
|
683
|
+
OnigCodePoint cto2;
|
|
684
|
+
enum WB_TYPE from;
|
|
685
|
+
enum WB_TYPE from2;
|
|
686
|
+
enum WB_TYPE to;
|
|
687
|
+
enum WB_TYPE to2;
|
|
688
|
+
|
|
689
|
+
/* WB1: sot / Any */
|
|
690
|
+
if (p == start) return TRUE;
|
|
691
|
+
/* WB2: Any / eot */
|
|
692
|
+
if (p == end) return TRUE;
|
|
693
|
+
|
|
694
|
+
if (IS_NULL(prev)) {
|
|
695
|
+
prev = onigenc_get_prev_char_head(enc, start, p);
|
|
696
|
+
if (IS_NULL(prev)) return TRUE;
|
|
697
|
+
}
|
|
698
|
+
|
|
699
|
+
cfrom = ONIGENC_MBC_TO_CODE(enc, prev, end);
|
|
700
|
+
cto = ONIGENC_MBC_TO_CODE(enc, p, end);
|
|
701
|
+
|
|
702
|
+
from = wb_get_type(cfrom);
|
|
703
|
+
to = wb_get_type(cto);
|
|
704
|
+
|
|
705
|
+
/* short cut */
|
|
706
|
+
if (from == 0 && to == 0) goto WB999;
|
|
707
|
+
|
|
708
|
+
/* WB3: CR + LF */
|
|
709
|
+
if (from == WB_CR && to == WB_LF) return FALSE;
|
|
710
|
+
|
|
711
|
+
/* WB3a: (Newline|CR|LF) / */
|
|
712
|
+
if (from == WB_Newline || from == WB_CR || from == WB_LF) return TRUE;
|
|
713
|
+
/* WB3b: / (Newline|CR|LF) */
|
|
714
|
+
if (to == WB_Newline || to == WB_CR || to == WB_LF) return TRUE;
|
|
715
|
+
|
|
716
|
+
/* WB3c: ZWJ + {Extended_Pictographic} */
|
|
717
|
+
if (from == WB_ZWJ) {
|
|
718
|
+
if (onigenc_unicode_is_code_ctype(cto, PROP_INDEX_EXTENDEDPICTOGRAPHIC))
|
|
719
|
+
return FALSE;
|
|
720
|
+
}
|
|
721
|
+
|
|
722
|
+
/* WB3d: WSegSpace + WSegSpace */
|
|
723
|
+
if (from == WB_WSegSpace && to == WB_WSegSpace) return FALSE;
|
|
724
|
+
|
|
725
|
+
/* WB4: X (Extend|Format|ZWJ)* -> X */
|
|
726
|
+
if (IS_WB_IGNORE_TAIL(to)) return FALSE;
|
|
727
|
+
if (IS_WB_IGNORE_TAIL(from)) {
|
|
728
|
+
while ((pp = onigenc_get_prev_char_head(enc, start, prev)) != NULL) {
|
|
729
|
+
prev = pp;
|
|
730
|
+
cfrom = ONIGENC_MBC_TO_CODE(enc, prev, end);
|
|
731
|
+
from = wb_get_type(cfrom);
|
|
732
|
+
if (! IS_WB_IGNORE_TAIL(from))
|
|
733
|
+
break;
|
|
619
734
|
}
|
|
620
|
-
|
|
621
|
-
codes[1] = code;
|
|
735
|
+
}
|
|
622
736
|
|
|
623
|
-
|
|
624
|
-
|
|
737
|
+
if (IS_WB_AHLetter(from)) {
|
|
738
|
+
/* WB5: AHLetter + AHLetter */
|
|
739
|
+
if (IS_WB_AHLetter(to)) return FALSE;
|
|
625
740
|
|
|
626
|
-
|
|
627
|
-
if (
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
items[n].code_len = 1;
|
|
632
|
-
items[n].code[0] = FOLDS2_UNFOLDS(index)[i];
|
|
633
|
-
n++;
|
|
741
|
+
/* WB6: AHLetter + (MidLetter | MidNumLetQ) AHLetter */
|
|
742
|
+
if (to == WB_MidLetter || IS_WB_MidNumLetQ(to)) {
|
|
743
|
+
r = wb_get_next_main_code(enc, p, end, &cto2, &to2);
|
|
744
|
+
if (r == 1) {
|
|
745
|
+
if (IS_WB_AHLetter(to2)) return FALSE;
|
|
634
746
|
}
|
|
635
747
|
}
|
|
748
|
+
}
|
|
636
749
|
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
750
|
+
/* WB7: AHLetter (MidLetter | MidNumLetQ) + AHLetter */
|
|
751
|
+
if (from == WB_MidLetter || IS_WB_MidNumLetQ(from)) {
|
|
752
|
+
if (IS_WB_AHLetter(to)) {
|
|
753
|
+
from2 = WB_Any;
|
|
754
|
+
while ((pp = onigenc_get_prev_char_head(enc, start, prev)) != NULL) {
|
|
755
|
+
prev = pp;
|
|
756
|
+
cfrom2 = ONIGENC_MBC_TO_CODE(enc, prev, end);
|
|
757
|
+
from2 = wb_get_type(cfrom2);
|
|
758
|
+
if (! IS_WB_IGNORE_TAIL(from2))
|
|
759
|
+
break;
|
|
643
760
|
}
|
|
644
|
-
else
|
|
645
|
-
codes[2] = code;
|
|
646
761
|
|
|
647
|
-
|
|
648
|
-
|
|
762
|
+
if (IS_WB_AHLetter(from2)) return FALSE;
|
|
763
|
+
}
|
|
764
|
+
}
|
|
765
|
+
|
|
766
|
+
if (from == WB_Hebrew_Letter) {
|
|
767
|
+
/* WB7a: Hebrew_Letter + Single_Quote */
|
|
768
|
+
if (to == WB_Single_Quote) return FALSE;
|
|
649
769
|
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
items[n].code_len = 1;
|
|
656
|
-
items[n].code[0] = FOLDS3_UNFOLDS(index)[i];
|
|
657
|
-
n++;
|
|
658
|
-
}
|
|
770
|
+
/* WB7b: Hebrew_Letter + Double_Quote Hebrew_Letter */
|
|
771
|
+
if (to == WB_Double_Quote) {
|
|
772
|
+
r = wb_get_next_main_code(enc, p, end, &cto2, &to2);
|
|
773
|
+
if (r == 1) {
|
|
774
|
+
if (to2 == WB_Hebrew_Letter) return FALSE;
|
|
659
775
|
}
|
|
660
776
|
}
|
|
661
777
|
}
|
|
662
778
|
|
|
663
|
-
|
|
779
|
+
/* WB7c: Hebrew_Letter Double_Quote + Hebrew_Letter */
|
|
780
|
+
if (from == WB_Double_Quote) {
|
|
781
|
+
if (to == WB_Hebrew_Letter) {
|
|
782
|
+
from2 = WB_Any;
|
|
783
|
+
while ((pp = onigenc_get_prev_char_head(enc, start, prev)) != NULL) {
|
|
784
|
+
prev = pp;
|
|
785
|
+
cfrom2 = ONIGENC_MBC_TO_CODE(enc, prev, end);
|
|
786
|
+
from2 = wb_get_type(cfrom2);
|
|
787
|
+
if (! IS_WB_IGNORE_TAIL(from2))
|
|
788
|
+
break;
|
|
789
|
+
}
|
|
790
|
+
|
|
791
|
+
if (from2 == WB_Hebrew_Letter) return FALSE;
|
|
792
|
+
}
|
|
793
|
+
}
|
|
794
|
+
|
|
795
|
+
if (to == WB_Numeric) {
|
|
796
|
+
/* WB8: Numeric + Numeric */
|
|
797
|
+
if (from == WB_Numeric) return FALSE;
|
|
798
|
+
|
|
799
|
+
/* WB9: AHLetter + Numeric */
|
|
800
|
+
if (IS_WB_AHLetter(from)) return FALSE;
|
|
801
|
+
|
|
802
|
+
/* WB11: Numeric (MidNum | MidNumLetQ) + Numeric */
|
|
803
|
+
if (from == WB_MidNum || IS_WB_MidNumLetQ(from)) {
|
|
804
|
+
from2 = WB_Any;
|
|
805
|
+
while ((pp = onigenc_get_prev_char_head(enc, start, prev)) != NULL) {
|
|
806
|
+
prev = pp;
|
|
807
|
+
cfrom2 = ONIGENC_MBC_TO_CODE(enc, prev, end);
|
|
808
|
+
from2 = wb_get_type(cfrom2);
|
|
809
|
+
if (! IS_WB_IGNORE_TAIL(from2))
|
|
810
|
+
break;
|
|
811
|
+
}
|
|
812
|
+
|
|
813
|
+
if (from2 == WB_Numeric) return FALSE;
|
|
814
|
+
}
|
|
815
|
+
}
|
|
816
|
+
|
|
817
|
+
if (from == WB_Numeric) {
|
|
818
|
+
/* WB10: Numeric + AHLetter */
|
|
819
|
+
if (IS_WB_AHLetter(to)) return FALSE;
|
|
820
|
+
|
|
821
|
+
/* WB12: Numeric + (MidNum | MidNumLetQ) Numeric */
|
|
822
|
+
if (to == WB_MidNum || IS_WB_MidNumLetQ(to)) {
|
|
823
|
+
r = wb_get_next_main_code(enc, p, end, &cto2, &to2);
|
|
824
|
+
if (r == 1) {
|
|
825
|
+
if (to2 == WB_Numeric) return FALSE;
|
|
826
|
+
}
|
|
827
|
+
}
|
|
828
|
+
}
|
|
829
|
+
|
|
830
|
+
/* WB13: Katakana + Katakana */
|
|
831
|
+
if (from == WB_Katakana && to == WB_Katakana) return FALSE;
|
|
832
|
+
|
|
833
|
+
/* WB13a: (AHLetter | Numeric | Katakana | ExtendNumLet) + ExtendNumLet */
|
|
834
|
+
if (IS_WB_AHLetter(from) || from == WB_Numeric || from == WB_Katakana
|
|
835
|
+
|| from == WB_ExtendNumLet) {
|
|
836
|
+
if (to == WB_ExtendNumLet) return FALSE;
|
|
837
|
+
}
|
|
838
|
+
|
|
839
|
+
/* WB13b: ExtendNumLet + (AHLetter | Numeric | Katakana) */
|
|
840
|
+
if (from == WB_ExtendNumLet) {
|
|
841
|
+
if (IS_WB_AHLetter(to) || to == WB_Numeric || to == WB_Katakana)
|
|
842
|
+
return FALSE;
|
|
843
|
+
}
|
|
844
|
+
|
|
845
|
+
|
|
846
|
+
/* WB15: sot (RI RI)* RI + RI */
|
|
847
|
+
/* WB16: [^RI] (RI RI)* RI + RI */
|
|
848
|
+
if (from == WB_Regional_Indicator && to == WB_Regional_Indicator) {
|
|
849
|
+
int n = 0;
|
|
850
|
+
while ((prev = onigenc_get_prev_char_head(enc, start, prev)) != NULL) {
|
|
851
|
+
cfrom2 = ONIGENC_MBC_TO_CODE(enc, prev, end);
|
|
852
|
+
from2 = wb_get_type(cfrom2);
|
|
853
|
+
if (from2 != WB_Regional_Indicator)
|
|
854
|
+
break;
|
|
855
|
+
|
|
856
|
+
n++;
|
|
857
|
+
}
|
|
858
|
+
if ((n % 2) == 0) return FALSE;
|
|
859
|
+
}
|
|
860
|
+
|
|
861
|
+
WB999:
|
|
862
|
+
/* WB999: Any / Any */
|
|
863
|
+
return TRUE;
|
|
864
|
+
}
|
|
865
|
+
|
|
866
|
+
#endif /* USE_UNICODE_WORD_BREAK */
|
|
867
|
+
|
|
868
|
+
|
|
869
|
+
#ifdef USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER
|
|
870
|
+
|
|
871
|
+
enum EGCB_BREAK_TYPE {
|
|
872
|
+
EGCB_NOT_BREAK = 0,
|
|
873
|
+
EGCB_BREAK = 1,
|
|
874
|
+
EGCB_BREAK_UNDEF_GB11 = 2,
|
|
875
|
+
EGCB_BREAK_UNDEF_RI_RI = 3
|
|
876
|
+
};
|
|
877
|
+
|
|
878
|
+
enum EGCB_TYPE {
|
|
879
|
+
EGCB_Other = 0,
|
|
880
|
+
EGCB_CR = 1,
|
|
881
|
+
EGCB_LF = 2,
|
|
882
|
+
EGCB_Control = 3,
|
|
883
|
+
EGCB_Extend = 4,
|
|
884
|
+
EGCB_Prepend = 5,
|
|
885
|
+
EGCB_Regional_Indicator = 6,
|
|
886
|
+
EGCB_SpacingMark = 7,
|
|
887
|
+
EGCB_ZWJ = 8,
|
|
888
|
+
#if 0
|
|
889
|
+
/* obsoleted */
|
|
890
|
+
EGCB_E_Base = 9,
|
|
891
|
+
EGCB_E_Base_GAZ = 10,
|
|
892
|
+
EGCB_E_Modifier = 11,
|
|
893
|
+
EGCB_Glue_After_Zwj = 12,
|
|
894
|
+
#endif
|
|
895
|
+
EGCB_L = 13,
|
|
896
|
+
EGCB_LV = 14,
|
|
897
|
+
EGCB_LVT = 15,
|
|
898
|
+
EGCB_T = 16,
|
|
899
|
+
EGCB_V = 17
|
|
900
|
+
};
|
|
901
|
+
|
|
902
|
+
typedef struct {
|
|
903
|
+
OnigCodePoint start;
|
|
904
|
+
OnigCodePoint end;
|
|
905
|
+
enum EGCB_TYPE type;
|
|
906
|
+
} EGCB_RANGE_TYPE;
|
|
907
|
+
|
|
908
|
+
#include "unicode_egcb_data.c"
|
|
909
|
+
|
|
910
|
+
static enum EGCB_TYPE
|
|
911
|
+
egcb_get_type(OnigCodePoint code)
|
|
912
|
+
{
|
|
913
|
+
OnigCodePoint low, high, x;
|
|
914
|
+
enum EGCB_TYPE type;
|
|
915
|
+
|
|
916
|
+
for (low = 0, high = (OnigCodePoint )EGCB_RANGE_NUM; low < high; ) {
|
|
917
|
+
x = (low + high) >> 1;
|
|
918
|
+
if (code > EGCB_RANGES[x].end)
|
|
919
|
+
low = x + 1;
|
|
920
|
+
else
|
|
921
|
+
high = x;
|
|
922
|
+
}
|
|
923
|
+
|
|
924
|
+
type = (low < (OnigCodePoint )EGCB_RANGE_NUM &&
|
|
925
|
+
code >= EGCB_RANGES[low].start) ?
|
|
926
|
+
EGCB_RANGES[low].type : EGCB_Other;
|
|
927
|
+
|
|
928
|
+
return type;
|
|
929
|
+
}
|
|
930
|
+
|
|
931
|
+
#define IS_CONTROL_CR_LF(code) ((code) <= EGCB_Control && (code) >= EGCB_CR)
|
|
932
|
+
#define IS_HANGUL(code) ((code) >= EGCB_L)
|
|
933
|
+
|
|
934
|
+
/* GB1 and GB2 are outside of this function. */
|
|
935
|
+
static enum EGCB_BREAK_TYPE
|
|
936
|
+
unicode_egcb_is_break_2code(OnigCodePoint from_code, OnigCodePoint to_code)
|
|
937
|
+
{
|
|
938
|
+
enum EGCB_TYPE from;
|
|
939
|
+
enum EGCB_TYPE to;
|
|
940
|
+
|
|
941
|
+
from = egcb_get_type(from_code);
|
|
942
|
+
to = egcb_get_type(to_code);
|
|
943
|
+
|
|
944
|
+
/* short cut */
|
|
945
|
+
if (from == 0 && to == 0) goto GB999;
|
|
946
|
+
|
|
947
|
+
/* GB3 */
|
|
948
|
+
if (from == EGCB_CR && to == EGCB_LF) return EGCB_NOT_BREAK;
|
|
949
|
+
/* GB4 */
|
|
950
|
+
if (IS_CONTROL_CR_LF(from)) return EGCB_BREAK;
|
|
951
|
+
/* GB5 */
|
|
952
|
+
if (IS_CONTROL_CR_LF(to)) return EGCB_BREAK;
|
|
953
|
+
|
|
954
|
+
if (IS_HANGUL(from) && IS_HANGUL(to)) {
|
|
955
|
+
/* GB6 */
|
|
956
|
+
if (from == EGCB_L && to != EGCB_T) return EGCB_NOT_BREAK;
|
|
957
|
+
/* GB7 */
|
|
958
|
+
if ((from == EGCB_LV || from == EGCB_V)
|
|
959
|
+
&& (to == EGCB_V || to == EGCB_T)) return EGCB_NOT_BREAK;
|
|
960
|
+
|
|
961
|
+
/* GB8 */
|
|
962
|
+
if ((to == EGCB_T) && (from == EGCB_LVT || from == EGCB_T))
|
|
963
|
+
return EGCB_NOT_BREAK;
|
|
964
|
+
|
|
965
|
+
goto GB999;
|
|
966
|
+
}
|
|
967
|
+
|
|
968
|
+
/* GB9 */
|
|
969
|
+
if (to == EGCB_Extend || to == EGCB_ZWJ) return EGCB_NOT_BREAK;
|
|
970
|
+
|
|
971
|
+
/* GB9a */
|
|
972
|
+
if (to == EGCB_SpacingMark) return EGCB_NOT_BREAK;
|
|
973
|
+
/* GB9b */
|
|
974
|
+
if (from == EGCB_Prepend) return EGCB_NOT_BREAK;
|
|
975
|
+
|
|
976
|
+
/* GB10 removed */
|
|
977
|
+
|
|
978
|
+
/* GB11 */
|
|
979
|
+
if (from == EGCB_ZWJ) {
|
|
980
|
+
if (onigenc_unicode_is_code_ctype(to_code, PROP_INDEX_EXTENDEDPICTOGRAPHIC))
|
|
981
|
+
return EGCB_BREAK_UNDEF_GB11;
|
|
982
|
+
|
|
983
|
+
goto GB999;
|
|
984
|
+
}
|
|
985
|
+
|
|
986
|
+
/* GB12, GB13 */
|
|
987
|
+
if (from == EGCB_Regional_Indicator && to == EGCB_Regional_Indicator) {
|
|
988
|
+
return EGCB_BREAK_UNDEF_RI_RI;
|
|
989
|
+
}
|
|
990
|
+
|
|
991
|
+
GB999:
|
|
992
|
+
return EGCB_BREAK;
|
|
993
|
+
}
|
|
994
|
+
|
|
995
|
+
#endif /* USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER */
|
|
996
|
+
|
|
997
|
+
extern int
|
|
998
|
+
onigenc_egcb_is_break_position(OnigEncoding enc, UChar* p, UChar* prev,
|
|
999
|
+
const UChar* start, const UChar* end)
|
|
1000
|
+
{
|
|
1001
|
+
OnigCodePoint from;
|
|
1002
|
+
OnigCodePoint to;
|
|
1003
|
+
#ifdef USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER
|
|
1004
|
+
enum EGCB_BREAK_TYPE btype;
|
|
1005
|
+
enum EGCB_TYPE type;
|
|
1006
|
+
#endif
|
|
1007
|
+
|
|
1008
|
+
/* GB1 and GB2 */
|
|
1009
|
+
if (p == start) return 1;
|
|
1010
|
+
if (p == end) return 1;
|
|
1011
|
+
|
|
1012
|
+
if (IS_NULL(prev)) {
|
|
1013
|
+
prev = onigenc_get_prev_char_head(enc, start, p);
|
|
1014
|
+
if (IS_NULL(prev)) return 1;
|
|
1015
|
+
}
|
|
1016
|
+
|
|
1017
|
+
from = ONIGENC_MBC_TO_CODE(enc, prev, end);
|
|
1018
|
+
to = ONIGENC_MBC_TO_CODE(enc, p, end);
|
|
1019
|
+
|
|
1020
|
+
#ifdef USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER
|
|
1021
|
+
if (! ONIGENC_IS_UNICODE_ENCODING(enc)) {
|
|
1022
|
+
return from != 0x000d || to != NEWLINE_CODE;
|
|
1023
|
+
}
|
|
1024
|
+
|
|
1025
|
+
btype = unicode_egcb_is_break_2code(from, to);
|
|
1026
|
+
switch (btype) {
|
|
1027
|
+
case EGCB_NOT_BREAK:
|
|
1028
|
+
return 0;
|
|
1029
|
+
break;
|
|
1030
|
+
case EGCB_BREAK:
|
|
1031
|
+
return 1;
|
|
1032
|
+
break;
|
|
1033
|
+
|
|
1034
|
+
case EGCB_BREAK_UNDEF_GB11:
|
|
1035
|
+
while ((prev = onigenc_get_prev_char_head(enc, start, prev)) != NULL) {
|
|
1036
|
+
from = ONIGENC_MBC_TO_CODE(enc, prev, end);
|
|
1037
|
+
if (onigenc_unicode_is_code_ctype(from, PROP_INDEX_EXTENDEDPICTOGRAPHIC))
|
|
1038
|
+
return 0;
|
|
1039
|
+
|
|
1040
|
+
type = egcb_get_type(from);
|
|
1041
|
+
if (type != EGCB_Extend)
|
|
1042
|
+
break;
|
|
1043
|
+
}
|
|
1044
|
+
break;
|
|
1045
|
+
|
|
1046
|
+
case EGCB_BREAK_UNDEF_RI_RI:
|
|
1047
|
+
{
|
|
1048
|
+
int n = 0;
|
|
1049
|
+
while ((prev = onigenc_get_prev_char_head(enc, start, prev)) != NULL) {
|
|
1050
|
+
from = ONIGENC_MBC_TO_CODE(enc, prev, end);
|
|
1051
|
+
type = egcb_get_type(from);
|
|
1052
|
+
if (type != EGCB_Regional_Indicator)
|
|
1053
|
+
break;
|
|
1054
|
+
|
|
1055
|
+
n++;
|
|
1056
|
+
}
|
|
1057
|
+
if ((n % 2) == 0) return 0;
|
|
1058
|
+
}
|
|
1059
|
+
break;
|
|
1060
|
+
}
|
|
1061
|
+
|
|
1062
|
+
return 1;
|
|
1063
|
+
|
|
1064
|
+
#else
|
|
1065
|
+
return from != 0x000d || to != NEWLINE_CODE;
|
|
1066
|
+
#endif /* USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER */
|
|
1067
|
+
}
|
|
1068
|
+
|
|
1069
|
+
|
|
1070
|
+
#define USER_DEFINED_PROPERTY_MAX_NUM 20
|
|
1071
|
+
|
|
1072
|
+
typedef struct {
|
|
1073
|
+
int ctype;
|
|
1074
|
+
OnigCodePoint* ranges;
|
|
1075
|
+
} UserDefinedPropertyValue;
|
|
1076
|
+
|
|
1077
|
+
static int UserDefinedPropertyNum;
|
|
1078
|
+
static UserDefinedPropertyValue
|
|
1079
|
+
UserDefinedPropertyRanges[USER_DEFINED_PROPERTY_MAX_NUM];
|
|
1080
|
+
static st_table* UserDefinedPropertyTable;
|
|
1081
|
+
|
|
1082
|
+
extern int
|
|
1083
|
+
onig_unicode_define_user_property(const char* name, OnigCodePoint* ranges)
|
|
1084
|
+
{
|
|
1085
|
+
UserDefinedPropertyValue* e;
|
|
1086
|
+
int r;
|
|
1087
|
+
int i;
|
|
1088
|
+
int n;
|
|
1089
|
+
int len;
|
|
1090
|
+
int c;
|
|
1091
|
+
char* s;
|
|
1092
|
+
UChar* uname;
|
|
1093
|
+
|
|
1094
|
+
if (UserDefinedPropertyNum >= USER_DEFINED_PROPERTY_MAX_NUM)
|
|
1095
|
+
return ONIGERR_TOO_MANY_USER_DEFINED_OBJECTS;
|
|
1096
|
+
|
|
1097
|
+
len = (int )strlen(name);
|
|
1098
|
+
if (len >= PROPERTY_NAME_MAX_SIZE)
|
|
1099
|
+
return ONIGERR_TOO_LONG_PROPERTY_NAME;
|
|
1100
|
+
|
|
1101
|
+
s = (char* )xmalloc(len + 1);
|
|
1102
|
+
if (s == 0)
|
|
1103
|
+
return ONIGERR_MEMORY;
|
|
1104
|
+
|
|
1105
|
+
uname = (UChar* )name;
|
|
1106
|
+
n = 0;
|
|
1107
|
+
for (i = 0; i < len; i++) {
|
|
1108
|
+
c = uname[i];
|
|
1109
|
+
if (c < 0x20 || c >= 0x80) {
|
|
1110
|
+
xfree(s);
|
|
1111
|
+
return ONIGERR_INVALID_CHAR_PROPERTY_NAME;
|
|
1112
|
+
}
|
|
1113
|
+
|
|
1114
|
+
if (c != ' ' && c != '-' && c != '_') {
|
|
1115
|
+
s[n] = c;
|
|
1116
|
+
n++;
|
|
1117
|
+
}
|
|
1118
|
+
}
|
|
1119
|
+
s[n] = '\0';
|
|
1120
|
+
|
|
1121
|
+
if (UserDefinedPropertyTable == 0) {
|
|
1122
|
+
UserDefinedPropertyTable = onig_st_init_strend_table_with_size(10);
|
|
1123
|
+
if (IS_NULL(UserDefinedPropertyTable)) {
|
|
1124
|
+
xfree(s);
|
|
1125
|
+
return ONIGERR_MEMORY;
|
|
1126
|
+
}
|
|
1127
|
+
}
|
|
1128
|
+
|
|
1129
|
+
e = UserDefinedPropertyRanges + UserDefinedPropertyNum;
|
|
1130
|
+
e->ctype = CODE_RANGES_NUM + UserDefinedPropertyNum;
|
|
1131
|
+
e->ranges = ranges;
|
|
1132
|
+
r = onig_st_insert_strend(UserDefinedPropertyTable,
|
|
1133
|
+
(const UChar* )s, (const UChar* )s + n,
|
|
1134
|
+
(hash_data_type )((void* )e));
|
|
1135
|
+
if (r < 0) return r;
|
|
1136
|
+
|
|
1137
|
+
UserDefinedPropertyNum++;
|
|
1138
|
+
return 0;
|
|
1139
|
+
}
|
|
1140
|
+
|
|
1141
|
+
extern int
|
|
1142
|
+
onigenc_unicode_is_code_ctype(OnigCodePoint code, unsigned int ctype)
|
|
1143
|
+
{
|
|
1144
|
+
if (
|
|
1145
|
+
#ifdef USE_UNICODE_PROPERTIES
|
|
1146
|
+
ctype <= ONIGENC_MAX_STD_CTYPE &&
|
|
1147
|
+
#endif
|
|
1148
|
+
code < 256) {
|
|
1149
|
+
return ONIGENC_IS_UNICODE_ISO_8859_1_CTYPE(code, ctype);
|
|
1150
|
+
}
|
|
1151
|
+
|
|
1152
|
+
if (ctype >= CODE_RANGES_NUM) {
|
|
1153
|
+
int index = ctype - CODE_RANGES_NUM;
|
|
1154
|
+
if (index < UserDefinedPropertyNum)
|
|
1155
|
+
return onig_is_in_code_range((UChar* )UserDefinedPropertyRanges[index].ranges, code);
|
|
1156
|
+
else
|
|
1157
|
+
return ONIGERR_TYPE_BUG;
|
|
1158
|
+
}
|
|
1159
|
+
|
|
1160
|
+
return onig_is_in_code_range((UChar* )CodeRanges[ctype], code);
|
|
1161
|
+
}
|
|
1162
|
+
|
|
1163
|
+
|
|
1164
|
+
extern int
|
|
1165
|
+
onigenc_unicode_ctype_code_range(OnigCtype ctype, const OnigCodePoint* ranges[])
|
|
1166
|
+
{
|
|
1167
|
+
if (ctype >= CODE_RANGES_NUM) {
|
|
1168
|
+
int index = ctype - CODE_RANGES_NUM;
|
|
1169
|
+
if (index < UserDefinedPropertyNum) {
|
|
1170
|
+
*ranges = UserDefinedPropertyRanges[index].ranges;
|
|
1171
|
+
return 0;
|
|
1172
|
+
}
|
|
1173
|
+
else
|
|
1174
|
+
return ONIGERR_TYPE_BUG;
|
|
1175
|
+
}
|
|
1176
|
+
|
|
1177
|
+
*ranges = CodeRanges[ctype];
|
|
1178
|
+
return 0;
|
|
1179
|
+
}
|
|
1180
|
+
|
|
1181
|
+
extern int
|
|
1182
|
+
onigenc_utf16_32_get_ctype_code_range(OnigCtype ctype, OnigCodePoint* sb_out,
|
|
1183
|
+
const OnigCodePoint* ranges[])
|
|
1184
|
+
{
|
|
1185
|
+
*sb_out = 0x00;
|
|
1186
|
+
return onigenc_unicode_ctype_code_range(ctype, ranges);
|
|
1187
|
+
}
|
|
1188
|
+
|
|
1189
|
+
extern int
|
|
1190
|
+
onigenc_unicode_property_name_to_ctype(OnigEncoding enc, UChar* name, UChar* end)
|
|
1191
|
+
{
|
|
1192
|
+
int len;
|
|
1193
|
+
UChar *p;
|
|
1194
|
+
OnigCodePoint code;
|
|
1195
|
+
const struct PoolPropertyNameCtype* pc;
|
|
1196
|
+
char buf[PROPERTY_NAME_MAX_SIZE];
|
|
1197
|
+
|
|
1198
|
+
p = name;
|
|
1199
|
+
len = 0;
|
|
1200
|
+
while (p < end) {
|
|
1201
|
+
code = ONIGENC_MBC_TO_CODE(enc, p, end);
|
|
1202
|
+
if (code >= 0x80)
|
|
1203
|
+
return ONIGERR_INVALID_CHAR_PROPERTY_NAME;
|
|
1204
|
+
|
|
1205
|
+
if (code != ' ' && code != '-' && code != '_') {
|
|
1206
|
+
buf[len++] = (char )code;
|
|
1207
|
+
if (len >= PROPERTY_NAME_MAX_SIZE)
|
|
1208
|
+
return ONIGERR_INVALID_CHAR_PROPERTY_NAME;
|
|
1209
|
+
}
|
|
1210
|
+
|
|
1211
|
+
p += enclen(enc, p);
|
|
1212
|
+
}
|
|
1213
|
+
|
|
1214
|
+
buf[len] = 0;
|
|
1215
|
+
|
|
1216
|
+
if (UserDefinedPropertyTable != 0) {
|
|
1217
|
+
UserDefinedPropertyValue* e;
|
|
1218
|
+
e = (UserDefinedPropertyValue* )NULL;
|
|
1219
|
+
onig_st_lookup_strend(UserDefinedPropertyTable,
|
|
1220
|
+
(const UChar* )buf, (const UChar* )buf + len,
|
|
1221
|
+
(hash_data_type* )((void* )(&e)));
|
|
1222
|
+
if (e != 0) {
|
|
1223
|
+
return e->ctype;
|
|
1224
|
+
}
|
|
1225
|
+
}
|
|
1226
|
+
|
|
1227
|
+
pc = unicode_lookup_property_name(buf, len);
|
|
1228
|
+
if (pc != 0) {
|
|
1229
|
+
/* fprintf(stderr, "LOOKUP: %s: %d\n", buf, pc->ctype); */
|
|
1230
|
+
#ifndef USE_UNICODE_PROPERTIES
|
|
1231
|
+
if (pc->ctype > ONIGENC_MAX_STD_CTYPE)
|
|
1232
|
+
return ONIGERR_INVALID_CHAR_PROPERTY_NAME;
|
|
1233
|
+
#endif
|
|
1234
|
+
|
|
1235
|
+
return (int )pc->ctype;
|
|
1236
|
+
}
|
|
1237
|
+
|
|
1238
|
+
return ONIGERR_INVALID_CHAR_PROPERTY_NAME;
|
|
664
1239
|
}
|