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
1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 |
# File 'lib/jekyll-minifier.rb', line 1043 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
1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 |
# File 'lib/jekyll-minifier.rb', line 1133 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 output_file(path, content) 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
1066 1067 1068 1069 1070 1071 1072 |
# File 'lib/jekyll-minifier.rb', line 1066 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
1036 1037 1038 1039 1040 1041 |
# File 'lib/jekyll-minifier.rb', line 1036 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
1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 |
# File 'lib/jekyll-minifier.rb', line 1074 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 output_file(path, content) 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.}. Using original content.") output_file(path, content) end end |
#output_js(path, content) ⇒ Object
1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 |
# File 'lib/jekyll-minifier.rb', line 1101 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 output_file(path, content) 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
1058 1059 1060 1061 1062 1063 1064 |
# File 'lib/jekyll-minifier.rb', line 1058 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
1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 |
# File 'lib/jekyll-minifier.rb', line 1117 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 output_file(path, content) 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 |