2013-12-28 01:26:31 +01:00
|
|
|
require 'middleman-core/renderers/sass'
|
|
|
|
require 'compass'
|
2013-05-19 22:23:49 +02:00
|
|
|
|
2013-04-21 00:07:00 +02:00
|
|
|
class Middleman::CoreExtensions::Compass < ::Middleman::Extension
|
|
|
|
def initialize(app, options_hash={}, &block)
|
|
|
|
super
|
|
|
|
|
|
|
|
# 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
|
|
|
|
|
|
|
|
def after_configuration
|
|
|
|
::Compass.configuration do |compass_config|
|
|
|
|
compass_config.project_path = app.source_dir
|
|
|
|
compass_config.environment = :development
|
2014-01-28 19:46:39 +01:00
|
|
|
compass_config.cache = false
|
2013-04-21 00:07:00 +02:00
|
|
|
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]
|
|
|
|
|
2014-09-02 21:43:20 +02:00
|
|
|
compass_config.additional_import_paths = []
|
2013-04-21 00:07:00 +02:00
|
|
|
app.config[:sass_assets_paths].each do |path|
|
|
|
|
compass_config.add_import_path path
|
2012-05-24 23:29:29 +02:00
|
|
|
end
|
2013-04-21 00:07:00 +02:00
|
|
|
|
|
|
|
# Disable this initially, the cache_buster extension will
|
|
|
|
# re-enable it if requested.
|
2013-10-15 23:33:25 +02:00
|
|
|
compass_config.asset_cache_buster { |_| nil }
|
2013-04-21 00:07:00 +02:00
|
|
|
|
|
|
|
# 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)
|
2013-12-28 01:26:31 +01:00
|
|
|
compass_config.line_comments = false if ENV['TEST']
|
2012-05-24 23:29:29 +02:00
|
|
|
end
|
2012-06-09 20:30:22 +02:00
|
|
|
|
2013-04-21 00:07:00 +02:00
|
|
|
# Call hook
|
2014-02-02 11:12:57 +01:00
|
|
|
app.run_hook_for :compass_config, app, ::Compass.configuration
|
2013-04-21 00:07:00 +02:00
|
|
|
|
|
|
|
# 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)
|
2012-05-24 23:29:29 +02:00
|
|
|
end
|
2013-04-21 00:07:00 +02:00
|
|
|
end
|
2012-06-09 20:30:22 +02:00
|
|
|
|
2013-04-21 00:07:00 +02:00
|
|
|
# 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
|
2011-07-11 00:10:49 +02:00
|
|
|
end
|
2014-02-02 11:12:57 +01:00
|
|
|
end
|