diff --git a/middleman-more/lib/middleman-more.rb b/middleman-more/lib/middleman-more.rb index 1f03c891..e324671f 100644 --- a/middleman-more/lib/middleman-more.rb +++ b/middleman-more/lib/middleman-more.rb @@ -31,14 +31,14 @@ module Middleman # exist anymore. ::I18n.load_path.delete_if {|path| path =~ %r{tmp/aruba}} ::I18n.reload! - end + end if ENV["TEST"] require "middleman-more/core_extensions/i18n" Middleman::CoreExtensions::Internationalization.register(:i18n) # Compass framework require "middleman-more/core_extensions/compass" - Middleman::Application.register Middleman::CoreExtensions::Compass + Middleman::CoreExtensions::Compass.new(app) ### # Setup Optional Extensions diff --git a/middleman-more/lib/middleman-more/core_extensions/compass.rb b/middleman-more/lib/middleman-more/core_extensions/compass.rb index ac44c182..5798c6f0 100644 --- a/middleman-more/lib/middleman-more/core_extensions/compass.rb +++ b/middleman-more/lib/middleman-more/core_extensions/compass.rb @@ -1,88 +1,75 @@ -module Middleman - module CoreExtensions +class Middleman::CoreExtensions::Compass < ::Middleman::Extension - # Forward the settings on config.rb and the result of registered - # extensions to Compass - module Compass + def initialize(app, options_hash={}, &block) + super - # Extension registered - class << self + # Require the library + require "compass" - # Once registered - def registered(app) - # Require the library - require "compass" - - # Hooks to manually update the compass config after we're - # done with it - app.define_hook :compass_config - - # Location of SASS/SCSS files external to source directory. - # @return [Array] - # config[:sass_assets_paths] = ["#{root}/assets/sass/", "/path/2/external/sass/repository/"] - app.config.define_setting :sass_assets_paths, [], 'Paths to extra SASS/SCSS files' - - app.after_configuration do - ::Compass.configuration do |compass_config| - compass_config.project_path = source_dir - compass_config.environment = :development - compass_config.cache_path = config[:sass_cache_path] - compass_config.sass_dir = config[:css_dir] - compass_config.css_dir = config[:css_dir] - compass_config.javascripts_dir = config[:js_dir] - compass_config.fonts_dir = config[:fonts_dir] - compass_config.images_dir = config[:images_dir] - compass_config.http_path = config[:http_prefix] - - config[:sass_assets_paths].each do |path| - compass_config.add_import_path path - end - - # Disable this initially, the cache_buster extension will - # re-enable it if requested. - compass_config.asset_cache_buster :none - - # Disable this initially, the relative_assets extension will - - compass_config.relative_assets = false - - # Default output style - compass_config.output_style = :nested - - # No line-comments in test mode (changing paths mess with sha1) - compass_config.line_comments = false if ENV["TEST"] - end - - # Call hook - run_hook :compass_config, ::Compass.configuration - - # Tell Tilt to use it as well (for inline sass blocks) - ::Tilt.register 'sass', CompassSassTemplate - ::Tilt.prefer(CompassSassTemplate) - - # Tell Tilt to use it as well (for inline scss blocks) - ::Tilt.register 'scss', CompassScssTemplate - ::Tilt.prefer(CompassScssTemplate) - end - end - alias :included :registered - end - - end - - # A Compass Sass template for Tilt, adding our options in - class CompassSassTemplate < ::Middleman::Renderers::Sass::SassPlusCSSFilenameTemplate - def sass_options - super.merge(::Compass.configuration.to_sass_engine_options) - end - end - - # A Compass Scss template for Tilt, adding our options in - class CompassScssTemplate < ::Middleman::Renderers::Sass::ScssPlusCSSFilenameTemplate - def sass_options - super.merge(::Compass.configuration.to_sass_engine_options) - end - end + # Hooks to manually update the compass config after we're + # done with it + app.define_hook :compass_config + # Location of SASS/SCSS files external to source directory. + # @return [Array] + # config[:sass_assets_paths] = ["#{root}/assets/sass/", "/path/2/external/sass/repository/"] + app.config.define_setting :sass_assets_paths, [], 'Paths to extra SASS/SCSS files' end -end + + def after_configuration + ::Compass.configuration do |compass_config| + compass_config.project_path = app.source_dir + compass_config.environment = :development + compass_config.cache_path = app.config[:sass_cache_path] + compass_config.sass_dir = app.config[:css_dir] + compass_config.css_dir = app.config[:css_dir] + compass_config.javascripts_dir = app.config[:js_dir] + compass_config.fonts_dir = app.config[:fonts_dir] + compass_config.images_dir = app.config[:images_dir] + compass_config.http_path = app.config[:http_prefix] + + app.config[:sass_assets_paths].each do |path| + compass_config.add_import_path path + end + + # Disable this initially, the cache_buster extension will + # re-enable it if requested. + compass_config.asset_cache_buster :none + + # Disable this initially, the relative_assets extension will + + compass_config.relative_assets = false + + # Default output style + compass_config.output_style = :nested + + # No line-comments in test mode (changing paths mess with sha1) + compass_config.line_comments = false if ENV["TEST"] + end + + # Call hook + app.run_hook :compass_config, ::Compass.configuration + + # Tell Tilt to use it as well (for inline sass blocks) + ::Tilt.register 'sass', CompassSassTemplate + ::Tilt.prefer(CompassSassTemplate) + + # Tell Tilt to use it as well (for inline scss blocks) + ::Tilt.register 'scss', CompassScssTemplate + ::Tilt.prefer(CompassScssTemplate) + end + + # A Compass Sass template for Tilt, adding our options in + class CompassSassTemplate < ::Middleman::Renderers::Sass::SassPlusCSSFilenameTemplate + def sass_options + super.merge(::Compass.configuration.to_sass_engine_options) + end + end + + # A Compass Scss template for Tilt, adding our options in + class CompassScssTemplate < ::Middleman::Renderers::Sass::ScssPlusCSSFilenameTemplate + def sass_options + super.merge(::Compass.configuration.to_sass_engine_options) + end + end +end \ No newline at end of file