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
data/lib/compass/exec.rb
ADDED
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
require File.join(Compass.lib_directory, 'compass', 'dependencies')
|
|
2
|
+
require 'optparse'
|
|
3
|
+
require File.join(Compass.lib_directory, 'compass', 'logger')
|
|
4
|
+
require File.join(Compass.lib_directory, 'compass', 'errors')
|
|
5
|
+
require File.join(Compass.lib_directory, 'compass', 'actions')
|
|
6
|
+
|
|
7
|
+
module Compass
|
|
8
|
+
module Exec
|
|
9
|
+
|
|
10
|
+
def report_error(e, options)
|
|
11
|
+
$stderr.puts "#{e.class} on line #{get_line e} of #{get_file e}: #{e.message}"
|
|
12
|
+
if options[:trace]
|
|
13
|
+
e.backtrace[1..-1].each { |t| $stderr.puts " #{t}" }
|
|
14
|
+
else
|
|
15
|
+
$stderr.puts "Run with --trace to see the full backtrace"
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def get_file(exception)
|
|
20
|
+
exception.backtrace[0].split(/:/, 2)[0]
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def get_line(exception)
|
|
24
|
+
exception.backtrace[0].scan(/:(\d+)/)[0]
|
|
25
|
+
end
|
|
26
|
+
module_function :report_error, :get_file, :get_line
|
|
27
|
+
|
|
28
|
+
class Compass
|
|
29
|
+
|
|
30
|
+
attr_accessor :args, :options, :opts
|
|
31
|
+
|
|
32
|
+
def initialize(args)
|
|
33
|
+
self.args = args
|
|
34
|
+
self.options = {}
|
|
35
|
+
parse!
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def run!
|
|
39
|
+
begin
|
|
40
|
+
perform!
|
|
41
|
+
rescue Exception => e
|
|
42
|
+
raise e if e.is_a? SystemExit
|
|
43
|
+
if e.is_a?(::Compass::Error) || e.is_a?(OptionParser::ParseError)
|
|
44
|
+
$stderr.puts e.message
|
|
45
|
+
else
|
|
46
|
+
::Compass::Exec.report_error(e, @options)
|
|
47
|
+
end
|
|
48
|
+
return 1
|
|
49
|
+
end
|
|
50
|
+
return 0
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
protected
|
|
54
|
+
|
|
55
|
+
def perform!
|
|
56
|
+
if options[:command]
|
|
57
|
+
do_command(options[:command])
|
|
58
|
+
else
|
|
59
|
+
puts self.opts
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def parse!
|
|
64
|
+
self.opts = OptionParser.new(&method(:set_opts))
|
|
65
|
+
self.opts.parse!(self.args)
|
|
66
|
+
if self.args.size > 0
|
|
67
|
+
self.options[:project_name] = trim_trailing_separator(self.args.shift)
|
|
68
|
+
end
|
|
69
|
+
self.options[:command] ||= self.options[:project_name] ? :create_project : :update_project
|
|
70
|
+
self.options[:framework] ||= :compass
|
|
71
|
+
self.options[:project_type] ||= :stand_alone
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def trim_trailing_separator(path)
|
|
75
|
+
path[-1..-1] == File::SEPARATOR ? path[0..-2] : path
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def set_opts(opts)
|
|
79
|
+
opts.banner = <<END
|
|
80
|
+
Usage: compass [options] [project]
|
|
81
|
+
|
|
82
|
+
Description:
|
|
83
|
+
The compass command line tool will help you create and manage the stylesheets for your project.
|
|
84
|
+
|
|
85
|
+
To get started on a stand-alone project based on blueprint:
|
|
86
|
+
|
|
87
|
+
compass -f blueprint my_compass_project
|
|
88
|
+
|
|
89
|
+
When you change any sass files, you must recompile your project using --update or --watch.
|
|
90
|
+
END
|
|
91
|
+
opts.separator ''
|
|
92
|
+
opts.separator 'Mode Options(only specify one):'
|
|
93
|
+
|
|
94
|
+
opts.on('-i', '--install', :NONE, "Create a new compass project.",
|
|
95
|
+
" The default mode when a project is provided.") do
|
|
96
|
+
self.options[:command] = :create_project
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
opts.on('-u', '--update', :NONE, 'Update the current project.',
|
|
100
|
+
' This is the default when no project is provided.') do
|
|
101
|
+
self.options[:command] = :update_project
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
opts.on('-w', '--watch', :NONE, 'Monitor the current project for changes and update') do
|
|
105
|
+
self.options[:command] = :watch_project
|
|
106
|
+
self.options[:quiet] = true
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
opts.on('-p', '--pattern PATTERN', 'Stamp out a pattern into the current project.',
|
|
110
|
+
' Must be used with -f.') do |pattern|
|
|
111
|
+
self.options[:command] = :stamp_pattern
|
|
112
|
+
self.options[:pattern] = pattern
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
opts.on('--write-configuration', "Write the current configuration to the configuration file.") do
|
|
116
|
+
self.options[:command] = :write_configuration
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
opts.on('--list-frameworks', "List compass frameworks available to use.") do
|
|
120
|
+
self.options[:command] = :list_frameworks
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
opts.on('--validate', :NONE, 'Validate your project\'s compiled css. Requires Java.') do
|
|
124
|
+
self.options[:command] = :validate_project
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
opts.on('--grid-img [DIMENSIONS]', 'Generate a background image to test grid alignment.',
|
|
128
|
+
' Dimension is given as <column_width>+<gutter_width>.',
|
|
129
|
+
' Defaults to 30+10.') do |dimensions|
|
|
130
|
+
self.options[:grid_dimensions] = dimensions || "30+10"
|
|
131
|
+
unless self.options[:grid_dimensions] =~ /^\d+\+\d+$/
|
|
132
|
+
puts "Please enter your dimensions as <column_width>+<gutter_width>. E.g. 20+5 or 30+10."
|
|
133
|
+
exit
|
|
134
|
+
end
|
|
135
|
+
self.options[:command] = :generate_grid_background
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
opts.separator ''
|
|
139
|
+
opts.separator 'Install/Pattern Options:'
|
|
140
|
+
|
|
141
|
+
opts.on('-f FRAMEWORK', '--framework FRAMEWORK', 'Use the specified framework. Only one may be specified.') do |framework|
|
|
142
|
+
self.options[:framework] = framework
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
opts.on('-n', '--pattern-name NAME', 'The name to use when stamping a pattern.',
|
|
146
|
+
' Must be used in combination with -p.') do |name|
|
|
147
|
+
self.options[:pattern_name] = name
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
opts.on('--rails', "Sets the project type to a rails project.") do
|
|
151
|
+
self.options[:project_type] = :rails
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
opts.separator ''
|
|
155
|
+
opts.separator 'Configuration Options:'
|
|
156
|
+
|
|
157
|
+
opts.on('-c', '--config CONFIG_FILE', 'Specify the location of the configuration file explicitly.') do |configuration_file|
|
|
158
|
+
self.options[:configuration_file] = configuration_file
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
opts.on('--sass-dir SRC_DIR', "The source directory where you keep your sass stylesheets.") do |sass_dir|
|
|
162
|
+
self.options[:sass_dir] = sass_dir
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
opts.on('--css-dir CSS_DIR', "The target directory where you keep your css stylesheets.") do |css_dir|
|
|
166
|
+
self.options[:css_dir] = css_dir
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
opts.on('--images-dir IMAGES_DIR', "The directory where you keep your images.") do |images_dir|
|
|
170
|
+
self.options[:images_dir] = images_dir
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
opts.on('--javascripts-dir JS_DIR', "The directory where you keep your javascripts.") do |javascripts_dir|
|
|
174
|
+
self.options[:javascripts_dir] = javascripts_dir
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
opts.on('-e ENV', '--environment ENV', [:development, :production], 'Use sensible defaults for your current environment.',
|
|
178
|
+
' One of: development, production (default)') do |env|
|
|
179
|
+
self.options[:environment] = env
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
opts.on('-s STYLE', '--output-style STYLE', [:nested, :expanded, :compact, :compressed], 'Select a CSS output mode.',
|
|
183
|
+
' One of: nested, expanded, compact, compressed') do |style|
|
|
184
|
+
self.options[:output_style] = style
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
opts.on('--relative-assets', :NONE, 'Make compass asset helpers generate relative urls to assets.') do
|
|
188
|
+
self.options[:relative_assets] = true
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
opts.separator ''
|
|
192
|
+
opts.separator 'General Options:'
|
|
193
|
+
|
|
194
|
+
opts.on('-r LIBRARY', '--require LIBRARY', "Require the given ruby LIBRARY before running commands.",
|
|
195
|
+
" This is used to access compass plugins without having a",
|
|
196
|
+
" project configuration file.") do |library|
|
|
197
|
+
::Compass.configuration.require library
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
opts.on('-q', '--quiet', :NONE, 'Quiet mode.') do
|
|
201
|
+
self.options[:quiet] = true
|
|
202
|
+
end
|
|
203
|
+
|
|
204
|
+
opts.on('--dry-run', :NONE, 'Dry Run. Tells you what it plans to do.') do
|
|
205
|
+
self.options[:dry_run] = true
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
opts.on('--trace', :NONE, 'Show a full stacktrace on error') do
|
|
209
|
+
self.options[:trace] = true
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
opts.on('--force', :NONE, 'Force. Allows some failing commands to succeed instead.') do
|
|
213
|
+
self.options[:force] = true
|
|
214
|
+
end
|
|
215
|
+
|
|
216
|
+
opts.on('--imports', :NONE, 'Emit an imports suitable for passing to the sass command-line.',
|
|
217
|
+
' Example: sass `compass --imports`',
|
|
218
|
+
' Note: Compass\'s Sass extensions will not be available.') do
|
|
219
|
+
print ::Compass::Frameworks::ALL.map{|f| "-I #{f.stylesheets_directory}"}.join(' ')
|
|
220
|
+
exit
|
|
221
|
+
end
|
|
222
|
+
|
|
223
|
+
opts.on('--install-dir', :NONE, 'Emit the location where compass is installed.') do
|
|
224
|
+
puts ::Compass.base_directory
|
|
225
|
+
exit
|
|
226
|
+
end
|
|
227
|
+
|
|
228
|
+
opts.on_tail("-?", "-h", "--help", "Show this message") do
|
|
229
|
+
puts opts
|
|
230
|
+
exit
|
|
231
|
+
end
|
|
232
|
+
|
|
233
|
+
opts.on_tail("-v", "--version", "Print version") do
|
|
234
|
+
self.options[:command] = :print_version
|
|
235
|
+
end
|
|
236
|
+
|
|
237
|
+
end
|
|
238
|
+
|
|
239
|
+
def do_command(command)
|
|
240
|
+
command_class_name = command.to_s.split(/_/).map{|p| p.capitalize}.join('')
|
|
241
|
+
command_class = eval("::Compass::Commands::#{command_class_name}")
|
|
242
|
+
command_class.new(Dir.getwd, options).execute
|
|
243
|
+
end
|
|
244
|
+
|
|
245
|
+
end
|
|
246
|
+
end
|
|
247
|
+
end
|
|
248
|
+
|
|
249
|
+
Dir.glob(File.join(File.dirname(__FILE__), 'commands', "*.rb")).each do |file|
|
|
250
|
+
require file
|
|
251
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
module Compass
|
|
2
|
+
module Frameworks
|
|
3
|
+
ALL = []
|
|
4
|
+
class Framework
|
|
5
|
+
attr_accessor :name
|
|
6
|
+
attr_accessor :templates_directory, :stylesheets_directory
|
|
7
|
+
def initialize(name, *arguments)
|
|
8
|
+
options = arguments.last.is_a?(Hash) ? arguments.pop : {}
|
|
9
|
+
path = options[:path] || arguments.shift
|
|
10
|
+
@name = name
|
|
11
|
+
@templates_directory = options[:templates_directory] || File.join(path, 'templates')
|
|
12
|
+
@stylesheets_directory = options[:stylesheets_directory] || File.join(path, 'stylesheets')
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
def register(name, *arguments)
|
|
16
|
+
ALL << Framework.new(name, *arguments)
|
|
17
|
+
end
|
|
18
|
+
def [](name)
|
|
19
|
+
ALL.detect{|f| f.name.to_s == name.to_s}
|
|
20
|
+
end
|
|
21
|
+
module_function :register, :[]
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# Import all of the default frameworks.
|
|
26
|
+
default_frameworks_directory = File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'frameworks'))
|
|
27
|
+
Dir.glob(File.join(default_frameworks_directory, "*.rb")).each do |framework|
|
|
28
|
+
require framework
|
|
29
|
+
end
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# This file came from the Blueprint Project
|
|
2
|
+
begin
|
|
3
|
+
require 'rubygems'
|
|
4
|
+
gem 'rmagick'
|
|
5
|
+
require 'rvg/rvg'
|
|
6
|
+
rescue Exception => e
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
module Compass
|
|
10
|
+
# Uses ImageMagick and RMagick to generate grid.png file
|
|
11
|
+
class GridBuilder
|
|
12
|
+
include Actions
|
|
13
|
+
|
|
14
|
+
begin
|
|
15
|
+
include Magick
|
|
16
|
+
rescue Exception => e
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
attr_reader :column_width, :gutter_width, :output_path, :able_to_generate, :options
|
|
20
|
+
|
|
21
|
+
# ==== Options
|
|
22
|
+
# * <tt>options</tt>
|
|
23
|
+
# * <tt>:column_width</tt> -- Width (in pixels) of current grid column
|
|
24
|
+
# * <tt>:gutter_width</tt> -- Width (in pixels) of current grid gutter
|
|
25
|
+
# * <tt>:output_path</tt> -- Output path of grid.png file
|
|
26
|
+
def initialize(options={})
|
|
27
|
+
@able_to_generate = Magick::Long_version rescue false
|
|
28
|
+
return unless @able_to_generate
|
|
29
|
+
@column_width = options[:column_width]
|
|
30
|
+
@gutter_width = options[:gutter_width]
|
|
31
|
+
@output_path = options[:output_path]
|
|
32
|
+
@options = options
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def working_path
|
|
36
|
+
options[:working_path]
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# generates (overwriting if necessary) grid.png image to be tiled in background
|
|
40
|
+
def generate!
|
|
41
|
+
return false unless self.able_to_generate
|
|
42
|
+
total_width = self.column_width + self.gutter_width
|
|
43
|
+
height = 20
|
|
44
|
+
RVG::dpi = 100
|
|
45
|
+
|
|
46
|
+
rvg = RVG.new((total_width.to_f/RVG::dpi).in, (height.to_f/RVG::dpi).in).viewbox(0, 0, total_width, height) do |canvas|
|
|
47
|
+
canvas.background_fill = 'white'
|
|
48
|
+
|
|
49
|
+
canvas.g do |column|
|
|
50
|
+
column.rect(self.column_width, height).styles(:fill => "#e8effb")
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
canvas.g do |baseline|
|
|
54
|
+
baseline.line(0, (height - 1), total_width, (height- 1)).styles(:fill => "#e9e9e9")
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
filename = File.join(self.output_path, "grid.png")
|
|
59
|
+
if File.exists?(filename)
|
|
60
|
+
if options[:force]
|
|
61
|
+
overwrite = true
|
|
62
|
+
else
|
|
63
|
+
msg = "#{filename} already exists. Overwrite with --force."
|
|
64
|
+
raise Compass::FilesystemConflict.new(msg)
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
directory self.output_path
|
|
68
|
+
logger.record((overwrite ? :overwrite : :create), basename(filename))
|
|
69
|
+
rvg.draw.write(filename)
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
require File.join(File.dirname(__FILE__), 'installers', 'manifest')
|
|
2
|
+
require File.join(File.dirname(__FILE__), 'installers', 'base')
|
|
3
|
+
require File.join(File.dirname(__FILE__), 'installers', 'stand_alone')
|
|
4
|
+
require File.join(File.dirname(__FILE__), 'installers', 'rails')
|
|
5
|
+
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
module Compass
|
|
2
|
+
module Installers
|
|
3
|
+
|
|
4
|
+
class Base
|
|
5
|
+
|
|
6
|
+
include Actions
|
|
7
|
+
|
|
8
|
+
attr_accessor :template_path, :target_path, :working_path
|
|
9
|
+
attr_accessor :options
|
|
10
|
+
attr_accessor :manifest
|
|
11
|
+
|
|
12
|
+
def initialize(template_path, target_path, options = {})
|
|
13
|
+
@template_path = template_path
|
|
14
|
+
@target_path = target_path
|
|
15
|
+
@working_path = Dir.getwd
|
|
16
|
+
@options = options
|
|
17
|
+
@manifest = Manifest.new(manifest_file) if template_path
|
|
18
|
+
self.logger = options[:logger]
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def manifest_file
|
|
22
|
+
@manifest_file ||= File.join(template_path, "manifest.rb")
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
[:css_dir, :sass_dir, :images_dir, :javascripts_dir].each do |dir|
|
|
26
|
+
define_method dir do
|
|
27
|
+
Compass.configuration.send(dir)
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# Initializes the project to work with compass
|
|
32
|
+
def init
|
|
33
|
+
dirs = manifest.map do |entry|
|
|
34
|
+
File.dirname(send("install_location_for_#{entry.type}", entry.to, entry.options))
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
if manifest.has_stylesheet?
|
|
38
|
+
dirs << sass_dir
|
|
39
|
+
dirs << css_dir
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
dirs.uniq.sort.each do |dir|
|
|
43
|
+
directory targetize(dir)
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# Runs the installer.
|
|
48
|
+
# Every installer must conform to the installation strategy of prepare, install, and then finalize.
|
|
49
|
+
# A default implementation is provided for each step.
|
|
50
|
+
def run(options = {})
|
|
51
|
+
prepare
|
|
52
|
+
install
|
|
53
|
+
finalize unless options[:skip_finalization]
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# The default prepare method -- it is a no-op.
|
|
57
|
+
# Generally you would create required directories, etc.
|
|
58
|
+
def prepare
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def configure_option_with_default(opt)
|
|
62
|
+
value = options[opt]
|
|
63
|
+
value ||= begin
|
|
64
|
+
default_method = "default_#{opt}".to_sym
|
|
65
|
+
send(default_method) if respond_to?(default_method)
|
|
66
|
+
end
|
|
67
|
+
send("#{opt}=", value)
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# The default install method. Calls install_<type> methods in the order specified by the manifest.
|
|
71
|
+
def install
|
|
72
|
+
manifest.each do |entry|
|
|
73
|
+
send("install_#{entry.type}", entry.from, entry.to, entry.options)
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
# The default finalize method -- it is a no-op.
|
|
78
|
+
# This could print out a message or something.
|
|
79
|
+
def finalize
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
def compilation_required?
|
|
83
|
+
false
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def pattern_name_as_dir
|
|
87
|
+
"#{options[:pattern_name]}/" if options[:pattern_name]
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def self.installer(type, installer_opts = {}, &locator)
|
|
91
|
+
locator ||= lambda{|to| to}
|
|
92
|
+
loc_method = "install_location_for_#{type}".to_sym
|
|
93
|
+
define_method("simple_#{loc_method}", locator)
|
|
94
|
+
define_method(loc_method) do |to, options|
|
|
95
|
+
if options[:like] && options[:like] != type
|
|
96
|
+
send("install_location_for_#{options[:like]}", to, options)
|
|
97
|
+
else
|
|
98
|
+
send("simple_#{loc_method}", to)
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
define_method "install_#{type}" do |from, to, options|
|
|
102
|
+
from = templatize(from)
|
|
103
|
+
to = targetize(send(loc_method, to, options))
|
|
104
|
+
copy from, to, nil, (installer_opts[:binary] || options[:binary])
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
installer :stylesheet do |to|
|
|
109
|
+
"#{sass_dir}/#{pattern_name_as_dir}#{to}"
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
installer :css do |to|
|
|
113
|
+
"#{css_dir}/#{to}"
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
installer :image, :binary => true do |to|
|
|
117
|
+
"#{images_dir}/#{to}"
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
installer :javascript do |to|
|
|
121
|
+
"#{javascripts_dir}/#{to}"
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
installer :file do |to|
|
|
125
|
+
"#{pattern_name_as_dir}#{to}"
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
# returns an absolute path given a path relative to the current installation target.
|
|
129
|
+
# Paths can use unix style "/" and will be corrected for the current platform.
|
|
130
|
+
def targetize(path)
|
|
131
|
+
strip_trailing_separator File.join(target_path, separate(path))
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
# returns an absolute path given a path relative to the current template.
|
|
135
|
+
# Paths can use unix style "/" and will be corrected for the current platform.
|
|
136
|
+
def templatize(path)
|
|
137
|
+
strip_trailing_separator File.join(template_path, separate(path))
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
def stylesheet_links
|
|
141
|
+
html = "<head>\n"
|
|
142
|
+
manifest.each_stylesheet do |stylesheet|
|
|
143
|
+
# Skip partials.
|
|
144
|
+
next if File.basename(stylesheet.from)[0..0] == "_"
|
|
145
|
+
media = if stylesheet.options[:media]
|
|
146
|
+
%Q{ media="#{stylesheet.options[:media]}"}
|
|
147
|
+
end
|
|
148
|
+
ss_line = %Q{ <link href="/stylesheets/#{stylesheet.to.sub(/\.sass$/,'.css')}"#{media} rel="stylesheet" type="text/css" />}
|
|
149
|
+
if stylesheet.options[:condition]
|
|
150
|
+
ss_line = " <!--[if #{stylesheet.options[:condition]}]>\n #{ss_line}\n <![endif]-->"
|
|
151
|
+
end
|
|
152
|
+
html << ss_line + "\n"
|
|
153
|
+
end
|
|
154
|
+
html << "</head>"
|
|
155
|
+
end
|
|
156
|
+
end
|
|
157
|
+
end
|
|
158
|
+
end
|