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.
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
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
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
691 692 693 |
# File 'lib/jekyll-minifier.rb', line 691 def compress_json? get_boolean(COMPRESS_JSON, true) # Default to true end |
#css_enhanced_options ⇒ Object
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 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
750 751 752 |
# File 'lib/jekyll-minifier.rb', line 750 def exclude_patterns get_array(EXCLUDE) end |
#has_terser_args? ⇒ Boolean
728 729 730 |
# File 'lib/jekyll-minifier.rb', line 728 def has_terser_args? !terser_args.nil? end |
#html_compressor_args ⇒ Object
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_pattern ⇒ Object
745 746 747 |
# File 'lib/jekyll-minifier.rb', line 745 def php_preserve_pattern /<\?php.*?\?>/im end |
#preserve_patterns ⇒ Object
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
741 742 743 |
# File 'lib/jekyll-minifier.rb', line 741 def preserve_php? get_boolean(PRESERVE_PHP, false) end |
#terser_args ⇒ Object
JavaScript/Terser Configuration
724 725 726 |
# File 'lib/jekyll-minifier.rb', line 724 def terser_args @computed_values[:terser_args] end |