chriseppstein-compass 0.6.15 → 0.7.0
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 +170 -0
- data/LICENSE.markdown +29 -0
- data/README.markdown +10 -2
- data/REVISION +1 -1
- data/Rakefile +126 -0
- data/VERSION.yml +2 -2
- data/deps.rip +1 -0
- data/examples/blueprint_default/src/images/grid.png +0 -0
- data/examples/blueprint_plugins/src/images/grid.png +0 -0
- data/examples/blueprint_scoped/images/grid.png +0 -0
- data/examples/blueprint_scoped_form/images/grid.png +0 -0
- data/examples/blueprint_semantic/src/images/grid.png +0 -0
- data/examples/blueprint_semantic/src/liquid.sass +2 -2
- data/examples/blueprint_semantic/src/screen.sass +3 -3
- data/examples/compass/src/images/blue_arrow.gif +0 -0
- data/frameworks/blueprint/stylesheets/blueprint/_ie.sass +42 -0
- data/frameworks/blueprint/stylesheets/blueprint/_reset.sass +3 -0
- data/frameworks/blueprint/stylesheets/blueprint/modules/_fancy_type.sass +10 -9
- data/frameworks/blueprint/stylesheets/blueprint/modules/_form.sass +35 -23
- data/frameworks/blueprint/stylesheets/blueprint/modules/_grid.sass +7 -7
- data/frameworks/blueprint/stylesheets/blueprint/modules/_reset.sass +56 -0
- data/frameworks/blueprint/stylesheets/blueprint/modules/_rtl.sass +2 -2
- data/frameworks/blueprint/stylesheets/blueprint/modules/_scaffolding.sass +2 -1
- data/frameworks/blueprint/stylesheets/blueprint/modules/_typography.sass +3 -2
- data/frameworks/blueprint/templates/project/manifest.rb +2 -1
- data/frameworks/blueprint/templates/project/partials/_base.sass +11 -0
- data/frameworks/blueprint/templates/project/screen.sass +38 -6
- data/frameworks/compass/stylesheets/compass/_utilities.sass +1 -0
- data/frameworks/compass/stylesheets/compass/utilities/_sprites.sass +1 -0
- data/frameworks/compass/stylesheets/compass/utilities/general/_reset.sass +106 -28
- data/frameworks/compass/stylesheets/compass/utilities/general/_tag_cloud.sass +1 -1
- data/frameworks/compass/stylesheets/compass/utilities/sprites/_sprite_img.sass +12 -0
- data/frameworks/compass/stylesheets/compass/utilities/text/_replacement.sass +10 -3
- data/frameworks/compass/templates/project/manifest.rb +1 -1
- data/frameworks/compass/templates/project/screen.sass +6 -0
- data/lib/compass/actions.rb +7 -0
- data/lib/compass/{merb.rb → app_integration/merb.rb} +0 -0
- data/lib/compass/app_integration/rails/action_controller.rb +15 -0
- data/lib/compass/app_integration/rails/image_url.rb +14 -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.rb +12 -0
- data/lib/compass/app_integration.rb +5 -0
- data/lib/compass/commands/project_base.rb +12 -2
- data/lib/compass/commands/update_project.rb +13 -3
- data/lib/compass/commands/watch_project.rb +27 -28
- data/lib/compass/commands/write_configuration.rb +5 -1
- data/lib/compass/compiler.rb +14 -2
- data/lib/compass/configuration.rb +78 -2
- data/lib/compass/exec.rb +78 -37
- data/lib/compass/installers/base.rb +4 -2
- data/lib/compass/installers/rails.rb +3 -2
- data/lib/compass/installers/stand_alone.rb +3 -2
- 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/image_url.rb +88 -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.rb +19 -0
- data/lib/compass/sass_extensions/monkey_patches/stylesheet_updating.rb +23 -0
- data/lib/compass/sass_extensions/monkey_patches.rb +3 -0
- data/lib/compass/sass_extensions.rb +5 -0
- data/lib/compass/version.rb +2 -3
- data/lib/compass.rb +3 -18
- data/test/command_line_helper.rb +102 -0
- data/test/command_line_test.rb +2 -106
- data/test/compass_test.rb +18 -6
- data/test/configuration_test.rb +73 -0
- data/test/fixtures/stylesheets/blueprint/images/grid.png +0 -0
- data/test/fixtures/stylesheets/compass/css/reset.css +42 -46
- data/test/fixtures/stylesheets/compass/sass/reset.sass +9 -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/rails_integration_test.rb +83 -0
- data/test/sass_extensions_test.rb +0 -1
- data/test/test_case_helper.rb +13 -0
- data/test/test_helper.rb +3 -27
- data/test/test_rails_helper.rb +20 -0
- metadata +51 -4
- data/lib/sass_extensions.rb +0 -67
@@ -0,0 +1,56 @@
|
|
1
|
+
// Global reset rules.
|
2
|
+
// For more specific resets, use the reset mixins provided below
|
3
|
+
=blueprint-global-reset
|
4
|
+
html, body
|
5
|
+
+blueprint-reset
|
6
|
+
+blueprint-nested-reset
|
7
|
+
|
8
|
+
// Reset all elements within some selector scope.To reset the selector itself,
|
9
|
+
// mixin the appropriate reset mixin for that element type as well. This could be
|
10
|
+
// useful if you want to style a part of your page in a dramatically different way.
|
11
|
+
=blueprint-nested-reset
|
12
|
+
div, span, object, iframe, h1, h2, h3, h4, h5, h6, p,
|
13
|
+
pre, a, abbr, acronym, address, code, del, dfn, em, img,
|
14
|
+
dl, dt, dd, ol, ul, li, fieldset, form, label, legend, caption, tbody, tfoot, thead, tr
|
15
|
+
+blueprint-reset
|
16
|
+
blockquote, q
|
17
|
+
+blueprint-reset-quotation
|
18
|
+
th, td, caption
|
19
|
+
+blueprint-reset-table-cell
|
20
|
+
table
|
21
|
+
+blueprint-reset-table
|
22
|
+
a img
|
23
|
+
:border none
|
24
|
+
|
25
|
+
=blueprint-reset-box-model
|
26
|
+
:margin 0
|
27
|
+
:padding 0
|
28
|
+
:border 0
|
29
|
+
|
30
|
+
=blueprint-reset
|
31
|
+
+blueprint-reset-box-model
|
32
|
+
:font
|
33
|
+
:weight inherit
|
34
|
+
:style inherit
|
35
|
+
:size 100%
|
36
|
+
:family inherit
|
37
|
+
:vertical-align baseline
|
38
|
+
|
39
|
+
=blueprint-reset-quotation
|
40
|
+
+blueprint-reset
|
41
|
+
:quotes "" ""
|
42
|
+
&:before,
|
43
|
+
&:after
|
44
|
+
:content ""
|
45
|
+
|
46
|
+
=blueprint-reset-table-cell
|
47
|
+
+blueprint-reset
|
48
|
+
:text-align left
|
49
|
+
:font-weight normal
|
50
|
+
:vertical-align middle
|
51
|
+
|
52
|
+
=blueprint-reset-table
|
53
|
+
+blueprint-reset
|
54
|
+
:border-collapse separate
|
55
|
+
:border-spacing 0
|
56
|
+
:vertical-align middle
|
@@ -66,8 +66,8 @@
|
|
66
66
|
|
67
67
|
// Border with more whitespace, spans one column.
|
68
68
|
=colborder
|
69
|
-
:padding-left= !blueprint_grid_width -
|
70
|
-
:margin-left= !blueprint_grid_width -
|
69
|
+
:padding-left= (!blueprint_grid_width - 2 * !blueprint_grid_margin - 1)/2
|
70
|
+
:margin-left= (!blueprint_grid_width - 2 * !blueprint_grid_margin)/2
|
71
71
|
:border-left 1px solid #eee
|
72
72
|
|
73
73
|
=rtl-typography(!body_selector = "body")
|
@@ -16,12 +16,13 @@
|
|
16
16
|
|
17
17
|
=blueprint-scaffolding(!body_selector = "body")
|
18
18
|
#{!body_selector}
|
19
|
-
+blueprint-scaffolding-body
|
20
19
|
@if !body_selector != "body"
|
21
20
|
+blueprint-scaffolding-defaults
|
22
21
|
@if !body_selector == "body"
|
23
22
|
+blueprint-scaffolding-defaults
|
24
23
|
|
24
|
+
// The styles this mixin provides were deprecated in Blueprint 0.9 and is no longer part of the
|
25
|
+
// main scaffolding, but the mixin is still available if you want to use it.
|
25
26
|
=blueprint-scaffolding-body
|
26
27
|
:margin 1.5em 0
|
27
28
|
|
@@ -4,6 +4,7 @@
|
|
4
4
|
|
5
5
|
!blueprint_font_family ||= "Helvetica Neue, Arial, Helvetica, sans-serif"
|
6
6
|
!blueprint_fixed_font_family ||= "'andale mono', 'lucida console', monospace"
|
7
|
+
!blueprint_font_size ||= 12px
|
7
8
|
|
8
9
|
// The +blueprint-typography mixin must be mixed into the top level of your stylesheet.
|
9
10
|
// However, you can customize the body selector if you wish to control the scope
|
@@ -43,10 +44,10 @@
|
|
43
44
|
=loud
|
44
45
|
:color= !loud_color
|
45
46
|
|
46
|
-
=blueprint-typography-body
|
47
|
+
=blueprint-typography-body(!font_size = !blueprint_font_size)
|
47
48
|
:line-height 1.5
|
48
49
|
+normal-text
|
49
|
-
:font-size
|
50
|
+
:font-size= 100% * !font_size / 16px
|
50
51
|
|
51
52
|
=blueprint-typography-defaults
|
52
53
|
h1
|
@@ -1,5 +1,6 @@
|
|
1
1
|
stylesheet 'screen.sass', :media => 'screen, projection'
|
2
|
+
stylesheet 'partials/_base.sass'
|
2
3
|
stylesheet 'print.sass', :media => 'print'
|
3
|
-
stylesheet 'ie.sass', :media => 'screen, projection', :
|
4
|
+
stylesheet 'ie.sass', :media => 'screen, projection', :condition => "lt IE 8"
|
4
5
|
|
5
6
|
image 'grid.png'
|
@@ -0,0 +1,11 @@
|
|
1
|
+
// Here is where you can define your constants for your application and to configure the blueprint framework.
|
2
|
+
// Feel free to delete these if you want keep the defaults:
|
3
|
+
|
4
|
+
!blueprint_grid_columns = 24
|
5
|
+
!blueprint_container_size = 950px
|
6
|
+
!blueprint_grid_margin = 10px
|
7
|
+
|
8
|
+
// Use this to calculate the width based on the total width.
|
9
|
+
// Or you can set !blueprint_grid_width to a fixed value and unset !blueprint_container_size -- it will be calculated for you.
|
10
|
+
!blueprint_grid_width = (!blueprint_container_size + !blueprint_grid_margin) / !blueprint_grid_columns - !blueprint_grid_margin
|
11
|
+
|
@@ -1,8 +1,40 @@
|
|
1
|
-
|
1
|
+
// This import applies a global reset to any page that imports this stylesheet.
|
2
|
+
@import blueprint/reset.sass
|
3
|
+
// To configure blueprint, edit the partials/base.sass file.
|
4
|
+
@import partials/base.sass
|
5
|
+
// Import all the default blueprint modules so that we can access their mixins.
|
6
|
+
@import blueprint
|
7
|
+
// Import the non-default scaffolding module.
|
2
8
|
@import blueprint/modules/scaffolding.sass
|
3
|
-
@import compass/reset.sass
|
4
9
|
|
5
|
-
|
6
|
-
//
|
7
|
-
|
8
|
-
|
10
|
+
// To generate css equivalent to the blueprint css but with your configuration applied, uncomment:
|
11
|
+
// +blueprint
|
12
|
+
|
13
|
+
//Recommended Blueprint configuration with scoping and semantic layout:
|
14
|
+
body.bp
|
15
|
+
+blueprint-typography
|
16
|
+
+blueprint-utilities
|
17
|
+
+blueprint-debug
|
18
|
+
+blueprint-interaction
|
19
|
+
// Remove the scaffolding when you're ready to start doing visual design.
|
20
|
+
// Or leave it in if you're happy with how blueprint looks out-of-the-box
|
21
|
+
+blueprint-scaffolding
|
22
|
+
form.bp
|
23
|
+
+blueprint-form
|
24
|
+
|
25
|
+
// Page layout can be done using mixins applied to your semantic classes and IDs:
|
26
|
+
body.three-col
|
27
|
+
#container
|
28
|
+
+container
|
29
|
+
#header, #footer
|
30
|
+
+column(!blueprint_grid_columns)
|
31
|
+
#sidebar
|
32
|
+
// One third of the grid columns, rounding down. With 24 cols, this is 8.
|
33
|
+
!sidebar_columns = floor(!blueprint_grid_columns / 3)
|
34
|
+
+column(!sidebar_columns)
|
35
|
+
#content
|
36
|
+
// Two thirds of the grid columns, rounding up.
|
37
|
+
// With 24 cols, this is 16.
|
38
|
+
!content_columns = ceil(2 * !blueprint_grid_columns / 3)
|
39
|
+
// true means it's the last column in the row
|
40
|
+
+column(!content_columns, true)
|
@@ -0,0 +1 @@
|
|
1
|
+
@import sprites/sprite_img.sass
|
@@ -1,10 +1,42 @@
|
|
1
|
+
// Based on Eric Meyer's reset http://meyerweb.com/eric/thoughts/2007/05/01/reset-reloaded/
|
2
|
+
|
1
3
|
// Global reset rules.
|
2
4
|
// For more specific resets, use the reset mixins provided below
|
3
5
|
=global-reset
|
4
|
-
html, body
|
5
|
-
|
6
|
-
|
6
|
+
html, body, div, span, applet, object, iframe,
|
7
|
+
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
|
8
|
+
a, abbr, acronym, address, big, cite, code,
|
9
|
+
del, dfn, em, font, img, ins, kbd, q, s, samp,
|
10
|
+
small, strike, strong, sub, sup, tt, var,
|
11
|
+
dl, dt, dd, ol, ul, li,
|
12
|
+
fieldset, form, label, legend,
|
13
|
+
table, caption, tbody, tfoot, thead, tr, th, td
|
14
|
+
+reset-box-model
|
15
|
+
+reset-font
|
16
|
+
|
17
|
+
*:focus
|
18
|
+
+reset-focus
|
19
|
+
|
20
|
+
body
|
21
|
+
+reset-body
|
22
|
+
|
23
|
+
ol, ul
|
24
|
+
+reset-list-style
|
7
25
|
|
26
|
+
/* tables still need 'cellspacing="0"' in the markup
|
27
|
+
table
|
28
|
+
+reset-table
|
29
|
+
|
30
|
+
caption, th, td
|
31
|
+
+reset-table-cell
|
32
|
+
|
33
|
+
q, blockquote
|
34
|
+
+reset-quotation
|
35
|
+
|
36
|
+
img a
|
37
|
+
+reset-image-anchor-border
|
38
|
+
|
39
|
+
|
8
40
|
// Reset all elements within some selector scope.To reset the selector itself,
|
9
41
|
// mixin the appropriate reset mixin for that element type as well. This could be
|
10
42
|
// useful if you want to style a part of your page in a dramatically different way.
|
@@ -12,45 +44,91 @@
|
|
12
44
|
div, span, object, iframe, h1, h2, h3, h4, h5, h6, p,
|
13
45
|
pre, a, abbr, acronym, address, code, del, dfn, em, img,
|
14
46
|
dl, dt, dd, ol, ul, li, fieldset, form, label, legend, caption, tbody, tfoot, thead, tr
|
15
|
-
+reset
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
+reset-table-cell
|
47
|
+
+reset-box-model
|
48
|
+
+reset-font
|
49
|
+
|
50
|
+
/* tables still need 'cellspacing="0"' in the markup
|
20
51
|
table
|
21
52
|
+reset-table
|
22
|
-
|
23
|
-
|
24
|
-
|
53
|
+
|
54
|
+
caption, th, td
|
55
|
+
+reset-table-cell
|
56
|
+
|
57
|
+
q, blockquote
|
58
|
+
+reset-quotation
|
59
|
+
|
60
|
+
img a
|
61
|
+
+reset-image-anchor-border
|
62
|
+
|
63
|
+
//Mixins partials
|
25
64
|
=reset-box-model
|
26
65
|
:margin 0
|
27
66
|
:padding 0
|
28
67
|
:border 0
|
29
|
-
|
30
|
-
|
31
|
-
|
68
|
+
:outline 0
|
69
|
+
|
70
|
+
=reset-font
|
32
71
|
:font
|
33
72
|
:weight inherit
|
34
73
|
:style inherit
|
35
74
|
:size 100%
|
36
75
|
:family inherit
|
37
76
|
:vertical-align baseline
|
38
|
-
|
39
|
-
=reset-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
77
|
+
|
78
|
+
=reset-focus
|
79
|
+
:outline 0
|
80
|
+
|
81
|
+
=reset-body
|
82
|
+
:line-height 1em
|
83
|
+
:color = #000
|
84
|
+
:background #fff
|
85
|
+
|
86
|
+
=reset-list-style
|
87
|
+
:list-style none
|
88
|
+
|
89
|
+
=reset-table
|
90
|
+
:border-collapse separate
|
91
|
+
:border-spacing 0
|
92
|
+
:vertical-align middle
|
93
|
+
|
46
94
|
=reset-table-cell
|
47
|
-
+reset
|
48
95
|
:text-align left
|
49
96
|
:font-weight normal
|
50
97
|
:vertical-align middle
|
98
|
+
|
99
|
+
=reset-quotation
|
100
|
+
:quotes "" ""
|
101
|
+
&:before, &:after
|
102
|
+
:content ""
|
103
|
+
|
104
|
+
=reset-image-anchor-border
|
105
|
+
:border none
|
51
106
|
|
52
|
-
=reset-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
107
|
+
=reset-html5
|
108
|
+
section, article, aside, header, footer, nav, dialog, figure
|
109
|
+
display: block
|
110
|
+
|
111
|
+
//**
|
112
|
+
Resets the display of inline and block elements to their default display
|
113
|
+
according to their tag type. Elements that have a default display that varies across
|
114
|
+
versions of html or browser are not handled here, but this covers the 90% use case.
|
115
|
+
Usage Example:
|
116
|
+
// Turn off the display for both of these classes
|
117
|
+
.unregistered-only, .registered-only
|
118
|
+
:display none
|
119
|
+
// Now turn only one of them back on depending on some other context.
|
120
|
+
body.registered
|
121
|
+
+reset-display(".registered-only")
|
122
|
+
body.unregistered
|
123
|
+
+reset-display(".unregistered-only")
|
124
|
+
=reset-display(!selector = "", !important = false)
|
125
|
+
#{append_selector(elements_of_type("inline"), !selector)}
|
126
|
+
@if !important
|
127
|
+
display: inline !important
|
128
|
+
@else
|
129
|
+
display: inline
|
130
|
+
#{append_selector(elements_of_type("block"), !selector)}
|
131
|
+
@if !important
|
132
|
+
display: block !important
|
133
|
+
@else
|
134
|
+
display: block
|
@@ -0,0 +1,12 @@
|
|
1
|
+
!sprite_image_default_width ||= 32px
|
2
|
+
!sprite_image_default_height ||= 32px
|
3
|
+
!sprite_image_default_margin ||= 0px
|
4
|
+
|
5
|
+
// Simplest use: +sprite-img("icons-32.png", 1)
|
6
|
+
=sprite-img(!img, !col, !row = 1, !width = !sprite_image_default_width, !height = !sprite_image_default_height, !margin = !sprite_image_default_margin)
|
7
|
+
!x = ((!col - 1) * -!height) - ((!col - 1) * !margin)
|
8
|
+
!y = ((!row - 1) * -!width) - ((!row - 1) * !margin)
|
9
|
+
:background= image_url(!img) "no-repeat" !x !y
|
10
|
+
:width= !width
|
11
|
+
:height= !height
|
12
|
+
:overflow hidden
|
@@ -1,6 +1,13 @@
|
|
1
|
-
//
|
2
|
-
|
3
|
-
|
1
|
+
//
|
2
|
+
Hides html text and replaces it with an image.
|
3
|
+
If you use this on an inline element, you will need to change the display to block or inline-block.
|
4
|
+
Also, if the size of the image differs significantly from the font size, you'll need to set the width and/or height.
|
5
|
+
@param img
|
6
|
+
the relative path from the project image directory to the image.
|
7
|
+
@param x
|
8
|
+
the x position of the background image.
|
9
|
+
@param y
|
10
|
+
the y position of the background image.
|
4
11
|
=replace-text( !img, !x = 50%, !y = 50% )
|
5
12
|
:text-indent -9999em
|
6
13
|
:overflow hidden
|
@@ -5,3 +5,9 @@
|
|
5
5
|
<link href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet" type="text/css" />
|
6
6
|
|
7
7
|
@import compass/reset.sass
|
8
|
+
|
9
|
+
/*
|
10
|
+
The *:focus rule is reset and suppresses link outlining.
|
11
|
+
You _must_ remember to redefine your own outline, as it’s an important accessibility aid. E.g.
|
12
|
+
*:focus
|
13
|
+
outline: #ccc dotted medium
|
data/lib/compass/actions.rb
CHANGED
@@ -73,6 +73,13 @@ module Compass
|
|
73
73
|
end
|
74
74
|
end
|
75
75
|
|
76
|
+
def remove(file_name)
|
77
|
+
if File.exists?(file_name)
|
78
|
+
File.unlink file_name
|
79
|
+
logger.record :remove, basename(file_name)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
76
83
|
def basename(file)
|
77
84
|
relativize(file) {|f| File.basename(file)}
|
78
85
|
end
|
File without changes
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# :stopdoc:
|
2
|
+
module ActionController
|
3
|
+
class Base
|
4
|
+
def process_with_compass(*args)
|
5
|
+
Sass::Plugin.rails_controller = self
|
6
|
+
begin
|
7
|
+
process_without_compass(*args)
|
8
|
+
ensure
|
9
|
+
Sass::Plugin.rails_controller = nil
|
10
|
+
end
|
11
|
+
end
|
12
|
+
alias_method_chain :process, :compass
|
13
|
+
end
|
14
|
+
end
|
15
|
+
# :startdoc:
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Compass::SassExtensions::Functions::ImageUrl
|
2
|
+
def image_url_with_rails_integration(path)
|
3
|
+
if @controller = Sass::Plugin.rails_controller
|
4
|
+
begin
|
5
|
+
Sass::Script::String.new "url(#{image_path(path.value)})"
|
6
|
+
ensure
|
7
|
+
@controller = nil
|
8
|
+
end
|
9
|
+
else
|
10
|
+
image_url_without_rails_integration(path)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
alias_method_chain :image_url, :rails_integration
|
14
|
+
end
|
@@ -0,0 +1,80 @@
|
|
1
|
+
# =================================================================
|
2
|
+
# Compass Ruby on Rails Installer (template) v.1.0
|
3
|
+
# written by Derek Perez (derek@derekperez.com)
|
4
|
+
# -----------------------------------------------------------------
|
5
|
+
# NOTE: This installer is designed to work as a Rails template,
|
6
|
+
# and can only be used with Rails 2.3+.
|
7
|
+
# -----------------------------------------------------------------
|
8
|
+
# Copyright (c) 2009 Derek Perez
|
9
|
+
#
|
10
|
+
# Permission is hereby granted, free of charge, to any person
|
11
|
+
# obtaining a copy of this software and associated documentation
|
12
|
+
# files (the "Software"), to deal in the Software without
|
13
|
+
# restriction, including without limitation the rights to use,
|
14
|
+
# copy, modify, merge, publish, distribute, sublicense, and/or sell
|
15
|
+
# copies of the Software, and to permit persons to whom the
|
16
|
+
# Software is furnished to do so, subject to the following
|
17
|
+
# conditions:
|
18
|
+
#
|
19
|
+
# The above copyright notice and this permission notice shall be
|
20
|
+
# included in all copies or substantial portions of the Software.
|
21
|
+
#
|
22
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
23
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
24
|
+
# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
25
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
26
|
+
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
27
|
+
# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
28
|
+
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
29
|
+
# OTHER DEALINGS IN THE SOFTWARE.
|
30
|
+
# =================================================================
|
31
|
+
puts "==================================================="
|
32
|
+
puts "Welcome to the Compass Installer for Ruby on Rails!"
|
33
|
+
puts "==================================================="
|
34
|
+
puts
|
35
|
+
|
36
|
+
# css framework prompt
|
37
|
+
css_framework = ask("What CSS Framework do you want to use with Compass? (default: 'blueprint')")
|
38
|
+
css_framework = "blueprint" if css_framework.blank?
|
39
|
+
|
40
|
+
# sass storage prompt
|
41
|
+
sass_dir = ask("Where would you like to keep your sass files within your project? (default: 'app/stylesheets')")
|
42
|
+
sass_dir = "app/stylesheets" if sass_dir.blank?
|
43
|
+
|
44
|
+
# compiled css storage prompt
|
45
|
+
css_dir = ask("Where would you like Compass to store your compiled css files? (default: 'public/stylesheets/compiled')")
|
46
|
+
css_dir = "public/stylesheets/compiled" if css_dir.blank?
|
47
|
+
|
48
|
+
# define dependencies
|
49
|
+
gem "haml-edge", :lib => "haml"
|
50
|
+
gem "chriseppstein-compass", :source => "http://gems.github.com/", :lib => "compass"
|
51
|
+
|
52
|
+
# install and unpack
|
53
|
+
rake "gems:install GEM=haml-edge", :sudo => true
|
54
|
+
rake "gems:install GEM=chriseppstein-compass", :sudo => true
|
55
|
+
rake "gems:unpack GEM=chriseppstein-compass"
|
56
|
+
|
57
|
+
# load any compass framework plugins
|
58
|
+
if css_framework =~ /960/
|
59
|
+
gem "chriseppstein-compass-960-plugin", :source => "http://gems.github.com", :lib => "ninesixty"
|
60
|
+
rake "gems:install GEM=chriseppstein-compass-960-plugin", :sudo => true
|
61
|
+
rake "gems:unpack GEM=chriseppstein-compass-960-plugin"
|
62
|
+
css_framework = "960" # rename for command
|
63
|
+
plugin_require = "-r ninesixty"
|
64
|
+
end
|
65
|
+
|
66
|
+
# build out compass command
|
67
|
+
compass_command = "compass --rails -f #{css_framework} . --css-dir=#{css_dir} --sass-dir=#{sass_dir} "
|
68
|
+
compass_command << plugin_require if plugin_require
|
69
|
+
|
70
|
+
# Require compass during plugin loading
|
71
|
+
file 'vendor/plugins/compass/init.rb', <<-CODE
|
72
|
+
# This is here to make sure that the right version of sass gets loaded (haml-edge) by the compass requires.
|
73
|
+
require 'compass'
|
74
|
+
CODE
|
75
|
+
|
76
|
+
# integrate it!
|
77
|
+
run "haml --rails ."
|
78
|
+
run compass_command
|
79
|
+
|
80
|
+
puts "Compass (with #{css_framework}) is all setup, have fun!"
|
@@ -0,0 +1,12 @@
|
|
1
|
+
unless defined?(Compass::RAILS_LOADED)
|
2
|
+
Compass::RAILS_LOADED = true
|
3
|
+
require File.join(File.dirname(__FILE__), 'rails', 'action_controller')
|
4
|
+
require File.join(File.dirname(__FILE__), 'rails', 'sass_plugin')
|
5
|
+
require File.join(File.dirname(__FILE__), 'rails', 'image_url')
|
6
|
+
# Wierd that this has to be re-included to pick up sub-modules. Ruby bug?
|
7
|
+
class Sass::Script::Functions::EvaluationContext
|
8
|
+
include Sass::Script::Functions
|
9
|
+
private
|
10
|
+
include ActionView::Helpers::AssetTagHelper
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,5 @@
|
|
1
|
+
# If we're running inside Rails
|
2
|
+
require File.join(File.dirname(__FILE__), 'app_integration', 'rails') if defined?(ActionController::Base)
|
3
|
+
|
4
|
+
# If we're running inside Merb
|
5
|
+
require File.join(File.dirname(__FILE__), 'app_integration', 'merb') if defined?(Merb::Plugins)
|
@@ -50,15 +50,25 @@ module Compass
|
|
50
50
|
# Read the configuration file for this project
|
51
51
|
def read_project_configuration
|
52
52
|
if file = detect_configuration_file
|
53
|
-
Compass.configuration.parse(file)
|
53
|
+
Compass.configuration.parse(file) if File.readable?(file)
|
54
54
|
end
|
55
55
|
end
|
56
56
|
|
57
|
+
def explicit_config_file_must_be_readable?
|
58
|
+
true
|
59
|
+
end
|
60
|
+
|
57
61
|
# TODO: Deprecate the src/config.rb location.
|
58
|
-
KNOWN_CONFIG_LOCATIONS = ["config/compass.config", "config.rb", "src/config.rb"]
|
62
|
+
KNOWN_CONFIG_LOCATIONS = [".compass/config.rb", "config/compass.config", "config.rb", "src/config.rb"]
|
59
63
|
|
60
64
|
# Finds the configuration file, if it exists in a known location.
|
61
65
|
def detect_configuration_file
|
66
|
+
if options[:configuration_file]
|
67
|
+
if explicit_config_file_must_be_readable? && !File.readable?(options[:configuration_file])
|
68
|
+
raise Compass::Error, "Configuration file, #{file}, not found or not readable."
|
69
|
+
end
|
70
|
+
return options[:configuration_file]
|
71
|
+
end
|
62
72
|
KNOWN_CONFIG_LOCATIONS.map{|f| projectize(f)}.detect{|f| File.exists?(f)}
|
63
73
|
end
|
64
74
|
|
@@ -11,12 +11,22 @@ module Compass
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def perform
|
14
|
-
compiler =
|
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,
|
15
26
|
projectize(Compass.configuration.sass_dir),
|
16
27
|
projectize(Compass.configuration.css_dir),
|
17
28
|
Compass.sass_engine_options.merge(:quiet => options[:quiet],
|
18
|
-
:force => options[:force]))
|
19
|
-
compiler.run
|
29
|
+
:force => options[:force]).merge(additional_options))
|
20
30
|
end
|
21
31
|
|
22
32
|
end
|