diff --git a/middleman-more/lib/middleman-more/extensions/minify_css.rb b/middleman-more/lib/middleman-more/extensions/minify_css.rb index 4f2590e7..2f54a82e 100644 --- a/middleman-more/lib/middleman-more/extensions/minify_css.rb +++ b/middleman-more/lib/middleman-more/extensions/minify_css.rb @@ -8,9 +8,11 @@ module Middleman::Extensions class << self # Once registered - def registered(app) + def registered(app, options={}) app.set :css_compressor, false + ignore = Array(options[:ignore]) << /\.min\./ + app.after_configuration do unless respond_to?(:css_compressor) && css_compressor require "middleman-more/extensions/minify_css/rainpress" @@ -18,7 +20,7 @@ module Middleman::Extensions end # Setup Rack to watch for inline JS - use InlineCSSRack, :compressor => css_compressor + use InlineCSSRack, :compressor => css_compressor, :ignore => ignore end end alias :included :registered @@ -34,6 +36,7 @@ module Middleman::Extensions def initialize(app, options={}) @app = app @compressor = options[:compressor] + @ignore = options[:ignore] end # Rack interface @@ -59,7 +62,7 @@ module Middleman::Extensions headers["Content-Length"] = ::Rack::Utils.bytesize(minified).to_s response = [minified] - elsif path.end_with?('.css') && path !~ /\.min\./ + elsif path.end_with?('.css') && @ignore.none? {|ignore| path =~ ignore } uncompressed_source = extract_response_text(response) minified_css = @compressor.compress(uncompressed_source) diff --git a/middleman-more/lib/middleman-more/extensions/minify_javascript.rb b/middleman-more/lib/middleman-more/extensions/minify_javascript.rb index 85bf6e2d..405dcaed 100755 --- a/middleman-more/lib/middleman-more/extensions/minify_javascript.rb +++ b/middleman-more/lib/middleman-more/extensions/minify_javascript.rb @@ -8,9 +8,11 @@ module Middleman::Extensions class << self # Once registered - def registered(app) + def registered(app, options={}) app.set :js_compressor, false + ignore = Array(options[:ignore]) << /\.min\./ + # Once config is parsed app.after_configuration do unless respond_to?(:js_compressor) && js_compressor @@ -19,7 +21,7 @@ module Middleman::Extensions end # Setup Rack to watch for inline JS - use InlineJavascriptRack, :compressor => js_compressor + use InlineJavascriptRack, :compressor => js_compressor, :ignore => ignore end end alias :included :registered @@ -34,6 +36,7 @@ module Middleman::Extensions def initialize(app, options={}) @app = app @compressor = options[:compressor] + @ignore = options[:ignore] end # Rack interface @@ -44,35 +47,39 @@ module Middleman::Extensions path = env["PATH_INFO"] - if path.end_with?('.html') || path.end_with?('.php') - uncompressed_source = extract_response_text(response) + begin + if path.end_with?('.html') || path.end_with?('.php') + uncompressed_source = extract_response_text(response) - minified = uncompressed_source.gsub(/(]*>\s*(?:\/\/(?:(?:)|(?:\]\]>)))?\s*<\/script>)/m) do |match| - first = $1 - javascript = $2 - last = $3 + minified = uncompressed_source.gsub(/(]*>\s*(?:\/\/(?:(?:)|(?:\]\]>)))?\s*<\/script>)/m) do |match| + first = $1 + javascript = $2 + last = $3 - # Only compress script tags that contain JavaScript (as opposed - # to something like jQuery templates, identified with a "text/html" - # type. - if first =~ /