this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

refactor(utils): add LevelArgs::resolve to trim backend constructors

Every backend with a compression level had the same 3-line pattern in
its new(): instantiate validator, pull args.level_args.level.level,
clamp. Fold that into LevelArgs::resolve(&validator) so the six
level-aware backends (gzip, xz, bzip2, zstd, brotli, lzma) get cleaner
single-expression constructors.

+16 -30
+1 -4
src/backends/brotli.rs
··· 67 67 68 68 impl Brotli { 69 69 pub fn new(args: &BrotliArgs) -> Brotli { 70 - let validator = BrotliCompressionValidator; 71 - let level = validator.validate_and_clamp_level(args.level_args.level.level); 72 - 73 70 Brotli { 74 - compression_level: level, 71 + compression_level: args.level_args.resolve(&BrotliCompressionValidator), 75 72 progress_args: args.progress_args, 76 73 } 77 74 }
+1 -4
src/backends/bzip2.rs
··· 64 64 65 65 impl Bzip2 { 66 66 pub fn new(args: &Bzip2Args) -> Self { 67 - let validator = Bzip2CompressionValidator; 68 - let level = validator.validate_and_clamp_level(args.level_args.level.level); 69 - 70 67 Bzip2 { 71 - level, 68 + level: args.level_args.resolve(&Bzip2CompressionValidator), 72 69 progress_args: args.progress_args, 73 70 } 74 71 }
+1 -7
src/backends/gzip.rs
··· 35 35 36 36 impl Gzip { 37 37 pub fn new(args: &GzipArgs) -> Gzip { 38 - let validator = DefaultCompressionValidator; 39 - let level = args.level_args.level.level; 40 - 41 - // Validate and clamp the level to gzip's valid range 42 - let level = validator.validate_and_clamp_level(level); 43 - 44 38 Gzip { 45 - compression_level: level, 39 + compression_level: args.level_args.resolve(&DefaultCompressionValidator), 46 40 progress_args: args.progress_args, 47 41 } 48 42 }
+1 -4
src/backends/lzma.rs
··· 59 59 60 60 impl Lzma { 61 61 pub fn new(args: &LzmaArgs) -> Lzma { 62 - let validator = DefaultCompressionValidator; 63 - let level = validator.validate_and_clamp_level(args.level_args.level.level); 64 - 65 62 Lzma { 66 - level, 63 + level: args.level_args.resolve(&DefaultCompressionValidator), 67 64 progress_args: args.progress_args, 68 65 } 69 66 }
+1 -4
src/backends/xz.rs
··· 37 37 38 38 impl Xz { 39 39 pub fn new(args: &XzArgs) -> Xz { 40 - let validator = DefaultCompressionValidator; 41 - let level = validator.validate_and_clamp_level(args.level_args.level.level); 42 - 43 40 Xz { 44 - level, 41 + level: args.level_args.resolve(&DefaultCompressionValidator), 45 42 progress_args: args.progress_args, 46 43 } 47 44 }
+1 -7
src/backends/zstd.rs
··· 59 59 60 60 impl Zstd { 61 61 pub fn new(args: &ZstdArgs) -> Zstd { 62 - let validator = ZstdCompressionValidator; 63 - let mut level = args.level_args.level.level; 64 - 65 - // Validate and clamp the level to zstd's valid range 66 - level = validator.validate_and_clamp_level(level); 67 - 68 62 Zstd { 69 - compression_level: level, 63 + compression_level: args.level_args.resolve(&ZstdCompressionValidator), 70 64 progress_args: args.progress_args, 71 65 } 72 66 }
+10
src/utils.rs
··· 155 155 pub level: CompressionLevel, 156 156 } 157 157 158 + impl LevelArgs { 159 + /// Resolve the user-requested compression level against a codec-specific 160 + /// validator, clamping to the validator's range. This is the standard way 161 + /// for a backend to turn `--level N` into a concrete integer it can pass 162 + /// to the underlying library. 163 + pub fn resolve(&self, validator: &impl CompressionLevelValidator) -> i32 { 164 + validator.validate_and_clamp_level(self.level.level) 165 + } 166 + } 167 + 158 168 /// Common interface for all compressor implementations 159 169 #[allow(unused_variables)] 160 170 pub trait Compressor: Send + Sync {