@@ -75,42 +75,88 @@ unescape_chars(String) ->
75
75
76
76
unescape_chars (String , Map ) ->
77
77
Octals = Map ($0 ) /= false ,
78
- Hex = Map ($x ) /= false ,
78
+ Hex = Map ($x ) == true ,
79
79
unescape_chars (String , Map , Octals , Hex , <<>>).
80
80
81
+ % % Deprecated
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 >>]),
82
85
append_escaped (Rest , Map , [A ,B ,C ], true , Hex , Acc , 8 );
83
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 >>]),
85
89
append_escaped (Rest , Map , [A ,B ], true , Hex , Acc , 8 );
86
90
91
+ unescape_chars (<<$\\ ,$0 ,Rest /binary >>, Map , true , Hex , Acc ) ->
92
+ append_escaped (Rest , Map , [$0 ], true , Hex , Acc , 8 );
93
+
87
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 >>]),
88
96
append_escaped (Rest , Map , [A ], true , Hex , Acc , 8 );
89
97
90
- unescape_chars (<<$\\ ,P ,A ,B ,Rest /binary >>, Map , Octal , true , Acc ) when (P == $x orelse P == $X ), ? is_hex (A ), ? is_hex (B ) ->
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 " , []),
91
100
append_escaped (Rest , Map , [A ,B ], Octal , true , Acc , 16 );
92
101
93
- unescape_chars (<<$\\ ,P ,A ,Rest /binary >>, Map , Octal , true , Acc ) when (P == $x orelse P == $X ), ? is_hex (A ) ->
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 " , []),
94
104
append_escaped (Rest , Map , [A ], Octal , true , Acc , 16 );
95
105
96
- unescape_chars (<<$\\ ,P ,${ ,A ,$} ,Rest /binary >>, Map , Octal , true , Acc ) when (P == $x orelse P == $X ), ? is_hex (A ) ->
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 " , []),
97
108
append_escaped (Rest , Map , [A ], Octal , true , Acc , 16 );
98
109
99
- unescape_chars (<<$\\ ,P ,${ ,A ,B ,$} ,Rest /binary >>, Map , Octal , true , Acc ) when (P == $x orelse P == $X ), ? is_hex (A ), ? is_hex (B ) ->
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 " , []),
100
112
append_escaped (Rest , Map , [A ,B ], Octal , true , Acc , 16 );
101
113
102
- unescape_chars (<<$\\ ,P ,${ ,A ,B ,C ,$} ,Rest /binary >>, Map , Octal , true , Acc ) when (P == $x orelse P == $X ), ? is_hex (A ), ? is_hex (B ), ? is_hex (C ) ->
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 " , []),
103
116
append_escaped (Rest , Map , [A ,B ,C ], Octal , true , Acc , 16 );
104
117
105
- unescape_chars (<<$\\ ,P ,${ ,A ,B ,C ,D ,$} ,Rest /binary >>, Map , Octal , true , Acc ) when (P == $x orelse P == $X ), ? is_hex (A ), ? is_hex (B ), ? is_hex (C ), ? is_hex (D ) ->
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 " , []),
106
120
append_escaped (Rest , Map , [A ,B ,C ,D ], Octal , true , Acc , 16 );
107
121
108
- unescape_chars (<<$\\ ,P ,${ ,A ,B ,C ,D ,E ,$} ,Rest /binary >>, Map , Octal , true , Acc ) when (P == $x orelse P == $X ), ? is_hex (A ), ? is_hex (B ), ? is_hex (C ), ? is_hex (D ), ? is_hex (E ) ->
109
- append_escaped (Rest , Map , [A ,B ,C ,D ,E ], Octal , true , Acc , 16 );
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 );
110
125
111
- unescape_chars (<<$\\ ,P ,${ ,A ,B ,C ,D ,E ,F ,$} ,Rest /binary >>, Map , Octal , true , Acc ) when (P == $x orelse P == $X ), ? is_hex (A ), ? is_hex (B ), ? is_hex (C ), ? is_hex (D ), ? is_hex (E ), ? is_hex (F ) ->
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 " , []),
112
128
append_escaped (Rest , Map , [A ,B ,C ,D ,E ,F ], Octal , true , Acc , 16 );
113
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 ) ->
157
+ Msg = <<" missing hex sequence after \\ x" >>,
158
+ error ('Elixir.ArgumentError' :exception ([{message ,Msg }]));
159
+
114
160
unescape_chars (<<$\\ ,Escaped ,Rest /binary >>, Map , Octals , Hex , Acc ) ->
115
161
case Map (Escaped ) of
116
162
false -> unescape_chars (Rest , Map , Octals , Hex , <<Acc /binary , $\\ , Escaped >>);
@@ -134,6 +180,7 @@ append_escaped(Rest, Map, List, Octal, Hex, Acc, Base) ->
134
180
135
181
% Unescape Helpers
136
182
183
+ unescape_map ($0 ) -> 0 ;
137
184
unescape_map ($a ) -> 7 ;
138
185
unescape_map ($b ) -> $\b ;
139
186
unescape_map ($d ) -> $\d ;
@@ -144,6 +191,7 @@ unescape_map($r) -> $\r;
144
191
unescape_map ($s ) -> $\s ;
145
192
unescape_map ($t ) -> $\t ;
146
193
unescape_map ($v ) -> $\v ;
194
+ unescape_map ($x ) -> true ;
147
195
unescape_map (E ) -> E .
148
196
149
197
% Extract Helpers
0 commit comments