Class: Middleman::Extensions::MinifyCss
- Inherits:
-
Middleman::Extension
- Object
- Middleman::Extension
- Middleman::Extensions::MinifyCss
- Defined in:
- middleman-core/lib/middleman-core/extensions/minify_css.rb
Overview
Minify CSS Extension
Defined Under Namespace
Classes: SassCompressor
Constant Summary collapse
- INLINE_CSS_REGEX =
%r{(<style[^>]*>\s*(?:/\*<!\[CDATA\[\*/\n)?)(.*?)((?:(?:\n\s*)?/\*\]\]>\*/)?\s*</style>)}m.freeze
Constants included from Contracts
Instance Attribute Summary
Attributes inherited from Middleman::Extension
Instance Method Summary collapse
- #ignore?(path) ⇒ Boolean
-
#initialize(app, options_hash = ::Middleman::EMPTY_HASH, &block) ⇒ MinifyCss
constructor
A new instance of MinifyCss.
- #manipulate_resource_list_container!(resource_list) ⇒ Object
- #minifiable?(content_type) ⇒ Boolean
- #minifiable_inline?(content_type) ⇒ Boolean
- #minify(content) ⇒ Object
-
#minify_inline(content) ⇒ String
Detect and minify inline content.
Methods inherited from Middleman::Extension
activated_extension, #add_exposed_to_context, #after_build, #after_configuration, after_extension_activated, #after_extension_activated, #before_build, #before_configuration, clear_after_extension_callbacks, config, define_setting, expose_to_application, expose_to_config, expose_to_template, global_config, helpers, #manipulate_resource_list, option, #ready, resources
Methods included from Contracts
Constructor Details
#initialize(app, options_hash = ::Middleman::EMPTY_HASH, &block) ⇒ MinifyCss
Returns a new instance of MinifyCss.
34 35 36 37 38 39 40 41 |
# File 'middleman-core/lib/middleman-core/extensions/minify_css.rb', line 34 def initialize(app, = ::Middleman::EMPTY_HASH, &block) super @ignore = Array(.ignore) + [/\.min\./] @compressor = .compressor @compressor = @compressor.to_proc if @compressor.respond_to? :to_proc @compressor = @compressor.call if @compressor.is_a? Proc end |
Instance Method Details
#ignore?(path) ⇒ Boolean
57 58 59 |
# File 'middleman-core/lib/middleman-core/extensions/minify_css.rb', line 57 def ignore?(path) @ignore.any? { |ignore| ::Middleman::Util.path_match(ignore, path) } end |
#manipulate_resource_list_container!(resource_list) ⇒ Object
44 45 46 47 48 49 50 51 52 53 |
# File 'middleman-core/lib/middleman-core/extensions/minify_css.rb', line 44 def manipulate_resource_list_container!(resource_list) resource_list.by_binary(false).each do |r| type = r.content_type.try(:slice, /^[^;]*/) if [:inline] && minifiable_inline?(type) r.add_filter method(:minify_inline) elsif minifiable?(type) && !ignore?(r.destination_path) r.add_filter method(:minify) end end end |
#minifiable?(content_type) ⇒ Boolean
64 65 66 |
# File 'middleman-core/lib/middleman-core/extensions/minify_css.rb', line 64 def minifiable?(content_type) [:content_types].include?(content_type) end |
#minifiable_inline?(content_type) ⇒ Boolean
71 72 73 |
# File 'middleman-core/lib/middleman-core/extensions/minify_css.rb', line 71 def minifiable_inline?(content_type) [:inline_content_types].include?(content_type) end |
#minify(content) ⇒ Object
78 79 80 |
# File 'middleman-core/lib/middleman-core/extensions/minify_css.rb', line 78 def minify(content) @compressor.compress(content) end |
#minify_inline(content) ⇒ String
Detect and minify inline content
86 87 88 89 90 |
# File 'middleman-core/lib/middleman-core/extensions/minify_css.rb', line 86 def minify_inline(content) content.gsub(INLINE_CSS_REGEX) do Regexp.last_match(1) + minify(Regexp.last_match(2)) + Regexp.last_match(3) end end |