Class: Jekyll::Minifier::CompressionConfig

Inherits:
Object
  • Object
show all
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'
'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

Constructor Details

#initialize(site_config) ⇒ CompressionConfig

Returns a new instance of CompressionConfig.



640
641
642
643
644
645
646
647
648
649
650
651
652
# File 'lib/jekyll-minifier.rb', line 640

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

Returns:

  • (Boolean)


683
684
685
# File 'lib/jekyll-minifier.rb', line 683

def compress_css?
  get_boolean(COMPRESS_CSS, true) # Default to true
end

#compress_javascript?Boolean

Returns:

  • (Boolean)


687
688
689
# File 'lib/jekyll-minifier.rb', line 687

def compress_javascript?
  get_boolean(COMPRESS_JAVASCRIPT, true) # Default to true
end

#compress_json?Boolean

Returns:

  • (Boolean)


691
692
693
# File 'lib/jekyll-minifier.rb', line 691

def compress_json?
  get_boolean(COMPRESS_JSON, true) # Default to true
end

#css_enhanced_optionsObject

Generate enhanced CSS compression options hash



711
712
713
714
715
716
717
718
719
720
721
# File 'lib/jekyll-minifier.rb', line 711

def css_enhanced_options
  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_patternsObject

File Exclusions



750
751
752
# File 'lib/jekyll-minifier.rb', line 750

def exclude_patterns
  get_array(EXCLUDE)
end

#has_terser_args?Boolean

Returns:

  • (Boolean)


728
729
730
# File 'lib/jekyll-minifier.rb', line 728

def has_terser_args?
  !terser_args.nil?
end

#html_compressor_argsObject

Generate HTML compressor arguments hash Maintains exact same behavior as original implementation



756
757
758
759
760
761
# File 'lib/jekyll-minifier.rb', line 756

def html_compressor_args
  args = base_html_args
  apply_html_config_overrides(args)
  apply_preserve_patterns(args)
  args
end

#php_preserve_patternObject



745
746
747
# File 'lib/jekyll-minifier.rb', line 745

def php_preserve_pattern
  /<\?php.*?\?>/im
end

#preserve_patternsObject

Pattern Preservation



733
734
735
736
737
738
739
# File 'lib/jekyll-minifier.rb', line 733

def preserve_patterns
  patterns = get_array(PRESERVE_PATTERNS)
  return patterns unless patterns.empty?
  
  # Return empty array if no patterns configured
  []
end

#preserve_php?Boolean

Returns:

  • (Boolean)


741
742
743
# File 'lib/jekyll-minifier.rb', line 741

def preserve_php?
  get_boolean(PRESERVE_PHP, false)
end

#terser_argsObject

JavaScript/Terser Configuration



724
725
726
# File 'lib/jekyll-minifier.rb', line 724

def terser_args
  @computed_values[:terser_args]
end