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.



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

Returns:

  • (Boolean)


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

Returns:

  • (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

Returns:

  • (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_optionsObject

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 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



668
669
670
# File 'lib/jekyll-minifier.rb', line 668

def exclude_patterns
  get_array(EXCLUDE)
end

#has_terser_args?Boolean

Returns:

  • (Boolean)


646
647
648
# File 'lib/jekyll-minifier.rb', line 646

def has_terser_args?
  !terser_args.nil?
end

#html_compressor_argsObject

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_patternObject



663
664
665
# File 'lib/jekyll-minifier.rb', line 663

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

#preserve_patternsObject

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

Returns:

  • (Boolean)


659
660
661
# File 'lib/jekyll-minifier.rb', line 659

def preserve_php?
  get_boolean(PRESERVE_PHP, false)
end

#terser_argsObject

JavaScript/Terser Configuration



642
643
644
# File 'lib/jekyll-minifier.rb', line 642

def terser_args
  @computed_values[:terser_args]
end