Module: Jekyll::Compressor
- Included in:
- Document, Page, StaticFile
- Defined in:
- lib/jekyll-minifier.rb
Instance Method Summary collapse
- #output_compressed(path, context) ⇒ Object
- #output_css(path, content) ⇒ Object
- #output_css_or_file(path, context) ⇒ Object
- #output_file(dest, content) ⇒ Object
- #output_html(path, content) ⇒ Object
- #output_js(path, content) ⇒ Object
- #output_js_or_file(path, context) ⇒ Object
- #output_json(path, content) ⇒ Object
Instance Method Details
#output_compressed(path, context) ⇒ Object
961 962 963 964 965 966 967 968 969 970 971 972 973 974 |
# File 'lib/jekyll-minifier.rb', line 961 def output_compressed(path, context) extension = File.extname(path) case extension when '.js' output_js_or_file(path, context) when '.json' output_json(path, context) when '.css' output_css_or_file(path, context) else output_html(path, context) end end |
#output_css(path, content) ⇒ Object
1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 |
# File 'lib/jekyll-minifier.rb', line 1051 def output_css(path, content) return output_file(path, content) unless production_environment? # Validate file path for security unless Jekyll::Minifier::ValidationHelpers.validate_file_path(path) Jekyll.logger.warn("Jekyll Minifier:", "Unsafe file path detected, skipping compression: #{path}") return # Don't write anything for unsafe paths end config = Jekyll::Minifier::CompressionConfig.new(@site.config) return output_file(path, content) unless config.compress_css? compressed_content = Jekyll::Minifier::CompressorFactory.compress_css(content, config, path) output_file(path, compressed_content) end |
#output_css_or_file(path, context) ⇒ Object
984 985 986 987 988 989 990 |
# File 'lib/jekyll-minifier.rb', line 984 def output_css_or_file(path, context) if path.end_with?('.min.css') output_file(path, context) else output_css(path, context) end end |
#output_file(dest, content) ⇒ Object
954 955 956 957 958 959 |
# File 'lib/jekyll-minifier.rb', line 954 def output_file(dest, content) FileUtils.mkdir_p(File.dirname(dest)) File.open(dest, 'w') do |f| f.write(content) end end |
#output_html(path, content) ⇒ Object
992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 |
# File 'lib/jekyll-minifier.rb', line 992 def output_html(path, content) return output_file(path, content) unless production_environment? # Validate file path for security unless Jekyll::Minifier::ValidationHelpers.validate_file_path(path) Jekyll.logger.warn("Jekyll Minifier:", "Unsafe file path detected, skipping compression: #{path}") return # Don't write anything for unsafe paths end # Validate content before compression unless Jekyll::Minifier::ValidationHelpers.validate_file_content(content, 'html', path) Jekyll.logger.warn("Jekyll Minifier:", "Unsafe HTML content detected, skipping compression: #{path}") return output_file(path, content) end config = Jekyll::Minifier::CompressionConfig.new(@site.config) begin compressor = Jekyll::Minifier::CompressorFactory.create_html_compressor(config) compressed_content = compressor.compress(content) output_file(path, compressed_content) rescue => e Jekyll.logger.warn("Jekyll Minifier:", "HTML compression failed for #{path}: #{e.message}. Using original content.") output_file(path, content) end end |
#output_js(path, content) ⇒ Object
1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 |
# File 'lib/jekyll-minifier.rb', line 1019 def output_js(path, content) return output_file(path, content) unless production_environment? # Validate file path for security unless Jekyll::Minifier::ValidationHelpers.validate_file_path(path) Jekyll.logger.warn("Jekyll Minifier:", "Unsafe file path detected, skipping compression: #{path}") return # Don't write anything for unsafe paths end config = Jekyll::Minifier::CompressionConfig.new(@site.config) return output_file(path, content) unless config.compress_javascript? compressed_content = Jekyll::Minifier::CompressorFactory.compress_js(content, config, path) output_file(path, compressed_content) end |
#output_js_or_file(path, context) ⇒ Object
976 977 978 979 980 981 982 |
# File 'lib/jekyll-minifier.rb', line 976 def output_js_or_file(path, context) if path.end_with?('.min.js') output_file(path, context) else output_js(path, context) end end |
#output_json(path, content) ⇒ Object
1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 |
# File 'lib/jekyll-minifier.rb', line 1035 def output_json(path, content) return output_file(path, content) unless production_environment? # Validate file path for security unless Jekyll::Minifier::ValidationHelpers.validate_file_path(path) Jekyll.logger.warn("Jekyll Minifier:", "Unsafe file path detected, skipping compression: #{path}") return # Don't write anything for unsafe paths end config = Jekyll::Minifier::CompressionConfig.new(@site.config) return output_file(path, content) unless config.compress_json? compressed_content = Jekyll::Minifier::CompressorFactory.compress_json(content, path) output_file(path, compressed_content) end |