Class: Jekyll::Minifier::CompressionConfig
- Inherits:
-
Object
- Object
- Jekyll::Minifier::CompressionConfig
- Defined in:
- lib/jekyll-minifier.rb
Overview
Configuration manager class that eliminates repetitive configuration handling Provides clean accessors while maintaining 100% backward compatibility
Constant Summary collapse
- CONFIG_ROOT =
Configuration key constants to eliminate magic strings
'jekyll-minifier'- HTML_REMOVE_SPACES_INSIDE_TAGS =
HTML Compression Options
'remove_spaces_inside_tags'- HTML_REMOVE_MULTI_SPACES =
'remove_multi_spaces'- HTML_REMOVE_COMMENTS =
'remove_comments'- HTML_REMOVE_INTERTAG_SPACES =
'remove_intertag_spaces'- HTML_REMOVE_QUOTES =
'remove_quotes'- HTML_COMPRESS_CSS =
'compress_css'- HTML_COMPRESS_JAVASCRIPT =
'compress_javascript'- HTML_SIMPLE_DOCTYPE =
'simple_doctype'- HTML_REMOVE_SCRIPT_ATTRIBUTES =
'remove_script_attributes'- HTML_REMOVE_STYLE_ATTRIBUTES =
'remove_style_attributes'- HTML_REMOVE_LINK_ATTRIBUTES =
'remove_link_attributes'- HTML_REMOVE_FORM_ATTRIBUTES =
'remove_form_attributes'- HTML_REMOVE_INPUT_ATTRIBUTES =
'remove_input_attributes'- HTML_REMOVE_JAVASCRIPT_PROTOCOL =
'remove_javascript_protocol'- HTML_REMOVE_HTTP_PROTOCOL =
'remove_http_protocol'- HTML_REMOVE_HTTPS_PROTOCOL =
'remove_https_protocol'- HTML_PRESERVE_LINE_BREAKS =
'preserve_line_breaks'- HTML_SIMPLE_BOOLEAN_ATTRIBUTES =
'simple_boolean_attributes'- HTML_COMPRESS_JS_TEMPLATES =
'compress_js_templates'- COMPRESS_CSS =
File Type Compression Toggles
'compress_css'- COMPRESS_JAVASCRIPT =
'compress_javascript'- COMPRESS_JSON =
'compress_json'- CSS_MERGE_DUPLICATE_SELECTORS =
Enhanced CSS Compression Options (cssminify2 v2.1.0+)
'css_merge_duplicate_selectors'- CSS_OPTIMIZE_SHORTHAND_PROPERTIES =
'css_optimize_shorthand_properties'- CSS_ADVANCED_COLOR_OPTIMIZATION =
'css_advanced_color_optimization'- CSS_PRESERVE_IE_HACKS =
'css_preserve_ie_hacks'- CSS_COMPRESS_VARIABLES =
'css_compress_variables'- CSS_ENHANCED_MODE =
'css_enhanced_mode'- TERSER_ARGS =
JavaScript/Terser Configuration
'terser_args'- UGLIFIER_ARGS =
Backward compatibility
'uglifier_args'- PRESERVE_PATTERNS =
Pattern Preservation
'preserve_patterns'- PRESERVE_PHP =
'preserve_php'- EXCLUDE =
File Exclusions
'exclude'
Instance Method Summary collapse
-
#compress_css? ⇒ Boolean
File Type Compression Toggles.
- #compress_javascript? ⇒ Boolean
- #compress_json? ⇒ Boolean
-
#css_enhanced_options ⇒ Object
Generate enhanced CSS compression options hash.
-
#exclude_patterns ⇒ Object
File Exclusions.
- #has_terser_args? ⇒ Boolean
-
#html_compressor_args ⇒ Object
Generate HTML compressor arguments hash Maintains exact same behavior as original implementation.
-
#initialize(site_config) ⇒ CompressionConfig
constructor
A new instance of CompressionConfig.
- #php_preserve_pattern ⇒ Object
-
#preserve_patterns ⇒ Object
Pattern Preservation.
- #preserve_php? ⇒ Boolean
-
#terser_args ⇒ Object
JavaScript/Terser Configuration.
Constructor Details
#initialize(site_config) ⇒ CompressionConfig
Returns a new instance of CompressionConfig.
558 559 560 561 562 563 564 565 566 567 568 569 570 |
# File 'lib/jekyll-minifier.rb', line 558 def initialize(site_config) @config = site_config || {} @raw_minifier_config = @config[CONFIG_ROOT] || {} # Validate and sanitize the configuration @minifier_config = validate_configuration(@raw_minifier_config) # Pre-compute commonly used values for performance @computed_values = {} # Pre-compile terser arguments for JavaScript compression _compute_terser_args end |
Instance Method Details
#compress_css? ⇒ Boolean
File Type Compression Toggles
601 602 603 |
# File 'lib/jekyll-minifier.rb', line 601 def compress_css? get_boolean(COMPRESS_CSS, true) # Default to true end |
#compress_javascript? ⇒ Boolean
605 606 607 |
# File 'lib/jekyll-minifier.rb', line 605 def compress_javascript? get_boolean(COMPRESS_JAVASCRIPT, true) # Default to true end |
#compress_json? ⇒ Boolean
609 610 611 |
# File 'lib/jekyll-minifier.rb', line 609 def compress_json? get_boolean(COMPRESS_JSON, true) # Default to true end |
#css_enhanced_options ⇒ Object
Generate enhanced CSS compression options hash
629 630 631 632 633 634 635 636 637 638 639 |
# File 'lib/jekyll-minifier.rb', line 629 def return nil unless css_enhanced_mode? { merge_duplicate_selectors: css_merge_duplicate_selectors?, optimize_shorthand_properties: css_optimize_shorthand_properties?, advanced_color_optimization: css_advanced_color_optimization?, preserve_ie_hacks: css_preserve_ie_hacks?, compress_css_variables: css_compress_variables? } end |
#exclude_patterns ⇒ Object
File Exclusions
668 669 670 |
# File 'lib/jekyll-minifier.rb', line 668 def exclude_patterns get_array(EXCLUDE) end |
#has_terser_args? ⇒ Boolean
646 647 648 |
# File 'lib/jekyll-minifier.rb', line 646 def has_terser_args? !terser_args.nil? end |
#html_compressor_args ⇒ Object
Generate HTML compressor arguments hash Maintains exact same behavior as original implementation
674 675 676 677 678 679 |
# File 'lib/jekyll-minifier.rb', line 674 def html_compressor_args args = base_html_args apply_html_config_overrides(args) apply_preserve_patterns(args) args end |
#php_preserve_pattern ⇒ Object
663 664 665 |
# File 'lib/jekyll-minifier.rb', line 663 def php_preserve_pattern /<\?php.*?\?>/im end |
#preserve_patterns ⇒ Object
Pattern Preservation
651 652 653 654 655 656 657 |
# File 'lib/jekyll-minifier.rb', line 651 def preserve_patterns patterns = get_array(PRESERVE_PATTERNS) return patterns unless patterns.empty? # Return empty array if no patterns configured [] end |
#preserve_php? ⇒ Boolean
659 660 661 |
# File 'lib/jekyll-minifier.rb', line 659 def preserve_php? get_boolean(PRESERVE_PHP, false) end |
#terser_args ⇒ Object
JavaScript/Terser Configuration
642 643 644 |
# File 'lib/jekyll-minifier.rb', line 642 def terser_args @computed_values[:terser_args] end |