|
1 | 1 | use data_encoding::{Encoding, Specification}; |
2 | 2 | use std::sync::OnceLock; |
3 | 3 |
|
4 | | -use super::Codec; |
5 | 4 | use super::util; |
| 5 | +use super::Codec; |
6 | 6 | use crate::error::{MbaseError, Result}; |
7 | 7 | use crate::types::{CaseSensitivity, CodecMeta, DetectCandidate, Mode, PaddingRule}; |
8 | 8 |
|
@@ -67,8 +67,7 @@ fn decode_base32( |
67 | 67 | match mode { |
68 | 68 | Mode::Strict => { |
69 | 69 | let e = if expects_padding { pad_enc } else { enc }; |
70 | | - e.decode(cleaned.as_bytes()) |
71 | | - .map_err(|e| MbaseError::invalid_input(e.to_string())) |
| 70 | + e.decode(cleaned.as_bytes()).map_err(|e| MbaseError::invalid_input(e.to_string())) |
72 | 71 | } |
73 | 72 | Mode::Lenient => { |
74 | 73 | let normalized = if is_lowercase { |
@@ -180,59 +179,123 @@ macro_rules! impl_base32_codec { |
180 | 179 | } |
181 | 180 |
|
182 | 181 | impl_base32_codec!( |
183 | | - Base32Lower, "base32lower", &["base32", "b32"], RFC4648_LOWER, Some('b'), |
184 | | - CaseSensitivity::Lower, PaddingRule::None, false, true, |
| 182 | + Base32Lower, |
| 183 | + "base32lower", |
| 184 | + &["base32", "b32"], |
| 185 | + RFC4648_LOWER, |
| 186 | + Some('b'), |
| 187 | + CaseSensitivity::Lower, |
| 188 | + PaddingRule::None, |
| 189 | + false, |
| 190 | + true, |
185 | 191 | "RFC4648 Base32 lowercase without padding", |
186 | | - get_base32_lower, get_base32_pad_lower |
| 192 | + get_base32_lower, |
| 193 | + get_base32_pad_lower |
187 | 194 | ); |
188 | 195 |
|
189 | 196 | impl_base32_codec!( |
190 | | - Base32Upper, "base32upper", &["B32"], RFC4648_UPPER, Some('B'), |
191 | | - CaseSensitivity::Upper, PaddingRule::None, false, false, |
| 197 | + Base32Upper, |
| 198 | + "base32upper", |
| 199 | + &["B32"], |
| 200 | + RFC4648_UPPER, |
| 201 | + Some('B'), |
| 202 | + CaseSensitivity::Upper, |
| 203 | + PaddingRule::None, |
| 204 | + false, |
| 205 | + false, |
192 | 206 | "RFC4648 Base32 uppercase without padding", |
193 | | - get_base32_upper, get_base32_pad_upper |
| 207 | + get_base32_upper, |
| 208 | + get_base32_pad_upper |
194 | 209 | ); |
195 | 210 |
|
196 | 211 | impl_base32_codec!( |
197 | | - Base32PadLower, "base32padlower", &["base32pad", "b32pad"], RFC4648_LOWER, Some('c'), |
198 | | - CaseSensitivity::Lower, PaddingRule::Required, true, true, |
| 212 | + Base32PadLower, |
| 213 | + "base32padlower", |
| 214 | + &["base32pad", "b32pad"], |
| 215 | + RFC4648_LOWER, |
| 216 | + Some('c'), |
| 217 | + CaseSensitivity::Lower, |
| 218 | + PaddingRule::Required, |
| 219 | + true, |
| 220 | + true, |
199 | 221 | "RFC4648 Base32 lowercase with padding", |
200 | | - get_base32_lower, get_base32_pad_lower |
| 222 | + get_base32_lower, |
| 223 | + get_base32_pad_lower |
201 | 224 | ); |
202 | 225 |
|
203 | 226 | impl_base32_codec!( |
204 | | - Base32PadUpper, "base32padupper", &["B32PAD"], RFC4648_UPPER, Some('C'), |
205 | | - CaseSensitivity::Upper, PaddingRule::Required, true, false, |
| 227 | + Base32PadUpper, |
| 228 | + "base32padupper", |
| 229 | + &["B32PAD"], |
| 230 | + RFC4648_UPPER, |
| 231 | + Some('C'), |
| 232 | + CaseSensitivity::Upper, |
| 233 | + PaddingRule::Required, |
| 234 | + true, |
| 235 | + false, |
206 | 236 | "RFC4648 Base32 uppercase with padding", |
207 | | - get_base32_upper, get_base32_pad_upper |
| 237 | + get_base32_upper, |
| 238 | + get_base32_pad_upper |
208 | 239 | ); |
209 | 240 |
|
210 | 241 | impl_base32_codec!( |
211 | | - Base32HexLower, "base32hexlower", &["base32hex", "b32hex"], HEX_LOWER, Some('v'), |
212 | | - CaseSensitivity::Lower, PaddingRule::None, false, true, |
| 242 | + Base32HexLower, |
| 243 | + "base32hexlower", |
| 244 | + &["base32hex", "b32hex"], |
| 245 | + HEX_LOWER, |
| 246 | + Some('v'), |
| 247 | + CaseSensitivity::Lower, |
| 248 | + PaddingRule::None, |
| 249 | + false, |
| 250 | + true, |
213 | 251 | "RFC4648 Base32hex lowercase without padding", |
214 | | - get_base32_hex_lower, get_base32_hex_pad_lower |
| 252 | + get_base32_hex_lower, |
| 253 | + get_base32_hex_pad_lower |
215 | 254 | ); |
216 | 255 |
|
217 | 256 | impl_base32_codec!( |
218 | | - Base32HexUpper, "base32hexupper", &["B32HEX"], HEX_UPPER, Some('V'), |
219 | | - CaseSensitivity::Upper, PaddingRule::None, false, false, |
| 257 | + Base32HexUpper, |
| 258 | + "base32hexupper", |
| 259 | + &["B32HEX"], |
| 260 | + HEX_UPPER, |
| 261 | + Some('V'), |
| 262 | + CaseSensitivity::Upper, |
| 263 | + PaddingRule::None, |
| 264 | + false, |
| 265 | + false, |
220 | 266 | "RFC4648 Base32hex uppercase without padding", |
221 | | - get_base32_hex_upper, get_base32_hex_pad_upper |
| 267 | + get_base32_hex_upper, |
| 268 | + get_base32_hex_pad_upper |
222 | 269 | ); |
223 | 270 |
|
224 | 271 | impl_base32_codec!( |
225 | | - Base32HexPadLower, "base32hexpadlower", &["base32hexpad", "b32hexpad"], HEX_LOWER, Some('t'), |
226 | | - CaseSensitivity::Lower, PaddingRule::Required, true, true, |
| 272 | + Base32HexPadLower, |
| 273 | + "base32hexpadlower", |
| 274 | + &["base32hexpad", "b32hexpad"], |
| 275 | + HEX_LOWER, |
| 276 | + Some('t'), |
| 277 | + CaseSensitivity::Lower, |
| 278 | + PaddingRule::Required, |
| 279 | + true, |
| 280 | + true, |
227 | 281 | "RFC4648 Base32hex lowercase with padding", |
228 | | - get_base32_hex_lower, get_base32_hex_pad_lower |
| 282 | + get_base32_hex_lower, |
| 283 | + get_base32_hex_pad_lower |
229 | 284 | ); |
230 | 285 |
|
231 | 286 | impl_base32_codec!( |
232 | | - Base32HexPadUpper, "base32hexpadupper", &["B32HEXPAD"], HEX_UPPER, Some('T'), |
233 | | - CaseSensitivity::Upper, PaddingRule::Required, true, false, |
| 287 | + Base32HexPadUpper, |
| 288 | + "base32hexpadupper", |
| 289 | + &["B32HEXPAD"], |
| 290 | + HEX_UPPER, |
| 291 | + Some('T'), |
| 292 | + CaseSensitivity::Upper, |
| 293 | + PaddingRule::Required, |
| 294 | + true, |
| 295 | + false, |
234 | 296 | "RFC4648 Base32hex uppercase with padding", |
235 | | - get_base32_hex_upper, get_base32_hex_pad_upper |
| 297 | + get_base32_hex_upper, |
| 298 | + get_base32_hex_pad_upper |
236 | 299 | ); |
237 | 300 |
|
238 | 301 | #[cfg(test)] |
|
0 commit comments