compass 0.8.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG.markdown +551 -0
- data/LICENSE.markdown +29 -0
- data/README.markdown +44 -0
- data/REVISION +1 -0
- data/Rakefile +127 -0
- data/VERSION.yml +4 -0
- data/bin/compass +8 -0
- data/deps.rip +1 -0
- data/examples/README.markdown +4 -0
- data/examples/blueprint_default/config.rb +7 -0
- data/examples/blueprint_default/images/grid.png +0 -0
- data/examples/blueprint_default/index.html.haml +85 -0
- data/examples/blueprint_default/parts/elements.html.haml +282 -0
- data/examples/blueprint_default/parts/forms.html.haml +190 -0
- data/examples/blueprint_default/parts/grid.html.haml +274 -0
- data/examples/blueprint_default/parts/test-small.jpg +0 -0
- data/examples/blueprint_default/parts/test.jpg +0 -0
- data/examples/blueprint_default/parts/valid.png +0 -0
- data/examples/blueprint_default/src/ie.sass +3 -0
- data/examples/blueprint_default/src/images/grid.png +0 -0
- data/examples/blueprint_default/src/print.sass +3 -0
- data/examples/blueprint_default/src/screen.sass +8 -0
- data/examples/blueprint_plugins/config.rb +8 -0
- data/examples/blueprint_plugins/images/buttons/cross.png +0 -0
- data/examples/blueprint_plugins/images/buttons/key.png +0 -0
- data/examples/blueprint_plugins/images/buttons/tick.png +0 -0
- data/examples/blueprint_plugins/images/grid.png +0 -0
- data/examples/blueprint_plugins/images/link_icons/doc.png +0 -0
- data/examples/blueprint_plugins/images/link_icons/email.png +0 -0
- data/examples/blueprint_plugins/images/link_icons/external.png +0 -0
- data/examples/blueprint_plugins/images/link_icons/feed.png +0 -0
- data/examples/blueprint_plugins/images/link_icons/im.png +0 -0
- data/examples/blueprint_plugins/images/link_icons/pdf.png +0 -0
- data/examples/blueprint_plugins/images/link_icons/visited.png +0 -0
- data/examples/blueprint_plugins/images/link_icons/xls.png +0 -0
- data/examples/blueprint_plugins/images/test-small.jpg +0 -0
- data/examples/blueprint_plugins/images/test.jpg +0 -0
- data/examples/blueprint_plugins/images/valid.png +0 -0
- data/examples/blueprint_plugins/index.html.haml +96 -0
- data/examples/blueprint_plugins/plugins/buttons.html.haml +67 -0
- data/examples/blueprint_plugins/plugins/fancy_type.html.haml +100 -0
- data/examples/blueprint_plugins/plugins/link_icons.html.haml +61 -0
- data/examples/blueprint_plugins/plugins/rtl.html.haml +100 -0
- data/examples/blueprint_plugins/src/buttons.sass +49 -0
- data/examples/blueprint_plugins/src/ie.sass +3 -0
- data/examples/blueprint_plugins/src/images/grid.png +0 -0
- data/examples/blueprint_plugins/src/link_icons.sass +13 -0
- data/examples/blueprint_plugins/src/print.sass +3 -0
- data/examples/blueprint_plugins/src/rtl_screen.sass +13 -0
- data/examples/blueprint_plugins/src/screen.sass +11 -0
- data/examples/blueprint_scoped/images/grid.png +0 -0
- data/examples/blueprint_scoped/src/ie.sass +3 -0
- data/examples/blueprint_scoped/src/print.sass +3 -0
- data/examples/blueprint_scoped/src/screen.sass +4 -0
- data/examples/blueprint_scoped_form/images/grid.png +0 -0
- data/examples/blueprint_scoped_form/src/ie.sass +3 -0
- data/examples/blueprint_scoped_form/src/print.sass +3 -0
- data/examples/blueprint_scoped_form/src/screen.sass +10 -0
- data/examples/blueprint_semantic/config.rb +7 -0
- data/examples/blueprint_semantic/images/grid.png +0 -0
- data/examples/blueprint_semantic/index.html.haml +86 -0
- data/examples/blueprint_semantic/parts/fancy_type.html.haml +100 -0
- data/examples/blueprint_semantic/parts/liquid.html.haml +100 -0
- data/examples/blueprint_semantic/parts/test-small.jpg +0 -0
- data/examples/blueprint_semantic/parts/test.jpg +0 -0
- data/examples/blueprint_semantic/parts/valid.png +0 -0
- data/examples/blueprint_semantic/src/ie.sass +3 -0
- data/examples/blueprint_semantic/src/images/grid.png +0 -0
- data/examples/blueprint_semantic/src/liquid.sass +70 -0
- data/examples/blueprint_semantic/src/print.sass +3 -0
- data/examples/blueprint_semantic/src/screen.sass +71 -0
- data/examples/compass/compass.html.haml +39 -0
- data/examples/compass/config.rb +7 -0
- data/examples/compass/images/blue_arrow.gif +0 -0
- data/examples/compass/src/compass.sass +47 -0
- data/examples/compass/src/images/blue_arrow.gif +0 -0
- data/examples/compass/src/sticky_footer.sass +11 -0
- data/examples/compass/src/utilities.sass +108 -0
- data/examples/compass/sticky_footer.html.haml +14 -0
- data/examples/compass/utilities.html.haml +189 -0
- data/examples/logo/logo.html.haml +40 -0
- data/examples/logo/src/ie.sass +6 -0
- data/examples/logo/src/print.sass +6 -0
- data/examples/logo/src/screen.sass +29 -0
- data/examples/yui/divisions.html.haml +179 -0
- data/examples/yui/index.html.haml +19 -0
- data/examples/yui/src/screen.sass +13 -0
- data/examples/yui/sub_divisions.html.haml +169 -0
- data/examples/yui/templates.html.haml +54 -0
- data/examples/yui/test.jpg +0 -0
- data/examples/yui/typography.html.haml +132 -0
- data/frameworks/blueprint.rb +2 -0
- data/frameworks/blueprint/stylesheets/_blueprint.sass +3 -0
- data/frameworks/blueprint/stylesheets/blueprint/_ie.sass +93 -0
- data/frameworks/blueprint/stylesheets/blueprint/_print.sass +83 -0
- data/frameworks/blueprint/stylesheets/blueprint/_reset.sass +3 -0
- data/frameworks/blueprint/stylesheets/blueprint/_screen.sass +15 -0
- data/frameworks/blueprint/stylesheets/blueprint/modules/_buttons.sass +84 -0
- data/frameworks/blueprint/stylesheets/blueprint/modules/_colors.sass +33 -0
- data/frameworks/blueprint/stylesheets/blueprint/modules/_debug.sass +9 -0
- data/frameworks/blueprint/stylesheets/blueprint/modules/_fancy_type.sass +82 -0
- data/frameworks/blueprint/stylesheets/blueprint/modules/_form.sass +55 -0
- data/frameworks/blueprint/stylesheets/blueprint/modules/_grid.sass +178 -0
- data/frameworks/blueprint/stylesheets/blueprint/modules/_interaction.sass +58 -0
- data/frameworks/blueprint/stylesheets/blueprint/modules/_link_icons.sass +44 -0
- data/frameworks/blueprint/stylesheets/blueprint/modules/_liquid.sass +141 -0
- data/frameworks/blueprint/stylesheets/blueprint/modules/_reset.sass +56 -0
- data/frameworks/blueprint/stylesheets/blueprint/modules/_rtl.sass +104 -0
- data/frameworks/blueprint/stylesheets/blueprint/modules/_scaffolding.sass +47 -0
- data/frameworks/blueprint/stylesheets/blueprint/modules/_typography.sass +155 -0
- data/frameworks/blueprint/stylesheets/blueprint/modules/_utilities.sass +37 -0
- data/frameworks/blueprint/templates/buttons/buttons.sass +49 -0
- data/frameworks/blueprint/templates/buttons/buttons/cross.png +0 -0
- data/frameworks/blueprint/templates/buttons/buttons/key.png +0 -0
- data/frameworks/blueprint/templates/buttons/buttons/tick.png +0 -0
- data/frameworks/blueprint/templates/buttons/manifest.rb +5 -0
- data/frameworks/blueprint/templates/link_icons/link_icons.sass +13 -0
- data/frameworks/blueprint/templates/link_icons/link_icons/doc.png +0 -0
- data/frameworks/blueprint/templates/link_icons/link_icons/email.png +0 -0
- data/frameworks/blueprint/templates/link_icons/link_icons/external.png +0 -0
- data/frameworks/blueprint/templates/link_icons/link_icons/feed.png +0 -0
- data/frameworks/blueprint/templates/link_icons/link_icons/im.png +0 -0
- data/frameworks/blueprint/templates/link_icons/link_icons/pdf.png +0 -0
- data/frameworks/blueprint/templates/link_icons/link_icons/visited.png +0 -0
- data/frameworks/blueprint/templates/link_icons/link_icons/xls.png +0 -0
- data/frameworks/blueprint/templates/link_icons/manifest.rb +10 -0
- data/frameworks/blueprint/templates/project/grid.png +0 -0
- data/frameworks/blueprint/templates/project/ie.sass +15 -0
- data/frameworks/blueprint/templates/project/manifest.rb +6 -0
- data/frameworks/blueprint/templates/project/partials/_base.sass +11 -0
- data/frameworks/blueprint/templates/project/print.sass +3 -0
- data/frameworks/blueprint/templates/project/screen.sass +40 -0
- data/frameworks/compass.rb +2 -0
- data/frameworks/compass/stylesheets/_compass.sass +1 -0
- data/frameworks/compass/stylesheets/compass/_layout.sass +1 -0
- data/frameworks/compass/stylesheets/compass/_misc.sass +24 -0
- data/frameworks/compass/stylesheets/compass/_reset.sass +3 -0
- data/frameworks/compass/stylesheets/compass/_utilities.sass +6 -0
- data/frameworks/compass/stylesheets/compass/layout/_sticky_footer.sass +17 -0
- data/frameworks/compass/stylesheets/compass/utilities/_general.sass +6 -0
- data/frameworks/compass/stylesheets/compass/utilities/_links.sass +3 -0
- data/frameworks/compass/stylesheets/compass/utilities/_lists.sass +3 -0
- data/frameworks/compass/stylesheets/compass/utilities/_print.sass +24 -0
- data/frameworks/compass/stylesheets/compass/utilities/_sprites.sass +1 -0
- data/frameworks/compass/stylesheets/compass/utilities/_tables.sass +3 -0
- data/frameworks/compass/stylesheets/compass/utilities/_text.sass +2 -0
- data/frameworks/compass/stylesheets/compass/utilities/general/_clearfix.sass +24 -0
- data/frameworks/compass/stylesheets/compass/utilities/general/_float.sass +17 -0
- data/frameworks/compass/stylesheets/compass/utilities/general/_hacks.sass +6 -0
- data/frameworks/compass/stylesheets/compass/utilities/general/_inline_block.sass +6 -0
- data/frameworks/compass/stylesheets/compass/utilities/general/_reset.sass +134 -0
- data/frameworks/compass/stylesheets/compass/utilities/general/_tabs.sass +0 -0
- data/frameworks/compass/stylesheets/compass/utilities/general/_tag_cloud.sass +19 -0
- data/frameworks/compass/stylesheets/compass/utilities/links/_hover_link.sass +5 -0
- data/frameworks/compass/stylesheets/compass/utilities/links/_link_colors.sass +24 -0
- data/frameworks/compass/stylesheets/compass/utilities/links/_unstyled_link.sass +5 -0
- data/frameworks/compass/stylesheets/compass/utilities/lists/_bullets.sass +21 -0
- data/frameworks/compass/stylesheets/compass/utilities/lists/_horizontal_list.sass +52 -0
- data/frameworks/compass/stylesheets/compass/utilities/lists/_inline_list.sass +29 -0
- data/frameworks/compass/stylesheets/compass/utilities/sprites/_sprite_img.sass +12 -0
- data/frameworks/compass/stylesheets/compass/utilities/tables/_alternating_rows_and_columns.sass +20 -0
- data/frameworks/compass/stylesheets/compass/utilities/tables/_borders.sass +27 -0
- data/frameworks/compass/stylesheets/compass/utilities/tables/_scaffolding.sass +9 -0
- data/frameworks/compass/stylesheets/compass/utilities/text/_ellipsis.sass +13 -0
- data/frameworks/compass/stylesheets/compass/utilities/text/_nowrap.sass +3 -0
- data/frameworks/compass/stylesheets/compass/utilities/text/_replacement.sass +17 -0
- data/frameworks/compass/templates/ellipsis/ellipsis.sass +6 -0
- data/frameworks/compass/templates/ellipsis/manifest.rb +2 -0
- data/frameworks/compass/templates/ellipsis/xml/ellipsis.xml +14 -0
- data/frameworks/compass/templates/project/ie.sass +6 -0
- data/frameworks/compass/templates/project/manifest.rb +3 -0
- data/frameworks/compass/templates/project/print.sass +6 -0
- data/frameworks/compass/templates/project/screen.sass +13 -0
- data/frameworks/yui.rb +2 -0
- data/frameworks/yui/stylesheets/_yui.sass +7 -0
- data/frameworks/yui/stylesheets/yui/modules/_base.sass +60 -0
- data/frameworks/yui/stylesheets/yui/modules/_fonts.sass +38 -0
- data/frameworks/yui/stylesheets/yui/modules/_grids.sass +341 -0
- data/frameworks/yui/stylesheets/yui/modules/_reset.sass +61 -0
- data/frameworks/yui/templates/project/manifest.rb +1 -0
- data/frameworks/yui/templates/project/screen.sass +4 -0
- data/lib/compass.rb +23 -0
- data/lib/compass/actions.rb +110 -0
- data/lib/compass/app_integration.rb +5 -0
- data/lib/compass/app_integration/merb.rb +43 -0
- data/lib/compass/app_integration/rails.rb +12 -0
- data/lib/compass/app_integration/rails/action_controller.rb +15 -0
- data/lib/compass/app_integration/rails/sass_plugin.rb +5 -0
- data/lib/compass/app_integration/rails/templates/compass-install-rails.rb +80 -0
- data/lib/compass/app_integration/rails/urls.rb +14 -0
- data/lib/compass/commands/base.rb +33 -0
- data/lib/compass/commands/create_project.rb +19 -0
- data/lib/compass/commands/generate_grid_background.rb +24 -0
- data/lib/compass/commands/installer_command.rb +31 -0
- data/lib/compass/commands/list_frameworks.rb +16 -0
- data/lib/compass/commands/print_version.rb +23 -0
- data/lib/compass/commands/project_base.rb +112 -0
- data/lib/compass/commands/stamp_pattern.rb +33 -0
- data/lib/compass/commands/update_project.rb +34 -0
- data/lib/compass/commands/validate_project.rb +21 -0
- data/lib/compass/commands/watch_project.rb +64 -0
- data/lib/compass/commands/write_configuration.rb +28 -0
- data/lib/compass/compiler.rb +54 -0
- data/lib/compass/configuration.rb +324 -0
- data/lib/compass/core_ext.rb +14 -0
- data/lib/compass/dependencies.rb +10 -0
- data/lib/compass/errors.rb +7 -0
- data/lib/compass/exec.rb +251 -0
- data/lib/compass/frameworks.rb +29 -0
- data/lib/compass/grid_builder.rb +72 -0
- data/lib/compass/installers.rb +5 -0
- data/lib/compass/installers/base.rb +158 -0
- data/lib/compass/installers/manifest.rb +58 -0
- data/lib/compass/installers/rails.rb +135 -0
- data/lib/compass/installers/stand_alone.rb +60 -0
- data/lib/compass/logger.rb +42 -0
- data/lib/compass/sass_extensions.rb +5 -0
- data/lib/compass/sass_extensions/functions.rb +19 -0
- data/lib/compass/sass_extensions/functions/display.rb +22 -0
- data/lib/compass/sass_extensions/functions/enumerate.rb +6 -0
- data/lib/compass/sass_extensions/functions/inline_image.rb +35 -0
- data/lib/compass/sass_extensions/functions/selectors.rb +39 -0
- data/lib/compass/sass_extensions/functions/urls.rb +105 -0
- data/lib/compass/sass_extensions/monkey_patches.rb +3 -0
- data/lib/compass/sass_extensions/monkey_patches/stylesheet_updating.rb +23 -0
- data/lib/compass/test_case.rb +38 -0
- data/lib/compass/validator.rb +10 -0
- data/lib/compass/version.rb +57 -0
- data/lib/vendor/fssm.rb +41 -0
- data/lib/vendor/fssm/backends/fsevents.rb +37 -0
- data/lib/vendor/fssm/backends/polling.rb +26 -0
- data/lib/vendor/fssm/cache.rb +193 -0
- data/lib/vendor/fssm/ext.rb +37 -0
- data/lib/vendor/fssm/fsevents.rb +129 -0
- data/lib/vendor/fssm/monitor.rb +25 -0
- data/lib/vendor/fssm/path.rb +91 -0
- data/lib/vendor/fssm/state.rb +54 -0
- data/lib/vendor/fssm/support.rb +22 -0
- data/lib/vendor/fssm/tree.rb +176 -0
- data/test/command_line_helper.rb +102 -0
- data/test/command_line_test.rb +66 -0
- data/test/compass_test.rb +141 -0
- data/test/configuration_test.rb +118 -0
- data/test/fixtures/stylesheets/blueprint/config.rb +9 -0
- data/test/fixtures/stylesheets/blueprint/css/typography.css +158 -0
- data/test/fixtures/stylesheets/blueprint/images/grid.png +0 -0
- data/test/fixtures/stylesheets/blueprint/sass/ie.sass +3 -0
- data/test/fixtures/stylesheets/blueprint/sass/print.sass +3 -0
- data/test/fixtures/stylesheets/blueprint/sass/screen.sass +17 -0
- data/test/fixtures/stylesheets/blueprint/sass/typography.sass +3 -0
- data/test/fixtures/stylesheets/compass/config.rb +9 -0
- data/test/fixtures/stylesheets/compass/css/layout.css +13 -0
- data/test/fixtures/stylesheets/compass/css/print.css +18 -0
- data/test/fixtures/stylesheets/compass/css/reset.css +60 -0
- data/test/fixtures/stylesheets/compass/css/utilities.css +17 -0
- data/test/fixtures/stylesheets/compass/sass/layout.sass +3 -0
- data/test/fixtures/stylesheets/compass/sass/print.sass +5 -0
- data/test/fixtures/stylesheets/compass/sass/reset.sass +10 -0
- data/test/fixtures/stylesheets/compass/sass/utilities.sass +6 -0
- data/test/fixtures/stylesheets/image_urls/config.rb +17 -0
- data/test/fixtures/stylesheets/image_urls/css/screen.css +3 -0
- data/test/fixtures/stylesheets/image_urls/images/grid.png +0 -0
- data/test/fixtures/stylesheets/image_urls/sass/screen.sass +6 -0
- data/test/fixtures/stylesheets/yui/config.rb +9 -0
- data/test/fixtures/stylesheets/yui/css/mixins.css +13 -0
- data/test/fixtures/stylesheets/yui/sass/base.sass +3 -0
- data/test/fixtures/stylesheets/yui/sass/fonts.sass +3 -0
- data/test/fixtures/stylesheets/yui/sass/grids.sass +3 -0
- data/test/fixtures/stylesheets/yui/sass/mixins.sass +16 -0
- data/test/rails_integration_test.rb +83 -0
- data/test/sass_extensions_test.rb +31 -0
- data/test/test_case_helper.rb +13 -0
- data/test/test_helper.rb +21 -0
- data/test/test_rails_helper.rb +20 -0
- metadata +372 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
require 'fileutils'
|
|
2
|
+
require File.join(File.dirname(__FILE__), 'base')
|
|
3
|
+
require File.join(File.dirname(__FILE__), 'update_project')
|
|
4
|
+
|
|
5
|
+
module Compass
|
|
6
|
+
module Commands
|
|
7
|
+
class StampPattern < ProjectBase
|
|
8
|
+
|
|
9
|
+
include InstallerCommand
|
|
10
|
+
|
|
11
|
+
def initialize(working_path, options)
|
|
12
|
+
super(working_path, options)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# all commands must implement perform
|
|
16
|
+
def perform
|
|
17
|
+
installer.init
|
|
18
|
+
installer.run(:skip_finalization => true)
|
|
19
|
+
UpdateProject.new(working_path, options).perform if installer.compilation_required?
|
|
20
|
+
installer.finalize(:create => is_project_creation?)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def is_project_creation?
|
|
24
|
+
false
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def template_directory(pattern)
|
|
28
|
+
File.join(framework.templates_directory, pattern)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
require File.join(File.dirname(__FILE__), 'project_base')
|
|
2
|
+
require File.join(Compass.lib_directory, 'compass', 'compiler')
|
|
3
|
+
|
|
4
|
+
module Compass
|
|
5
|
+
module Commands
|
|
6
|
+
class UpdateProject < ProjectBase
|
|
7
|
+
|
|
8
|
+
def initialize(working_path, options)
|
|
9
|
+
super
|
|
10
|
+
assert_project_directory_exists!
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def perform
|
|
14
|
+
compiler = new_compiler_instance
|
|
15
|
+
if compiler.sass_files.empty?
|
|
16
|
+
message = "Nothing to compile. If you're trying to start a new project, you have left off the directory argument.\n"
|
|
17
|
+
message << "Run \"compass -h\" to get help."
|
|
18
|
+
raise Compass::Error, message
|
|
19
|
+
else
|
|
20
|
+
compiler.run
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def new_compiler_instance(additional_options = {})
|
|
25
|
+
Compass::Compiler.new(working_path,
|
|
26
|
+
projectize(Compass.configuration.sass_dir),
|
|
27
|
+
projectize(Compass.configuration.css_dir),
|
|
28
|
+
Compass.sass_engine_options.merge(:quiet => options[:quiet],
|
|
29
|
+
:force => options[:force]).merge(additional_options))
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
require File.join(File.dirname(__FILE__), 'project_base')
|
|
2
|
+
require File.join(File.dirname(__FILE__), 'update_project')
|
|
3
|
+
|
|
4
|
+
module Compass
|
|
5
|
+
module Commands
|
|
6
|
+
class ValidateProject < ProjectBase
|
|
7
|
+
|
|
8
|
+
def initialize(working_path, options)
|
|
9
|
+
super
|
|
10
|
+
assert_project_directory_exists!
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def perform
|
|
14
|
+
require File.join(File.dirname(__FILE__), '..', 'validator')
|
|
15
|
+
UpdateProject.new(working_path, options).perform
|
|
16
|
+
Validator.new(project_css_subdirectory).validate()
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
require 'fileutils'
|
|
2
|
+
require 'pathname'
|
|
3
|
+
require File.join(File.dirname(__FILE__), 'base')
|
|
4
|
+
require File.join(File.dirname(__FILE__), 'update_project')
|
|
5
|
+
|
|
6
|
+
module Compass
|
|
7
|
+
module Commands
|
|
8
|
+
class WatchProject < UpdateProject
|
|
9
|
+
|
|
10
|
+
attr_accessor :last_update_time, :last_sass_files
|
|
11
|
+
|
|
12
|
+
def perform
|
|
13
|
+
Signal.trap("INT") do
|
|
14
|
+
puts ""
|
|
15
|
+
exit 0
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
recompile
|
|
19
|
+
|
|
20
|
+
puts ">>> Compass is watching for changes. Press Ctrl-C to Stop."
|
|
21
|
+
|
|
22
|
+
require File.join(Compass.lib_directory, 'vendor', 'fssm')
|
|
23
|
+
|
|
24
|
+
FSSM.monitor do |monitor|
|
|
25
|
+
Compass.configuration.sass_load_paths.each do |load_path|
|
|
26
|
+
monitor.path load_path do |path|
|
|
27
|
+
path.glob '**/*.sass'
|
|
28
|
+
|
|
29
|
+
path.update &method(:recompile)
|
|
30
|
+
path.delete {|base, relative| remove_obsolete_css(base,relative); recompile(base, relative)}
|
|
31
|
+
path.create &method(:recompile)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def remove_obsolete_css(base = nil, relative = nil)
|
|
40
|
+
compiler = new_compiler_instance(:quiet => true)
|
|
41
|
+
sass_files = compiler.sass_files
|
|
42
|
+
deleted_sass_files = (last_sass_files || []) - sass_files
|
|
43
|
+
deleted_sass_files.each do |deleted_sass_file|
|
|
44
|
+
css_file = compiler.corresponding_css_file(deleted_sass_file)
|
|
45
|
+
remove(css_file) if File.exists?(css_file)
|
|
46
|
+
end
|
|
47
|
+
self.last_sass_files = sass_files
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def recompile(base = nil, relative = nil)
|
|
51
|
+
compiler = new_compiler_instance(:quiet => true)
|
|
52
|
+
if file = compiler.out_of_date?
|
|
53
|
+
begin
|
|
54
|
+
puts ">>> Change detected to: #{file}"
|
|
55
|
+
compiler.run
|
|
56
|
+
rescue StandardError => e
|
|
57
|
+
::Compass::Exec.report_error(e, options)
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
require File.join(File.dirname(__FILE__), 'project_base')
|
|
2
|
+
|
|
3
|
+
module Compass
|
|
4
|
+
module Commands
|
|
5
|
+
class WriteConfiguration < ProjectBase
|
|
6
|
+
|
|
7
|
+
include InstallerCommand
|
|
8
|
+
|
|
9
|
+
def initialize(working_path, options)
|
|
10
|
+
super
|
|
11
|
+
assert_project_directory_exists!
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def perform
|
|
15
|
+
installer.write_configuration_files(options[:configuration_file])
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def installer_args
|
|
19
|
+
[nil, project_directory, options]
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def explicit_config_file_must_be_readable?
|
|
23
|
+
false
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
module Compass
|
|
2
|
+
class Compiler
|
|
3
|
+
|
|
4
|
+
include Actions
|
|
5
|
+
|
|
6
|
+
attr_accessor :working_path, :from, :to, :options
|
|
7
|
+
|
|
8
|
+
def initialize(working_path, from, to, options)
|
|
9
|
+
self.working_path = working_path
|
|
10
|
+
self.from, self.to = from, to
|
|
11
|
+
self.logger = options.delete(:logger)
|
|
12
|
+
self.options = options
|
|
13
|
+
self.options[:cache_location] ||= File.join(from, ".sass-cache")
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def sass_files
|
|
17
|
+
@sass_files || Dir.glob(separate("#{from}/**/[^_]*.sass"))
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def stylesheet_name(sass_file)
|
|
21
|
+
sass_file[("#{from}/".length)..-6]
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def css_files
|
|
25
|
+
@css_files ||= sass_files.map{|sass_file| corresponding_css_file(sass_file)}
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def corresponding_css_file(sass_file)
|
|
29
|
+
"#{to}/#{stylesheet_name(sass_file)}.css"
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def target_directories
|
|
33
|
+
css_files.map{|css_file| File.dirname(css_file)}.uniq.sort.sort_by{|d| d.length }
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def out_of_date?
|
|
37
|
+
Compass.configure_sass_plugin! unless Compass.sass_plugin_configured?
|
|
38
|
+
sass_files.zip(css_files).each do |sass_filename, css_filename|
|
|
39
|
+
return sass_filename if Sass::Plugin.exact_stylesheet_needs_update?(css_filename, sass_filename)
|
|
40
|
+
end
|
|
41
|
+
false
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def run
|
|
45
|
+
Compass.configure_sass_plugin! unless Compass.sass_plugin_configured?
|
|
46
|
+
target_directories.each do |dir|
|
|
47
|
+
directory dir
|
|
48
|
+
end
|
|
49
|
+
sass_files.zip(css_files).each do |sass_filename, css_filename|
|
|
50
|
+
compile sass_filename, css_filename, options
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
require 'singleton'
|
|
2
|
+
|
|
3
|
+
module Compass
|
|
4
|
+
class Configuration
|
|
5
|
+
include Singleton
|
|
6
|
+
|
|
7
|
+
ATTRIBUTES = [
|
|
8
|
+
:project_type,
|
|
9
|
+
:project_path,
|
|
10
|
+
:http_path,
|
|
11
|
+
:css_dir,
|
|
12
|
+
:sass_dir,
|
|
13
|
+
:images_dir,
|
|
14
|
+
:javascripts_dir,
|
|
15
|
+
:output_style,
|
|
16
|
+
:environment,
|
|
17
|
+
:relative_assets,
|
|
18
|
+
:http_images_path,
|
|
19
|
+
:http_stylesheets_path,
|
|
20
|
+
:http_javascripts_path,
|
|
21
|
+
:additional_import_paths,
|
|
22
|
+
:sass_options
|
|
23
|
+
]
|
|
24
|
+
|
|
25
|
+
attr_accessor *ATTRIBUTES
|
|
26
|
+
|
|
27
|
+
attr_accessor :required_libraries
|
|
28
|
+
|
|
29
|
+
def initialize
|
|
30
|
+
self.required_libraries = []
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# parses a manifest file which is a ruby script
|
|
34
|
+
# evaluated in a Manifest instance context
|
|
35
|
+
def parse(config_file)
|
|
36
|
+
open(config_file) do |f|
|
|
37
|
+
parse_string(f.read, config_file)
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def parse_string(contents, filename)
|
|
42
|
+
bind = binding
|
|
43
|
+
eval(contents, bind, filename)
|
|
44
|
+
ATTRIBUTES.each do |prop|
|
|
45
|
+
value = eval(prop.to_s, bind) rescue nil
|
|
46
|
+
self.send("#{prop}=", value) if value
|
|
47
|
+
end
|
|
48
|
+
if @added_import_paths
|
|
49
|
+
self.additional_import_paths ||= []
|
|
50
|
+
self.additional_import_paths += @added_import_paths
|
|
51
|
+
end
|
|
52
|
+
issue_deprecation_warnings
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def set_all(options)
|
|
56
|
+
ATTRIBUTES.each do |a|
|
|
57
|
+
self.send("#{a}=", options[a]) if options.has_key?(a)
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def set_maybe(options)
|
|
62
|
+
ATTRIBUTES.each do |a|
|
|
63
|
+
self.send("#{a}=", options[a]) if options[a]
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def default_all(options)
|
|
68
|
+
ATTRIBUTES.each do |a|
|
|
69
|
+
set_default_unless_set(a, options[a])
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def set_default_unless_set(attribute, value)
|
|
74
|
+
self.send("#{attribute}=", value) unless self.send(attribute)
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def set_defaults!
|
|
78
|
+
ATTRIBUTES.each do |a|
|
|
79
|
+
set_default_unless_set(a, default_for(a))
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def default_for(attribute)
|
|
84
|
+
method = "default_#{attribute}".to_sym
|
|
85
|
+
self.send(method) if respond_to?(method)
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def default_sass_dir
|
|
89
|
+
"src"
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def default_css_dir
|
|
93
|
+
"stylesheets"
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def default_images_dir
|
|
97
|
+
"images"
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def default_http_path
|
|
101
|
+
"/"
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def comment_for_http_path
|
|
105
|
+
"# Set this to the root of your project when deployed:\n"
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def relative_assets?
|
|
109
|
+
# the http_images_path is deprecated, but here for backwards compatibility.
|
|
110
|
+
relative_assets || http_images_path == :relative
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
def comment_for_relative_assets
|
|
114
|
+
unless relative_assets
|
|
115
|
+
%q{# To enable relative paths to assets via compass helper functions. Uncomment:
|
|
116
|
+
# relative_assets = true
|
|
117
|
+
}
|
|
118
|
+
else
|
|
119
|
+
""
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
def default_output_style
|
|
124
|
+
if environment == :development
|
|
125
|
+
:expanded
|
|
126
|
+
else
|
|
127
|
+
:compact
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
def default_line_comments
|
|
132
|
+
environment == :development
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
def sass_path
|
|
136
|
+
if project_path && sass_dir
|
|
137
|
+
File.join(project_path, sass_dir)
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
def css_path
|
|
142
|
+
if project_path && css_dir
|
|
143
|
+
File.join(project_path, css_dir)
|
|
144
|
+
end
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
def root_relative(path)
|
|
148
|
+
hp = http_path || default_http_path
|
|
149
|
+
hp = hp[0..-2] if hp[-1..-1] == "/"
|
|
150
|
+
"#{hp}/#{path}"
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
def add_import_path(*paths)
|
|
154
|
+
# The @added_import_paths variable works around an issue where
|
|
155
|
+
# the additional_import_paths gets overwritten during parse
|
|
156
|
+
@added_import_paths ||= []
|
|
157
|
+
@added_import_paths += paths
|
|
158
|
+
self.additional_import_paths ||= []
|
|
159
|
+
self.additional_import_paths += paths
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
# When called with a block, defines the asset host url to be used.
|
|
163
|
+
# The block must return a string that starts with a protocol (E.g. http).
|
|
164
|
+
# The block will be passed the root-relative url of the asset.
|
|
165
|
+
# When called without a block, returns the block that was previously set.
|
|
166
|
+
def asset_host(&block)
|
|
167
|
+
if block_given?
|
|
168
|
+
@asset_host = block
|
|
169
|
+
else
|
|
170
|
+
@asset_host
|
|
171
|
+
end
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
# When called with a block, defines the cache buster strategy to be used.
|
|
175
|
+
# The block must return nil or a string that can be appended to a url as a query parameter.
|
|
176
|
+
# The returned string must not include the starting '?'.
|
|
177
|
+
# The block will be passed the root-relative url of the asset.
|
|
178
|
+
# If the block accepts two arguments, it will also be passed a File object
|
|
179
|
+
# that points to the asset on disk -- which may or may not exist.
|
|
180
|
+
# When called without a block, returns the block that was previously set.
|
|
181
|
+
def asset_cache_buster(&block)
|
|
182
|
+
if block_given?
|
|
183
|
+
@asset_cache_buster = block
|
|
184
|
+
else
|
|
185
|
+
@asset_cache_buster
|
|
186
|
+
end
|
|
187
|
+
end
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
def serialize
|
|
191
|
+
if asset_cache_buster
|
|
192
|
+
raise Compass::Error, "Cannot serialize a configuration with asset_cache_buster set."
|
|
193
|
+
end
|
|
194
|
+
if asset_host
|
|
195
|
+
raise Compass::Error, "Cannot serialize a configuration with asset_host set."
|
|
196
|
+
end
|
|
197
|
+
contents = ""
|
|
198
|
+
required_libraries.each do |lib|
|
|
199
|
+
contents << %Q{require '#{lib}'\n}
|
|
200
|
+
end
|
|
201
|
+
contents << "# Require any additional compass plugins here.\n"
|
|
202
|
+
contents << "\n" if required_libraries.any?
|
|
203
|
+
ATTRIBUTES.each do |prop|
|
|
204
|
+
value = send(prop)
|
|
205
|
+
if respond_to?("comment_for_#{prop}")
|
|
206
|
+
contents << send("comment_for_#{prop}")
|
|
207
|
+
end
|
|
208
|
+
if block_given? && (to_emit = yield(prop, value))
|
|
209
|
+
contents << to_emit
|
|
210
|
+
else
|
|
211
|
+
contents << Configuration.serialize_property(prop, value) unless value.nil?
|
|
212
|
+
end
|
|
213
|
+
end
|
|
214
|
+
contents
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
def self.serialize_property(prop, value)
|
|
218
|
+
%Q(#{prop} = #{value.inspect}\n)
|
|
219
|
+
end
|
|
220
|
+
|
|
221
|
+
def to_compiler_arguments(additional_options)
|
|
222
|
+
[project_path, sass_path, css_path, to_sass_engine_options.merge(additional_options)]
|
|
223
|
+
end
|
|
224
|
+
|
|
225
|
+
def to_sass_plugin_options
|
|
226
|
+
locations = {}
|
|
227
|
+
locations[sass_path] = css_path if sass_path && css_path
|
|
228
|
+
Compass::Frameworks::ALL.each do |framework|
|
|
229
|
+
locations[framework.stylesheets_directory] = css_path || css_dir || "."
|
|
230
|
+
end
|
|
231
|
+
resolve_additional_import_paths.each do |additional_path|
|
|
232
|
+
locations[additional_path] = File.join(css_path || css_dir || ".", File.basename(additional_path))
|
|
233
|
+
end
|
|
234
|
+
plugin_opts = {:template_location => locations}
|
|
235
|
+
plugin_opts[:style] = output_style if output_style
|
|
236
|
+
plugin_opts[:line_comments] = default_line_comments if environment
|
|
237
|
+
plugin_opts.merge!(sass_options || {})
|
|
238
|
+
plugin_opts
|
|
239
|
+
end
|
|
240
|
+
|
|
241
|
+
def resolve_additional_import_paths
|
|
242
|
+
(additional_import_paths || []).map do |path|
|
|
243
|
+
if project_path && !absolute_path?(path)
|
|
244
|
+
File.join(project_path, path)
|
|
245
|
+
else
|
|
246
|
+
path
|
|
247
|
+
end
|
|
248
|
+
end
|
|
249
|
+
end
|
|
250
|
+
|
|
251
|
+
def to_sass_engine_options
|
|
252
|
+
engine_opts = {:load_paths => sass_load_paths}
|
|
253
|
+
engine_opts[:style] = output_style if output_style
|
|
254
|
+
engine_opts[:line_comments] = default_line_comments if environment
|
|
255
|
+
engine_opts.merge!(sass_options || {})
|
|
256
|
+
end
|
|
257
|
+
|
|
258
|
+
def sass_load_paths
|
|
259
|
+
load_paths = []
|
|
260
|
+
load_paths << sass_path if sass_path
|
|
261
|
+
Compass::Frameworks::ALL.each do |framework|
|
|
262
|
+
load_paths << framework.stylesheets_directory if File.exists?(framework.stylesheets_directory)
|
|
263
|
+
end
|
|
264
|
+
load_paths += resolve_additional_import_paths
|
|
265
|
+
load_paths
|
|
266
|
+
end
|
|
267
|
+
|
|
268
|
+
# Support for testing.
|
|
269
|
+
def reset!
|
|
270
|
+
ATTRIBUTES.each do |attr|
|
|
271
|
+
send("#{attr}=", nil)
|
|
272
|
+
end
|
|
273
|
+
@asset_cache_buster = nil
|
|
274
|
+
@asset_host = nil
|
|
275
|
+
@added_import_paths = nil
|
|
276
|
+
self.required_libraries = []
|
|
277
|
+
end
|
|
278
|
+
|
|
279
|
+
def issue_deprecation_warnings
|
|
280
|
+
if http_images_path == :relative
|
|
281
|
+
puts "DEPRECATION WARNING: Please set relative_assets = true to enable relative paths."
|
|
282
|
+
end
|
|
283
|
+
end
|
|
284
|
+
|
|
285
|
+
def require(lib)
|
|
286
|
+
required_libraries << lib
|
|
287
|
+
super
|
|
288
|
+
end
|
|
289
|
+
|
|
290
|
+
def absolute_path?(path)
|
|
291
|
+
# This is only going to work on unix, gonna need a better implementation.
|
|
292
|
+
path.index(File::SEPARATOR) == 0
|
|
293
|
+
end
|
|
294
|
+
end
|
|
295
|
+
|
|
296
|
+
module ConfigHelpers
|
|
297
|
+
def configuration
|
|
298
|
+
if block_given?
|
|
299
|
+
yield Configuration.instance
|
|
300
|
+
end
|
|
301
|
+
Configuration.instance
|
|
302
|
+
end
|
|
303
|
+
|
|
304
|
+
def sass_plugin_configuration
|
|
305
|
+
configuration.to_sass_plugin_options
|
|
306
|
+
end
|
|
307
|
+
|
|
308
|
+
def configure_sass_plugin!
|
|
309
|
+
@sass_plugin_configured = true
|
|
310
|
+
Sass::Plugin.options.merge!(sass_plugin_configuration)
|
|
311
|
+
end
|
|
312
|
+
|
|
313
|
+
def sass_plugin_configured?
|
|
314
|
+
@sass_plugin_configured
|
|
315
|
+
end
|
|
316
|
+
|
|
317
|
+
def sass_engine_options
|
|
318
|
+
configuration.to_sass_engine_options
|
|
319
|
+
end
|
|
320
|
+
end
|
|
321
|
+
|
|
322
|
+
extend ConfigHelpers
|
|
323
|
+
|
|
324
|
+
end
|