diff options
author | Karl Berry <karl@freefriends.org> | 2018-05-06 21:49:18 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2018-05-06 21:49:18 +0000 |
commit | 905323115107c182a860bca6a036889f4fc7f36f (patch) | |
tree | 6c869d6ae5c9e922ab2e2d5e490ff94a21c0eba5 /Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty | |
parent | f050c0a04305c67056475697fe6f1131c2b4bc9e (diff) |
l3experimental
git-svn-id: svn://tug.org/texlive/trunk@47633 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty | 146 |
1 files changed, 64 insertions, 82 deletions
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty index 711e7bcd2d2..e2a1f762f08 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty @@ -20,7 +20,7 @@ %% %% File: l3str-convert.dtx Copyright (C) 2013-2018 The LaTeX3 Project \RequirePackage{expl3} -\ProvidesExplPackage{l3str-convert}{2018/03/05}{} +\ProvidesExplPackage{l3str-convert}{2018-04-30}{} {L3 Experimental string encoding conversions} \cs_if_exist:NF \use_ii_i:nn { \cs_new:Npn \use_ii_i:nn #1#2 { #2 #1 } } @@ -52,14 +52,14 @@ \prg_new_conditional:Npnn \__str_if_contains_char:NN #1#2 { T , TF } { \exp_after:wN \__str_if_contains_char_aux:NN \exp_after:wN #2 - #1 { \__prg_break:n { ? \fi: } } - \__prg_break_point: + #1 { \prg_break:n { ? \fi: } } + \prg_break_point: \prg_return_false: } \prg_new_conditional:Npnn \__str_if_contains_char:nN #1#2 { TF } { - \__str_if_contains_char_aux:NN #2 #1 { \__prg_break:n { ? \fi: } } - \__prg_break_point: + \__str_if_contains_char_aux:NN #2 #1 { \prg_break:n { ? \fi: } } + \prg_break_point: \prg_return_false: } \cs_new:Npn \__str_if_contains_char_aux:NN #1#2 @@ -70,7 +70,7 @@ \__str_if_contains_char_aux:NN #1 } \cs_new:Npn \__str_if_contains_char_true: - { \__prg_break:n { \prg_return_true: \use_none:n } } + { \prg_break:n { \prg_return_true: \use_none:n } } \prg_new_conditional:Npnn \__str_octal_use:N #1 { TF } { \if_int_compare:w 1 < '1 \token_to_str:N #1 \exp_stop_f: @@ -84,9 +84,7 @@ \if_int_compare:w 1 < "1 \token_to_str:N #1 \exp_stop_f: #1 \prg_return_true: \else: - \if_case:w \__int_eval:w - \exp_after:wN ` \token_to_str:N #1 - `a - \__int_eval_end: + \if_case:w \int_eval:n { \exp_after:wN ` \token_to_str:N #1 - `a } A \or: B \or: C @@ -118,18 +116,16 @@ { \exp_after:wN \exp_after:wN \exp_after:wN \use_i:nnn - \cs:w c__str_byte_ \__int_value:w \__int_eval:w + \cs:w c__str_byte_ \int_eval:w } \cs_new:Npn \__str_output_hexadecimal:n #1 - { \__str_output_hexadecimal:w #1 \__str_output_end: } -\cs_new:Npn \__str_output_hexadecimal:w { \exp_after:wN \exp_after:wN \exp_after:wN \use_none:n - \cs:w c__str_byte_ \__int_value:w \__int_eval:w + \cs:w c__str_byte_ \int_eval:n {#1} _tl \cs_end: } \cs_new:Npn \__str_output_end: - { \__int_eval_end: _tl \cs_end: } + { \scan_stop: _tl \cs_end: } \cs_new:Npn \__str_output_byte_pair_be:n #1 { \exp_args:Nf \__str_output_byte_pair:nnN @@ -152,8 +148,8 @@ { \exp_after:wN \__str_convert_gmap_loop:NN \exp_after:wN #1 - \g__str_result_tl { ? \__prg_break: } - \__prg_break_point: + \g__str_result_tl { ? \prg_break: } + \prg_break_point: } } \cs_new:Npn \__str_convert_gmap_loop:NN #1#2 @@ -168,8 +164,8 @@ { \exp_after:wN \__str_convert_gmap_internal_loop:Nww \exp_after:wN #1 - \g__str_result_tl \s__tl \q_stop \__prg_break: \s__tl - \__prg_break_point: + \g__str_result_tl \s__tl \q_stop \prg_break: \s__tl + \prg_break_point: } } \cs_new:Npn \__str_convert_gmap_internal_loop:Nww #1 #2 \s__tl #3 \s__tl @@ -214,7 +210,7 @@ { \group_begin: #1 - \tl_gset:Nx \g__str_result_tl { \__str_to_other_fast:n {#4} } + \tl_gset:Nx \g__str_result_tl { \__kernel_str_to_other_fast:n {#4} } \exp_after:wN \__str_convert:wwwnn \tl_to_str:n {#5} /// \q_stop { decode } { unescape } @@ -286,8 +282,8 @@ \cs_new:Npn \__str_convert_lowercase_alphanum:n #1 { \exp_after:wN \__str_convert_lowercase_alphanum_loop:N - \tl_to_str:n {#1} { ? \__prg_break: } - \__prg_break_point: + \tl_to_str:n {#1} { ? \prg_break: } + \prg_break_point: } \cs_new:Npn \__str_convert_lowercase_alphanum_loop:N #1 { @@ -336,8 +332,8 @@ \cs_new:Npn \__str_filter_bytes:n #1 { \__str_filter_bytes_aux:N #1 - { ? \__prg_break: } - \__prg_break_point: + { ? \prg_break: } + \prg_break_point: } \cs_new:Npn \__str_filter_bytes_aux:N #1 { @@ -372,57 +368,43 @@ \cs_new_protected:Npn \__str_convert_decode_: { \__str_convert_gmap:N \__str_decode_native_char:N } \cs_new:Npn \__str_decode_native_char:N #1 - { #1 \s__tl \__int_value:w `#1 \s__tl } -\group_begin: - \char_set_catcode_other:n { 0 } - \bool_lazy_any:nTF - { - \sys_if_engine_luatex_p: - \sys_if_engine_xetex_p: - } - { - \cs_new_protected:Npn \__str_convert_encode_: - { - \__tl_gbuild_x:Nw \g__str_result_tl - \exp_after:wN \__str_encode_native_loop:w - \g__str_result_tl \s__tl { \q_stop \__prg_break: } \s__tl - \__prg_break_point: - \__tl_build_end: - } - \cs_new_protected:Npn \__str_encode_native_loop:w #1 \s__tl #2 \s__tl - { - \use_none_delimit_by_q_stop:w #2 \q_stop - \exp_args:Nx \__tl_build_one:n - { \char_generate:nn {#2} {12} } - \__str_encode_native_loop:w - } - } - { - \cs_new_protected:Npn \__str_convert_encode_: - { - \flag_clear:n { str_error } - \__str_convert_gmap_internal:N \__str_encode_native_char:n - \__str_if_flag_error:nnx { str_error } - { pdfTeX-native-overflow } { } - } - \cs_new:Npn \__str_encode_native_char:n #1 - { - \if_int_compare:w #1 > \c__str_max_byte_int - \flag_raise:n { str_error } - ? - \else: - \__str_output_byte:n {#1} - \fi: - } - \__kernel_msg_new:nnnn { str } { pdfTeX-native-overflow } - { Character~code~too~large~for~pdfTeX. } - { - The~pdfTeX~engine~only~supports~8-bit~characters:~ - valid~character~codes~are~in~the~range~[0,255].~ - To~manipulate~arbitrary~Unicode,~use~LuaTeX~or~XeTeX. - } - } -\group_end: + { #1 \s__tl \int_value:w `#1 \s__tl } +\bool_lazy_any:nTF + { + \sys_if_engine_luatex_p: + \sys_if_engine_xetex_p: + } + { + \cs_new_protected:Npn \__str_convert_encode_: + { \__str_convert_gmap_internal:N \__str_encode_native_char:n } + \cs_new:Npn \__str_encode_native_char:n #1 + { \char_generate:nn {#1} {12} } + } + { + \cs_new_protected:Npn \__str_convert_encode_: + { + \flag_clear:n { str_error } + \__str_convert_gmap_internal:N \__str_encode_native_char:n + \__str_if_flag_error:nnx { str_error } + { native-overflow } { } + } + \cs_new:Npn \__str_encode_native_char:n #1 + { + \if_int_compare:w #1 > \c__str_max_byte_int + \flag_raise:n { str_error } + ? + \else: + \char_generate:nn {#1} {12} + \fi: + } + \__kernel_msg_new:nnnn { str } { native-overflow } + { Character~code~too~large~for~this~engine. } + { + This~engine~only~support~8-bit~characters:~ + valid~character~codes~are~in~the~range~[0,255].~ + To~manipulate~arbitrary~Unicode,~use~LuaTeX~or~XeTeX. + } + } \cs_new_protected:Npn \__str_convert_decode_clist: { \clist_gset:No \g__str_result_tl \g__str_result_tl @@ -456,12 +438,12 @@ \int_zero:N \l__str_internal_int \exp_last_unbraced:Nx \__str_decode_eight_bit_load:nn { \tl_use:c { c__str_encoding_#1_tl } } - { \q_stop \__prg_break: } { } - \__prg_break_point: + { \q_stop \prg_break: } { } + \prg_break_point: \exp_last_unbraced:Nx \__str_decode_eight_bit_load_missing:n { \tl_use:c { c__str_encoding_#1_missing_tl } } - { \q_stop \__prg_break: } - \__prg_break_point: + { \q_stop \prg_break: } + \prg_break_point: \flag_clear:n { str_error } \__str_convert_gmap:N \__str_decode_eight_bit_char:N \__str_if_flag_error:nnx { str_error } { decode-8-bit } {#1} @@ -472,7 +454,7 @@ \use_none_delimit_by_q_stop:w #1 \q_stop \tex_dimen:D "#1 = \l__str_internal_int sp \scan_stop: \tex_skip:D \l__str_internal_int = "#1 sp \scan_stop: - \tex_toks:D \l__str_internal_int \exp_after:wN { \__int_value:w "#2 } + \tex_toks:D \l__str_internal_int \exp_after:wN { \int_value:w "#2 } \int_incr:N \l__str_internal_int \__str_decode_eight_bit_load:nn } @@ -494,7 +476,7 @@ \tex_the:D \tex_toks:D \tex_dimen:D \fi: \fi: - \__int_value:w `#1 \s__tl + \int_value:w `#1 \s__tl } \cs_new_protected:Npn \__str_convert_encode_eight_bit:n #1 { @@ -502,8 +484,8 @@ \int_zero:N \l__str_internal_int \exp_last_unbraced:Nx \__str_encode_eight_bit_load:nn { \tl_use:c { c__str_encoding_#1_tl } } - { \q_stop \__prg_break: } { } - \__prg_break_point: + { \q_stop \prg_break: } { } + \prg_break_point: \flag_clear:n { str_error } \__str_convert_gmap_internal:N \__str_encode_eight_bit_char:n \__str_if_flag_error:nnx { str_error } { encode-8-bit } {#1} |