@@ -74,104 +74,51 @@ unescape_chars(String) ->
74
74
unescape_chars (String , fun unescape_map /1 ).
75
75
76
76
unescape_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 , <<>>).
80
78
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 );
82
81
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 );
86
84
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 );
90
87
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 );
93
90
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 );
97
93
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 );
101
96
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 );
105
99
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 );
109
102
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 ) ->
157
104
Msg = <<" missing hex sequence after \\ x" >>,
158
105
error ('Elixir.ArgumentError' :exception ([{message ,Msg }]));
159
106
160
- unescape_chars (<<$\\ ,Escaped ,Rest /binary >>, Map , Octals , Hex , Acc ) ->
107
+ unescape_chars (<<$\\ ,Escaped ,Rest /binary >>, Map , Hex , Acc ) ->
161
108
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 >>)
164
111
end ;
165
112
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 >>);
168
115
169
- unescape_chars (<<>>, _Map , _Octals , _Hex , Acc ) -> Acc .
116
+ unescape_chars (<<>>, _Map , _Hex , Acc ) -> Acc .
170
117
171
- append_escaped (Rest , Map , List , Octal , Hex , Acc , Base ) ->
118
+ append_escaped (Rest , Map , List , Hex , Acc , Base ) ->
172
119
Codepoint = list_to_integer (List , Base ),
173
120
try <<Acc /binary , Codepoint /utf8 >> of
174
- Binary -> unescape_chars (Rest , Map , Octal , Hex , Binary )
121
+ Binary -> unescape_chars (Rest , Map , Hex , Binary )
175
122
catch
176
123
error :badarg ->
177
124
Msg = <<" invalid or reserved unicode codepoint " , (integer_to_binary (Codepoint ))/binary >>,
0 commit comments