Class: CSSminify2Enhanced::Compressor
- Inherits:
-
Object
- Object
- CSSminify2Enhanced::Compressor
- Defined in:
- lib/cssminify2/enhanced.rb
Overview
Enhanced compressor with new features
Instance Attribute Summary collapse
-
#config ⇒ Object
readonly
Returns the value of attribute config.
-
#statistics ⇒ Object
readonly
Returns the value of attribute statistics.
Instance Method Summary collapse
- #compress(css, linebreakpos = 5000) ⇒ Object
-
#initialize(config = Configuration.new) ⇒ Compressor
constructor
A new instance of Compressor.
Constructor Details
#initialize(config = Configuration.new) ⇒ Compressor
Returns a new instance of Compressor.
61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/cssminify2/enhanced.rb', line 61 def initialize(config = Configuration.new) @config = config @statistics = { original_size: 0, compressed_size: 0, compression_ratio: 0.0, selectors_merged: 0, properties_optimized: 0, colors_converted: 0 } end |
Instance Attribute Details
#config ⇒ Object (readonly)
Returns the value of attribute config.
59 60 61 |
# File 'lib/cssminify2/enhanced.rb', line 59 def config @config end |
#statistics ⇒ Object (readonly)
Returns the value of attribute statistics.
59 60 61 |
# File 'lib/cssminify2/enhanced.rb', line 59 def statistics @statistics end |
Instance Method Details
#compress(css, linebreakpos = 5000) ⇒ Object
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/cssminify2/enhanced.rb', line 73 def compress(css, linebreakpos = 5000) @statistics[:original_size] = css.length begin # Validate CSS structure before processing validate_css_structure(css) if @config.strict_error_handling # Start with the original compression to maintain compatibility result = CssCompressor.compress(css, linebreakpos) # Apply enhanced optimizations if enabled if any_enhancements_enabled? result = apply_enhanced_optimizations_safely(result) end @statistics[:compressed_size] = result.length @statistics[:compression_ratio] = calculate_compression_ratio result rescue => e if @config.strict_error_handling raise EnhancedCompressionError.new("Enhanced compression failed: #{e.message}", e) else # Graceful fallback to original compressor fallback_result = safe_fallback_compression(css, linebreakpos) @statistics[:compressed_size] = fallback_result.length @statistics[:compression_ratio] = calculate_compression_ratio @statistics[:fallback_used] = true fallback_result end end end |