@@ -74,104 +74,51 @@ unescape_chars(String) ->
7474 unescape_chars (String , fun unescape_map /1 ).
7575
7676unescape_chars (String , Map ) ->
77- Octals = Map ($0 ) /= false ,
78- Hex = Map ($x ) == true ,
79- unescape_chars (String , Map , Octals , Hex , <<>>).
77+ unescape_chars (String , Map , Map ($x ) == true , <<>>).
8078
81- % % Deprecated
79+ unescape_chars (<<$\\ ,$x ,A ,B ,Rest /binary >>, Map , true , Acc ) when ? is_hex (A ), ? is_hex (B ) ->
80+ append_escaped (Rest , Map , [A ,B ], true , Acc , 16 );
8281
83- unescape_chars (<<$\\ ,A ,B ,C ,Rest /binary >>, Map , true , Hex , Acc ) when ? is_octal (A ), A =< $3 , ? is_octal (B ), ? is_octal (C ) ->
84- io :format (standard_error , " warning: octals inside strings/sigils/chars are deprecated, got: \\ ~ts~n " , [<<A , B , C >>]),
85- append_escaped (Rest , Map , [A ,B ,C ], true , Hex , Acc , 8 );
82+ unescape_chars (<<$\\ ,$x ,A ,Rest /binary >>, Map , true , Acc ) when ? is_hex (A ) ->
83+ append_escaped (Rest , Map , [A ], true , Acc , 16 );
8684
87- unescape_chars (<<$\\ ,A ,B ,Rest /binary >>, Map , true , Hex , Acc ) when ? is_octal (A ), ? is_octal (B ) ->
88- io :format (standard_error , " warning: octals inside strings/sigils/chars are deprecated, got: \\ ~ts~n " , [<<A , B >>]),
89- append_escaped (Rest , Map , [A ,B ], true , Hex , Acc , 8 );
85+ unescape_chars (<<$\\ ,$x ,${ ,A ,$} ,Rest /binary >>, Map , true , Acc ) when ? is_hex (A ) ->
86+ append_escaped (Rest , Map , [A ], true , Acc , 16 );
9087
91- unescape_chars (<<$\\ ,$0 , Rest /binary >>, Map , true , Hex , Acc ) ->
92- append_escaped (Rest , Map , [$0 ], true , Hex , Acc , 8 );
88+ unescape_chars (<<$\\ ,$x , ${ , A , B , $} , Rest /binary >>, Map , true , Acc ) when ? is_hex ( A ), ? is_hex ( B ) ->
89+ append_escaped (Rest , Map , [A , B ], true , Acc , 16 );
9390
94- unescape_chars (<<$\\ ,A ,Rest /binary >>, Map , true , Hex , Acc ) when ? is_octal (A ) ->
95- io :format (standard_error , " warning: octals inside strings/sigils/chars are deprecated, got: \\ ~ts~n " , [<<A >>]),
96- append_escaped (Rest , Map , [A ], true , Hex , Acc , 8 );
91+ unescape_chars (<<$\\ ,$x ,${ ,A ,B ,C ,$} ,Rest /binary >>, Map , true , Acc ) when ? is_hex (A ), ? is_hex (B ), ? is_hex (C ) ->
92+ append_escaped (Rest , Map , [A ,B ,C ], true , Acc , 16 );
9793
98- unescape_chars (<<$\\ ,$X ,A ,B ,Rest /binary >>, Map , Octal , true , Acc ) when ? is_hex (A ), ? is_hex (B ) ->
99- io :format (standard_error , " warning: \\ X inside strings/sigils/chars is deprecated, please use \\ x instead~n " , []),
100- append_escaped (Rest , Map , [A ,B ], Octal , true , Acc , 16 );
94+ unescape_chars (<<$\\ ,$x ,${ ,A ,B ,C ,D ,$} ,Rest /binary >>, Map , true , Acc ) when ? is_hex (A ), ? is_hex (B ), ? is_hex (C ), ? is_hex (D ) ->
95+ append_escaped (Rest , Map , [A ,B ,C ,D ], true , Acc , 16 );
10196
102- unescape_chars (<<$\\ ,$X ,A ,Rest /binary >>, Map , Octal , true , Acc ) when ? is_hex (A ) ->
103- io :format (standard_error , " warning: \\ X inside strings/sigils/chars is deprecated, please use \\ x instead~n " , []),
104- append_escaped (Rest , Map , [A ], Octal , true , Acc , 16 );
97+ unescape_chars (<<$\\ ,$x ,${ ,A ,B ,C ,D ,E ,$} ,Rest /binary >>, Map , true , Acc ) when ? is_hex (A ), ? is_hex (B ), ? is_hex (C ), ? is_hex (D ), ? is_hex (E ) ->
98+ append_escaped (Rest , Map , [A ,B ,C ,D ,E ], true , Acc , 16 );
10599
106- unescape_chars (<<$\\ ,$X ,${ ,A ,$} ,Rest /binary >>, Map , Octal , true , Acc ) when ? is_hex (A ) ->
107- io :format (standard_error , " warning: \\ X inside strings/sigils/chars is deprecated, please use \\ x instead~n " , []),
108- append_escaped (Rest , Map , [A ], Octal , true , Acc , 16 );
100+ unescape_chars (<<$\\ ,$x ,${ ,A ,B ,C ,D ,E ,F ,$} ,Rest /binary >>, Map , true , Acc ) when ? is_hex (A ), ? is_hex (B ), ? is_hex (C ), ? is_hex (D ), ? is_hex (E ), ? is_hex (F ) ->
101+ append_escaped (Rest , Map , [A ,B ,C ,D ,E ,F ], true , Acc , 16 );
109102
110- unescape_chars (<<$\\ ,$X ,${ ,A ,B ,$} ,Rest /binary >>, Map , Octal , true , Acc ) when ? is_hex (A ), ? is_hex (B ) ->
111- io :format (standard_error , " warning: \\ X inside strings/sigils/chars is deprecated, please use \\ x instead~n " , []),
112- append_escaped (Rest , Map , [A ,B ], Octal , true , Acc , 16 );
113-
114- unescape_chars (<<$\\ ,$X ,${ ,A ,B ,C ,$} ,Rest /binary >>, Map , Octal , true , Acc ) when ? is_hex (A ), ? is_hex (B ), ? is_hex (C ) ->
115- io :format (standard_error , " warning: \\ X inside strings/sigils/chars is deprecated, please use \\ x instead~n " , []),
116- append_escaped (Rest , Map , [A ,B ,C ], Octal , true , Acc , 16 );
117-
118- unescape_chars (<<$\\ ,$X ,${ ,A ,B ,C ,D ,$} ,Rest /binary >>, Map , Octal , true , Acc ) when ? is_hex (A ), ? is_hex (B ), ? is_hex (C ), ? is_hex (D ) ->
119- io :format (standard_error , " warning: \\ X inside strings/sigils/chars is deprecated, please use \\ x instead~n " , []),
120- append_escaped (Rest , Map , [A ,B ,C ,D ], Octal , true , Acc , 16 );
121-
122- unescape_chars (<<$\\ ,$X ,${ ,A ,B ,C ,D ,E ,$} ,Rest /binary >>, Map , Octal , true , Acc ) when ? is_hex (A ), ? is_hex (B ), ? is_hex (C ), ? is_hex (D ), ? is_hex (E ) ->
123- io :format (standard_error , " warning: \\ X inside strings/sigils/chars is deprecated, please use \\ x instead~n " , []),
124- append_escaped (Rest , Map , [A ,B ,C ,D ,E ], Octal , true , Acc , 16 );
125-
126- unescape_chars (<<$\\ ,$X ,${ ,A ,B ,C ,D ,E ,F ,$} ,Rest /binary >>, Map , Octal , true , Acc ) when ? is_hex (A ), ? is_hex (B ), ? is_hex (C ), ? is_hex (D ), ? is_hex (E ), ? is_hex (F ) ->
127- io :format (standard_error , " warning: \\ X inside strings/sigils/chars is deprecated, please use \\ x instead~n " , []),
128- append_escaped (Rest , Map , [A ,B ,C ,D ,E ,F ], Octal , true , Acc , 16 );
129-
130- % % End of deprecated
131-
132- unescape_chars (<<$\\ ,$x ,A ,B ,Rest /binary >>, Map , Octal , true , Acc ) when ? is_hex (A ), ? is_hex (B ) ->
133- append_escaped (Rest , Map , [A ,B ], Octal , true , Acc , 16 );
134-
135- unescape_chars (<<$\\ ,$x ,A ,Rest /binary >>, Map , Octal , true , Acc ) when ? is_hex (A ) ->
136- append_escaped (Rest , Map , [A ], Octal , true , Acc , 16 );
137-
138- unescape_chars (<<$\\ ,$x ,${ ,A ,$} ,Rest /binary >>, Map , Octal , true , Acc ) when ? is_hex (A ) ->
139- append_escaped (Rest , Map , [A ], Octal , true , Acc , 16 );
140-
141- unescape_chars (<<$\\ ,$x ,${ ,A ,B ,$} ,Rest /binary >>, Map , Octal , true , Acc ) when ? is_hex (A ), ? is_hex (B ) ->
142- append_escaped (Rest , Map , [A ,B ], Octal , true , Acc , 16 );
143-
144- unescape_chars (<<$\\ ,$x ,${ ,A ,B ,C ,$} ,Rest /binary >>, Map , Octal , true , Acc ) when ? is_hex (A ), ? is_hex (B ), ? is_hex (C ) ->
145- append_escaped (Rest , Map , [A ,B ,C ], Octal , true , Acc , 16 );
146-
147- unescape_chars (<<$\\ ,$x ,${ ,A ,B ,C ,D ,$} ,Rest /binary >>, Map , Octal , true , Acc ) when ? is_hex (A ), ? is_hex (B ), ? is_hex (C ), ? is_hex (D ) ->
148- append_escaped (Rest , Map , [A ,B ,C ,D ], Octal , true , Acc , 16 );
149-
150- unescape_chars (<<$\\ ,$x ,${ ,A ,B ,C ,D ,E ,$} ,Rest /binary >>, Map , Octal , true , Acc ) when ? is_hex (A ), ? is_hex (B ), ? is_hex (C ), ? is_hex (D ), ? is_hex (E ) ->
151- append_escaped (Rest , Map , [A ,B ,C ,D ,E ], Octal , true , Acc , 16 );
152-
153- unescape_chars (<<$\\ ,$x ,${ ,A ,B ,C ,D ,E ,F ,$} ,Rest /binary >>, Map , Octal , true , Acc ) when ? is_hex (A ), ? is_hex (B ), ? is_hex (C ), ? is_hex (D ), ? is_hex (E ), ? is_hex (F ) ->
154- append_escaped (Rest , Map , [A ,B ,C ,D ,E ,F ], Octal , true , Acc , 16 );
155-
156- unescape_chars (<<$\\ ,$x ,_ /binary >>, _Map , _Octal , true , _Acc ) ->
103+ unescape_chars (<<$\\ ,$x ,_ /binary >>, _Map , true , _Acc ) ->
157104 Msg = <<" missing hex sequence after \\ x" >>,
158105 error ('Elixir.ArgumentError' :exception ([{message ,Msg }]));
159106
160- unescape_chars (<<$\\ ,Escaped ,Rest /binary >>, Map , Octals , Hex , Acc ) ->
107+ unescape_chars (<<$\\ ,Escaped ,Rest /binary >>, Map , Hex , Acc ) ->
161108 case Map (Escaped ) of
162- false -> unescape_chars (Rest , Map , Octals , Hex , <<Acc /binary , $\\ , Escaped >>);
163- Other -> unescape_chars (Rest , Map , Octals , Hex , <<Acc /binary , Other >>)
109+ false -> unescape_chars (Rest , Map , Hex , <<Acc /binary , $\\ , Escaped >>);
110+ Other -> unescape_chars (Rest , Map , Hex , <<Acc /binary , Other >>)
164111 end ;
165112
166- unescape_chars (<<Char , Rest /binary >>, Map , Octals , Hex , Acc ) ->
167- unescape_chars (Rest , Map , Octals , Hex , <<Acc /binary , Char >>);
113+ unescape_chars (<<Char , Rest /binary >>, Map , Hex , Acc ) ->
114+ unescape_chars (Rest , Map , Hex , <<Acc /binary , Char >>);
168115
169- unescape_chars (<<>>, _Map , _Octals , _Hex , Acc ) -> Acc .
116+ unescape_chars (<<>>, _Map , _Hex , Acc ) -> Acc .
170117
171- append_escaped (Rest , Map , List , Octal , Hex , Acc , Base ) ->
118+ append_escaped (Rest , Map , List , Hex , Acc , Base ) ->
172119 Codepoint = list_to_integer (List , Base ),
173120 try <<Acc /binary , Codepoint /utf8 >> of
174- Binary -> unescape_chars (Rest , Map , Octal , Hex , Binary )
121+ Binary -> unescape_chars (Rest , Map , Hex , Binary )
175122 catch
176123 error :badarg ->
177124 Msg = <<" invalid or reserved unicode codepoint " , (integer_to_binary (Codepoint ))/binary >>,
0 commit comments