lib/jekyll-minifier.rb in jekyll-minifier-0.1.1 vs lib/jekyll-minifier.rb in jekyll-minifier-0.1.2
- old
+ new
@@ -28,10 +28,45 @@
f.write(content)
end
end
def output_html(path, content)
- compressor = HtmlCompressor::Compressor.new({ :remove_comments => true, :compress_css => true, :compress_javascript => true, :css_compressor => CSSminify2.new, :javascript_compressor => Uglifier.new })
+ args = { remove_comments: true, compress_css: true, compress_javascript: true, preserve_patterns: [] }
+ args[:css_compressor] = CSSminify2.new
+ args[:javascript_compressor] = Uglifier.new
+
+ opts = @site.config['jekyll-minifier']
+
+ if ( !opts.nil? )
+ # Convert keys to symboles
+ opts.keys.each { |key| opts[(key.to_sym rescue key) || key] = opts.delete(key) }
+
+ args[:remove_spaces_inside_tags] = opts[:remove_spaces_inside_tags] if opts.has_key?(:remove_spaces_inside_tags)
+ args[:remove_multi_spaces] = opts[:remove_multi_spaces] if opts.has_key?(:remove_multi_spaces)
+ args[:remove_comments] = opts[:remove_comments] if opts.has_key?(:remove_comments)
+ args[:remove_intertag_spaces] = opts[:remove_intertag_spaces] if opts.has_key?(:remove_intertag_spaces)
+ args[:remove_quotes] = opts[:remove_quotes] if opts.has_key?(:remove_quotes)
+ args[:compress_css] = opts[:compress_css] if opts.has_key?(:compress_css)
+ args[:compress_javascript] = opts[:compress_javascript] if opts.has_key?(:compress_javascript)
+ args[:simple_doctype] = opts[:simple_doctype] if opts.has_key?(:simple_doctype)
+ args[:remove_script_attributes] = opts[:remove_script_attributes] if opts.has_key?(:remove_script_attributes)
+ args[:remove_style_attributes] = opts[:remove_style_attributes] if opts.has_key?(:remove_style_attributes)
+ args[:remove_link_attributes] = opts[:remove_link_attributes] if opts.has_key?(:remove_link_attributes)
+ args[:remove_form_attributes] = opts[:remove_form_attributes] if opts.has_key?(:remove_form_attributes)
+ args[:remove_input_attributes] = opts[:remove_input_attributes] if opts.has_key?(:remove_input_attributes)
+ args[:remove_javascript_protocol] = opts[:remove_javascript_protocol] if opts.has_key?(:remove_javascript_protocol)
+ args[:remove_http_protocol] = opts[:remove_http_protocol] if opts.has_key?(:remove_http_protocol)
+ args[:remove_https_protocol] = opts[:remove_https_protocol] if opts.has_key?(:remove_https_protocol)
+ args[:preserve_line_breaks] = opts[:preserve_line_breaks] if opts.has_key?(:preserve_line_breaks)
+ args[:simple_boolean_attributes] = opts[:simple_boolean_attributes] if opts.has_key?(:simple_boolean_attributes)
+ args[:compress_js_templates] = opts[:compress_js_templates] if opts.has_key?(:compress_js_templates)
+ args[:preserve_patterns] += [/<\?php.*?\?>/im] if opts[:preserve_php] == true
+
+ # Potential to add patterns from YAML
+ #args[:preserve_patterns] += opts[:preserve_patterns].map { |pattern| Regexp.new(pattern)} if opts.has_key?(:preserve_patterns)
+ end
+
+ compressor = HtmlCompressor::Compressor.new(args)
output_file(path, compressor.compress(content))
end
def output_js(path, content)
compressed = Uglifier.new