haml 3.0.21 → 3.0.22
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of haml might be problematic. Click here for more details.
- data/Rakefile +1 -41
- data/VERSION +1 -1
- data/lib/haml/precompiler.rb +8 -6
- data/lib/haml/template/plugin.rb +16 -6
- data/lib/sass/less.rb +31 -12
- data/lib/sass/script/funcall.rb +2 -1
- data/lib/sass/script/operation.rb +10 -5
- data/lib/sass/script/parser.rb +9 -0
- data/test/haml/engine_test.rb +25 -0
- data/test/sass/less_conversion_test.rb +24 -3
- data/test/sass/script_conversion_test.rb +60 -0
- metadata +243 -426
- data/vendor/sass/CONTRIBUTING +0 -3
- data/vendor/sass/MIT-LICENSE +0 -20
- data/vendor/sass/README.md +0 -201
- data/vendor/sass/Rakefile +0 -363
- data/vendor/sass/TODO +0 -39
- data/vendor/sass/VERSION +0 -1
- data/vendor/sass/VERSION_NAME +0 -1
- data/vendor/sass/bin/css2sass +0 -13
- data/vendor/sass/bin/sass +0 -8
- data/vendor/sass/bin/sass-convert +0 -7
- data/vendor/sass/doc-src/FAQ.md +0 -35
- data/vendor/sass/doc-src/INDENTED_SYNTAX.md +0 -210
- data/vendor/sass/doc-src/SASS_CHANGELOG.md +0 -1870
- data/vendor/sass/doc-src/SASS_REFERENCE.md +0 -1713
- data/vendor/sass/doc-src/SCSS_FOR_SASS_USERS.md +0 -155
- data/vendor/sass/ext/extconf.rb +0 -10
- data/vendor/sass/extra/update_watch.rb +0 -13
- data/vendor/sass/init.rb +0 -18
- data/vendor/sass/lib/sass.rb +0 -71
- data/vendor/sass/lib/sass/cache_store.rb +0 -208
- data/vendor/sass/lib/sass/callbacks.rb +0 -66
- data/vendor/sass/lib/sass/css.rb +0 -294
- data/vendor/sass/lib/sass/engine.rb +0 -792
- data/vendor/sass/lib/sass/environment.rb +0 -143
- data/vendor/sass/lib/sass/error.rb +0 -201
- data/vendor/sass/lib/sass/exec.rb +0 -619
- data/vendor/sass/lib/sass/importers.rb +0 -22
- data/vendor/sass/lib/sass/importers/base.rb +0 -138
- data/vendor/sass/lib/sass/importers/filesystem.rb +0 -121
- data/vendor/sass/lib/sass/less.rb +0 -363
- data/vendor/sass/lib/sass/plugin.rb +0 -126
- data/vendor/sass/lib/sass/plugin/compiler.rb +0 -346
- data/vendor/sass/lib/sass/plugin/configuration.rb +0 -123
- data/vendor/sass/lib/sass/plugin/generic.rb +0 -15
- data/vendor/sass/lib/sass/plugin/merb.rb +0 -48
- data/vendor/sass/lib/sass/plugin/rack.rb +0 -47
- data/vendor/sass/lib/sass/plugin/rails.rb +0 -41
- data/vendor/sass/lib/sass/plugin/staleness_checker.rb +0 -145
- data/vendor/sass/lib/sass/railtie.rb +0 -8
- data/vendor/sass/lib/sass/repl.rb +0 -58
- data/vendor/sass/lib/sass/root.rb +0 -7
- data/vendor/sass/lib/sass/script.rb +0 -63
- data/vendor/sass/lib/sass/script/bool.rb +0 -18
- data/vendor/sass/lib/sass/script/color.rb +0 -491
- data/vendor/sass/lib/sass/script/css_lexer.rb +0 -29
- data/vendor/sass/lib/sass/script/css_parser.rb +0 -31
- data/vendor/sass/lib/sass/script/funcall.rb +0 -79
- data/vendor/sass/lib/sass/script/functions.rb +0 -852
- data/vendor/sass/lib/sass/script/interpolation.rb +0 -70
- data/vendor/sass/lib/sass/script/lexer.rb +0 -337
- data/vendor/sass/lib/sass/script/literal.rb +0 -236
- data/vendor/sass/lib/sass/script/node.rb +0 -101
- data/vendor/sass/lib/sass/script/number.rb +0 -423
- data/vendor/sass/lib/sass/script/operation.rb +0 -92
- data/vendor/sass/lib/sass/script/parser.rb +0 -392
- data/vendor/sass/lib/sass/script/string.rb +0 -67
- data/vendor/sass/lib/sass/script/string_interpolation.rb +0 -93
- data/vendor/sass/lib/sass/script/unary_operation.rb +0 -57
- data/vendor/sass/lib/sass/script/variable.rb +0 -48
- data/vendor/sass/lib/sass/scss.rb +0 -17
- data/vendor/sass/lib/sass/scss/css_parser.rb +0 -51
- data/vendor/sass/lib/sass/scss/parser.rb +0 -838
- data/vendor/sass/lib/sass/scss/rx.rb +0 -126
- data/vendor/sass/lib/sass/scss/sass_parser.rb +0 -11
- data/vendor/sass/lib/sass/scss/script_lexer.rb +0 -15
- data/vendor/sass/lib/sass/scss/script_parser.rb +0 -25
- data/vendor/sass/lib/sass/scss/static_parser.rb +0 -40
- data/vendor/sass/lib/sass/selector.rb +0 -361
- data/vendor/sass/lib/sass/selector/abstract_sequence.rb +0 -62
- data/vendor/sass/lib/sass/selector/comma_sequence.rb +0 -82
- data/vendor/sass/lib/sass/selector/sequence.rb +0 -236
- data/vendor/sass/lib/sass/selector/simple.rb +0 -113
- data/vendor/sass/lib/sass/selector/simple_sequence.rb +0 -135
- data/vendor/sass/lib/sass/shared.rb +0 -78
- data/vendor/sass/lib/sass/tree/comment_node.rb +0 -128
- data/vendor/sass/lib/sass/tree/debug_node.rb +0 -36
- data/vendor/sass/lib/sass/tree/directive_node.rb +0 -75
- data/vendor/sass/lib/sass/tree/extend_node.rb +0 -65
- data/vendor/sass/lib/sass/tree/for_node.rb +0 -67
- data/vendor/sass/lib/sass/tree/if_node.rb +0 -81
- data/vendor/sass/lib/sass/tree/import_node.rb +0 -124
- data/vendor/sass/lib/sass/tree/mixin_def_node.rb +0 -60
- data/vendor/sass/lib/sass/tree/mixin_node.rb +0 -123
- data/vendor/sass/lib/sass/tree/node.rb +0 -490
- data/vendor/sass/lib/sass/tree/prop_node.rb +0 -220
- data/vendor/sass/lib/sass/tree/root_node.rb +0 -125
- data/vendor/sass/lib/sass/tree/rule_node.rb +0 -273
- data/vendor/sass/lib/sass/tree/variable_node.rb +0 -39
- data/vendor/sass/lib/sass/tree/warn_node.rb +0 -42
- data/vendor/sass/lib/sass/tree/while_node.rb +0 -48
- data/vendor/sass/lib/sass/util.rb +0 -700
- data/vendor/sass/lib/sass/util/subset_map.rb +0 -101
- data/vendor/sass/lib/sass/version.rb +0 -109
- data/vendor/sass/rails/init.rb +0 -1
- data/vendor/sass/sass.gemspec +0 -32
- data/vendor/sass/test/sass/cache_test.rb +0 -74
- data/vendor/sass/test/sass/callbacks_test.rb +0 -61
- data/vendor/sass/test/sass/conversion_test.rb +0 -1210
- data/vendor/sass/test/sass/css2sass_test.rb +0 -364
- data/vendor/sass/test/sass/data/hsl-rgb.txt +0 -319
- data/vendor/sass/test/sass/engine_test.rb +0 -2283
- data/vendor/sass/test/sass/extend_test.rb +0 -1348
- data/vendor/sass/test/sass/functions_test.rb +0 -565
- data/vendor/sass/test/sass/importer_test.rb +0 -104
- data/vendor/sass/test/sass/less_conversion_test.rb +0 -632
- data/vendor/sass/test/sass/mock_importer.rb +0 -49
- data/vendor/sass/test/sass/more_results/more1.css +0 -9
- data/vendor/sass/test/sass/more_results/more1_with_line_comments.css +0 -26
- data/vendor/sass/test/sass/more_results/more_import.css +0 -29
- data/vendor/sass/test/sass/more_templates/_more_partial.sass +0 -2
- data/vendor/sass/test/sass/more_templates/more1.sass +0 -23
- data/vendor/sass/test/sass/more_templates/more_import.sass +0 -11
- data/vendor/sass/test/sass/plugin_test.rb +0 -430
- data/vendor/sass/test/sass/results/alt.css +0 -4
- data/vendor/sass/test/sass/results/basic.css +0 -9
- data/vendor/sass/test/sass/results/compact.css +0 -5
- data/vendor/sass/test/sass/results/complex.css +0 -86
- data/vendor/sass/test/sass/results/compressed.css +0 -1
- data/vendor/sass/test/sass/results/expanded.css +0 -19
- data/vendor/sass/test/sass/results/import.css +0 -31
- data/vendor/sass/test/sass/results/line_numbers.css +0 -49
- data/vendor/sass/test/sass/results/mixins.css +0 -95
- data/vendor/sass/test/sass/results/multiline.css +0 -24
- data/vendor/sass/test/sass/results/nested.css +0 -22
- data/vendor/sass/test/sass/results/options.css +0 -1
- data/vendor/sass/test/sass/results/parent_ref.css +0 -13
- data/vendor/sass/test/sass/results/script.css +0 -16
- data/vendor/sass/test/sass/results/scss_import.css +0 -31
- data/vendor/sass/test/sass/results/scss_importee.css +0 -2
- data/vendor/sass/test/sass/results/subdir/nested_subdir/nested_subdir.css +0 -1
- data/vendor/sass/test/sass/results/subdir/subdir.css +0 -3
- data/vendor/sass/test/sass/results/units.css +0 -11
- data/vendor/sass/test/sass/results/warn.css +0 -0
- data/vendor/sass/test/sass/results/warn_imported.css +0 -0
- data/vendor/sass/test/sass/script_conversion_test.rb +0 -254
- data/vendor/sass/test/sass/script_test.rb +0 -470
- data/vendor/sass/test/sass/scss/css_test.rb +0 -897
- data/vendor/sass/test/sass/scss/rx_test.rb +0 -156
- data/vendor/sass/test/sass/scss/scss_test.rb +0 -1088
- data/vendor/sass/test/sass/scss/test_helper.rb +0 -37
- data/vendor/sass/test/sass/templates/_partial.sass +0 -2
- data/vendor/sass/test/sass/templates/alt.sass +0 -16
- data/vendor/sass/test/sass/templates/basic.sass +0 -23
- data/vendor/sass/test/sass/templates/bork1.sass +0 -2
- data/vendor/sass/test/sass/templates/bork2.sass +0 -2
- data/vendor/sass/test/sass/templates/bork3.sass +0 -2
- data/vendor/sass/test/sass/templates/bork4.sass +0 -2
- data/vendor/sass/test/sass/templates/compact.sass +0 -17
- data/vendor/sass/test/sass/templates/complex.sass +0 -305
- data/vendor/sass/test/sass/templates/compressed.sass +0 -15
- data/vendor/sass/test/sass/templates/expanded.sass +0 -17
- data/vendor/sass/test/sass/templates/import.sass +0 -12
- data/vendor/sass/test/sass/templates/importee.less +0 -2
- data/vendor/sass/test/sass/templates/importee.sass +0 -19
- data/vendor/sass/test/sass/templates/line_numbers.sass +0 -13
- data/vendor/sass/test/sass/templates/mixin_bork.sass +0 -5
- data/vendor/sass/test/sass/templates/mixins.sass +0 -76
- data/vendor/sass/test/sass/templates/multiline.sass +0 -20
- data/vendor/sass/test/sass/templates/nested.sass +0 -25
- data/vendor/sass/test/sass/templates/nested_bork1.sass +0 -2
- data/vendor/sass/test/sass/templates/nested_bork2.sass +0 -2
- data/vendor/sass/test/sass/templates/nested_bork3.sass +0 -2
- data/vendor/sass/test/sass/templates/nested_bork4.sass +0 -2
- data/vendor/sass/test/sass/templates/nested_mixin_bork.sass +0 -6
- data/vendor/sass/test/sass/templates/options.sass +0 -2
- data/vendor/sass/test/sass/templates/parent_ref.sass +0 -25
- data/vendor/sass/test/sass/templates/script.sass +0 -101
- data/vendor/sass/test/sass/templates/scss_import.scss +0 -11
- data/vendor/sass/test/sass/templates/scss_importee.scss +0 -1
- data/vendor/sass/test/sass/templates/subdir/nested_subdir/_nested_partial.sass +0 -2
- data/vendor/sass/test/sass/templates/subdir/nested_subdir/nested_subdir.sass +0 -3
- data/vendor/sass/test/sass/templates/subdir/subdir.sass +0 -6
- data/vendor/sass/test/sass/templates/units.sass +0 -11
- data/vendor/sass/test/sass/templates/warn.sass +0 -3
- data/vendor/sass/test/sass/templates/warn_imported.sass +0 -4
- data/vendor/sass/test/sass/test_helper.rb +0 -8
- data/vendor/sass/test/sass/util/subset_map_test.rb +0 -91
- data/vendor/sass/test/sass/util_test.rb +0 -275
- data/vendor/sass/test/test_helper.rb +0 -64
- data/vendor/sass/yard/callbacks.rb +0 -29
- data/vendor/sass/yard/default/fulldoc/html/css/common.sass +0 -26
- data/vendor/sass/yard/default/layout/html/footer.erb +0 -12
- data/vendor/sass/yard/inherited_hash.rb +0 -41
data/vendor/sass/CONTRIBUTING
DELETED
data/vendor/sass/MIT-LICENSE
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
Copyright (c) 2006-2009 Hampton Catlin, Nathan Weizenbaum, and Chris Eppstein
|
2
|
-
|
3
|
-
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
-
a copy of this software and associated documentation files (the
|
5
|
-
"Software"), to deal in the Software without restriction, including
|
6
|
-
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
-
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
-
permit persons to whom the Software is furnished to do so, subject to
|
9
|
-
the following conditions:
|
10
|
-
|
11
|
-
The above copyright notice and this permission notice shall be
|
12
|
-
included in all copies or substantial portions of the Software.
|
13
|
-
|
14
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
-
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
-
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
-
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
-
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
-
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
-
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/vendor/sass/README.md
DELETED
@@ -1,201 +0,0 @@
|
|
1
|
-
# Sass
|
2
|
-
|
3
|
-
**Sass makes CSS fun again**. Sass is an extension of CSS3,
|
4
|
-
adding nested rules, variables, mixins, selector inheritance, and more.
|
5
|
-
It's translated to well-formatted, standard CSS
|
6
|
-
using the command line tool or a web-framework plugin.
|
7
|
-
|
8
|
-
Sass has two syntaxes. The new main syntax (as of Sass 3)
|
9
|
-
is known as "SCSS" (for "Sassy CSS"),
|
10
|
-
and is a superset of CSS3's syntax.
|
11
|
-
This means that every valid CSS3 stylesheet is valid SCSS as well.
|
12
|
-
SCSS files use the extension `.scss`.
|
13
|
-
|
14
|
-
The second, older syntax is known as the indented syntax (or just "Sass").
|
15
|
-
Inspired by Haml's terseness, it's intended for people
|
16
|
-
who prefer conciseness over similarity to CSS.
|
17
|
-
Instead of brackets and semicolons,
|
18
|
-
it uses the indentation of lines to specify blocks.
|
19
|
-
Although no longer the primary syntax,
|
20
|
-
the indented syntax will continue to be supported.
|
21
|
-
Files in the indented syntax use the extension `.sass`.
|
22
|
-
|
23
|
-
## Using
|
24
|
-
|
25
|
-
Sass can be used from the command line
|
26
|
-
or as part of a web framework.
|
27
|
-
The first step is to install the gem:
|
28
|
-
|
29
|
-
gem install sass
|
30
|
-
|
31
|
-
After you convert some CSS to Sass, you can run
|
32
|
-
|
33
|
-
sass style.scss
|
34
|
-
|
35
|
-
to compile it back to CSS.
|
36
|
-
For more information on these commands, check out
|
37
|
-
|
38
|
-
sass --help
|
39
|
-
|
40
|
-
To install Sass in Rails 2,
|
41
|
-
just add `config.gem "sass"` to `config/environment.rb`.
|
42
|
-
In Rails 3, add `gem "sass"` to your Gemfile instead.
|
43
|
-
`.sass` or `.scss` files should be placed in `public/stylesheets/sass`,
|
44
|
-
where they'll be automatically compiled
|
45
|
-
to corresponding CSS files in `public/stylesheets` when needed
|
46
|
-
(the Sass template directory is customizable...
|
47
|
-
see [the Sass reference](http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#template_location-option) for details).
|
48
|
-
|
49
|
-
Sass can also be used with any Rack-enabled web framework.
|
50
|
-
To do so, just add
|
51
|
-
|
52
|
-
require 'sass/plugin/rack'
|
53
|
-
use Sass::Plugin::Rack
|
54
|
-
|
55
|
-
to `config.ru`.
|
56
|
-
Then any Sass files in `public/stylesheets/sass`
|
57
|
-
will be compiled CSS files in `public/stylesheets` on every request.
|
58
|
-
|
59
|
-
To use Sass programatically,
|
60
|
-
check out the [YARD documentation](http://sass-lang.com/docs/yardoc/).
|
61
|
-
|
62
|
-
## Formatting
|
63
|
-
|
64
|
-
Sass is an extension of CSS
|
65
|
-
that adds power and elegance to the basic language.
|
66
|
-
It allows you to use [variables][vars], [nested rules][nested],
|
67
|
-
[mixins][mixins], [inline imports][imports],
|
68
|
-
and more, all with a fully CSS-compatible syntax.
|
69
|
-
Sass helps keep large stylesheets well-organized,
|
70
|
-
and get small stylesheets up and running quickly,
|
71
|
-
particularly with the help of
|
72
|
-
[the Compass style library](http://compass-style.org).
|
73
|
-
|
74
|
-
[vars]: http://beta.sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#variables_
|
75
|
-
[nested]: http://beta.sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#nested_rules_
|
76
|
-
[mixins]: http://beta.sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#mixins
|
77
|
-
[imports]: http://beta.sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#import
|
78
|
-
|
79
|
-
Sass has two syntaxes.
|
80
|
-
The one presented here, known as "SCSS" (for "Sassy CSS"),
|
81
|
-
is fully CSS-compatible.
|
82
|
-
The other (older) syntax, known as the indented syntax or just "Sass",
|
83
|
-
is whitespace-sensitive and indentation-based.
|
84
|
-
For more information, see the [reference documentation][syntax].
|
85
|
-
|
86
|
-
[syntax]: http://beta.sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#syntax
|
87
|
-
|
88
|
-
To run the following examples and see the CSS they produce,
|
89
|
-
put them in a file called `test.scss` and run `sass test.scss`.
|
90
|
-
|
91
|
-
### Nesting
|
92
|
-
|
93
|
-
Sass avoids repetition by nesting selectors within one another.
|
94
|
-
The same thing works for properties.
|
95
|
-
|
96
|
-
table.hl {
|
97
|
-
margin: 2em 0;
|
98
|
-
td.ln { text-align: right; }
|
99
|
-
}
|
100
|
-
|
101
|
-
li {
|
102
|
-
font: {
|
103
|
-
family: serif;
|
104
|
-
weight: bold;
|
105
|
-
size: 1.2em;
|
106
|
-
}
|
107
|
-
}
|
108
|
-
|
109
|
-
### Variables
|
110
|
-
|
111
|
-
Use the same color all over the place?
|
112
|
-
Need to do some math with height and width and text size?
|
113
|
-
Sass supports variables, math operations, and many useful functions.
|
114
|
-
|
115
|
-
$blue: #3bbfce;
|
116
|
-
$margin: 16px;
|
117
|
-
|
118
|
-
.content_navigation {
|
119
|
-
border-color: $blue;
|
120
|
-
color: darken($blue, 10%);
|
121
|
-
}
|
122
|
-
|
123
|
-
.border {
|
124
|
-
padding: $margin / 2;
|
125
|
-
margin: $margin / 2;
|
126
|
-
border-color: $blue;
|
127
|
-
}
|
128
|
-
|
129
|
-
### Mixins
|
130
|
-
|
131
|
-
Even more powerful than variables,
|
132
|
-
mixins allow you to re-use whole chunks of CSS,
|
133
|
-
properties or selectors.
|
134
|
-
You can even give them arguments.
|
135
|
-
|
136
|
-
@mixin table-scaffolding {
|
137
|
-
th {
|
138
|
-
text-align: center;
|
139
|
-
font-weight: bold;
|
140
|
-
}
|
141
|
-
td, th { padding: 2px; }
|
142
|
-
}
|
143
|
-
|
144
|
-
@mixin left($dist) {
|
145
|
-
float: left;
|
146
|
-
margin-left: $dist;
|
147
|
-
}
|
148
|
-
|
149
|
-
#data {
|
150
|
-
@include left(10px);
|
151
|
-
@include table-scaffolding;
|
152
|
-
}
|
153
|
-
|
154
|
-
A comprehensive list of features is available
|
155
|
-
in the [Sass reference](http://beta.sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html).
|
156
|
-
|
157
|
-
## Executables
|
158
|
-
|
159
|
-
The Sass gem includes several executables that are useful
|
160
|
-
for dealing with Sass from the command line.
|
161
|
-
|
162
|
-
### `sass`
|
163
|
-
|
164
|
-
The `sass` executable transforms a source Sass file into CSS.
|
165
|
-
See `sass --help` for further information and options.
|
166
|
-
|
167
|
-
### `sass-convert`
|
168
|
-
|
169
|
-
The `sass-convert` executable converts between CSS, Sass, and SCSS.
|
170
|
-
When converting from CSS to Sass or SCSS,
|
171
|
-
nesting is applied where appropriate.
|
172
|
-
See `sass-convert --help` for further information and options.
|
173
|
-
|
174
|
-
## Authors
|
175
|
-
|
176
|
-
Sass was envisioned by [Hampton Catlin](http://hamptoncatlin.com) (hcatlin).
|
177
|
-
However, Hampton doesn't even know his way around the code anymore and now
|
178
|
-
occasionally consults on the language issues. Hampton lives in Jacksonville,
|
179
|
-
Florida and is the lead mobile developer for Wikimedia.
|
180
|
-
|
181
|
-
[Nathan Weizenbaum](http://nex-3.com) is the primary developer and architect of
|
182
|
-
Sass. His hard work has kept the project alive by endlessly answering forum
|
183
|
-
posts, fixing bugs, refactoring, finding speed improvements, writing
|
184
|
-
documentation, implementing new features, and getting Hampton coffee (a fitting
|
185
|
-
task for a boy-genius). Nathan lives in Seattle, Washington and while not being
|
186
|
-
a student at the University of Washington or working at an internship, he
|
187
|
-
consults for Unspace Interactive.
|
188
|
-
|
189
|
-
[Chris Eppstein](http://acts-as-architect.blogspot.com) is a core contributor to
|
190
|
-
Sass and the creator of Compass, the first Sass-based framework. Chris focuses
|
191
|
-
on making Sass more powerful, easy to use, and on ways to speed its adoption
|
192
|
-
through the web development community. Chris lives in San Jose, California with
|
193
|
-
his wife and daughter. He is the Software Architect for
|
194
|
-
[Caring.com](http://caring.com), a website devoted to the 34 Million caregivers
|
195
|
-
whose parents are sick or elderly, that uses Haml and Sass.
|
196
|
-
|
197
|
-
If you use this software, you must pay Hampton a compliment. And
|
198
|
-
buy Nathan some jelly beans. Maybe pet a kitten. Yeah. Pet that kitty.
|
199
|
-
|
200
|
-
Beyond that, the implementation is licensed under the MIT License.
|
201
|
-
Okay, fine, I guess that means compliments aren't __required__.
|
data/vendor/sass/Rakefile
DELETED
@@ -1,363 +0,0 @@
|
|
1
|
-
# ----- Utility Functions -----
|
2
|
-
|
3
|
-
def scope(path)
|
4
|
-
File.join(File.dirname(__FILE__), path)
|
5
|
-
end
|
6
|
-
|
7
|
-
# ----- Default: Testing ------
|
8
|
-
|
9
|
-
task :default => :test
|
10
|
-
|
11
|
-
require 'rake/testtask'
|
12
|
-
|
13
|
-
Rake::TestTask.new do |t|
|
14
|
-
t.libs << 'lib'
|
15
|
-
test_files = FileList[scope('test/**/*_test.rb')]
|
16
|
-
test_files.exclude(scope('test/rails/*'))
|
17
|
-
test_files.exclude(scope('test/plugins/*'))
|
18
|
-
t.test_files = test_files
|
19
|
-
t.verbose = true
|
20
|
-
end
|
21
|
-
|
22
|
-
# ----- Packaging -----
|
23
|
-
|
24
|
-
# Don't use Rake::GemPackageTast because we want prerequisites to run
|
25
|
-
# before we load the gemspec.
|
26
|
-
desc "Build all the packages."
|
27
|
-
task :package => [:permissions, :revision_file, :submodules] do
|
28
|
-
load scope('sass.gemspec')
|
29
|
-
Gem::Builder.new(SASS_GEMSPEC).build
|
30
|
-
pkg = "#{SASS_GEMSPEC.name}-#{SASS_GEMSPEC.version}"
|
31
|
-
mkdir_p "pkg"
|
32
|
-
verbose(true) {mv "#{pkg}.gem", "pkg/#{pkg}.gem"}
|
33
|
-
|
34
|
-
sh %{rm -f pkg/#{pkg}.tar.gz}
|
35
|
-
verbose(false) {SASS_GEMSPEC.files.each {|f| sh %{tar rf pkg/#{pkg}.tar #{f}}}}
|
36
|
-
sh %{gzip pkg/#{pkg}.tar}
|
37
|
-
end
|
38
|
-
|
39
|
-
task :permissions do
|
40
|
-
sh %{chmod -R a+rx bin}
|
41
|
-
sh %{chmod -R a+r .}
|
42
|
-
require 'shellwords'
|
43
|
-
Dir.glob('test/**/*_test.rb') do |file|
|
44
|
-
next if file =~ %r{^test/haml/spec/}
|
45
|
-
sh %{chmod a+rx #{file}}
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
task :revision_file do
|
50
|
-
require 'lib/sass'
|
51
|
-
|
52
|
-
release = Rake.application.top_level_tasks.include?('release') || File.exist?(scope('EDGE_GEM_VERSION'))
|
53
|
-
if Sass.version[:rev] && !release
|
54
|
-
File.open(scope('REVISION'), 'w') { |f| f.puts Sass.version[:rev] }
|
55
|
-
elsif release
|
56
|
-
File.open(scope('REVISION'), 'w') { |f| f.puts "(release)" }
|
57
|
-
else
|
58
|
-
File.open(scope('REVISION'), 'w') { |f| f.puts "(unknown)" }
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
# We also need to get rid of this file after packaging.
|
63
|
-
at_exit { File.delete(scope('REVISION')) rescue nil }
|
64
|
-
|
65
|
-
desc "Install Sass as a gem. Use SUDO=1 to install with sudo."
|
66
|
-
task :install => [:package] do
|
67
|
-
gem = RUBY_PLATFORM =~ /java/ ? 'jgem' : 'gem'
|
68
|
-
sh %{#{'sudo ' if ENV["SUDO"]}#{gem} install --no-ri pkg/sass-#{File.read(scope('VERSION')).strip}}
|
69
|
-
end
|
70
|
-
|
71
|
-
desc "Release a new Sass package to Rubyforge."
|
72
|
-
task :release => [:check_release, :package] do
|
73
|
-
name = File.read(scope("VERSION_NAME")).strip
|
74
|
-
version = File.read(scope("VERSION")).strip
|
75
|
-
sh %{rubyforge add_release sass sass "#{name} (v#{version})" pkg/sass-#{version}.gem}
|
76
|
-
sh %{rubyforge add_file sass sass "#{name} (v#{version})" pkg/sass-#{version}.tar.gz}
|
77
|
-
sh %{gem push pkg/sass-#{version}.gem}
|
78
|
-
end
|
79
|
-
|
80
|
-
# Ensures that the VERSION file has been updated for a new release.
|
81
|
-
task :check_release do
|
82
|
-
version = File.read(scope("VERSION")).strip
|
83
|
-
raise "There have been changes since current version (#{version})" if changed_since?(version)
|
84
|
-
raise "VERSION_NAME must not be 'Bleeding Edge'" if File.read(scope("VERSION_NAME")) == "Bleeding Edge"
|
85
|
-
end
|
86
|
-
|
87
|
-
# Reads a password from the command line.
|
88
|
-
#
|
89
|
-
# @param name [String] The prompt to use to read the password
|
90
|
-
def read_password(prompt)
|
91
|
-
require 'readline'
|
92
|
-
system "stty -echo"
|
93
|
-
Readline.readline("#{prompt}: ").strip
|
94
|
-
ensure
|
95
|
-
system "stty echo"
|
96
|
-
puts
|
97
|
-
end
|
98
|
-
|
99
|
-
# Returns whether or not the repository, or specific files,
|
100
|
-
# has/have changed since a given revision.
|
101
|
-
#
|
102
|
-
# @param rev [String] The revision to check against
|
103
|
-
# @param files [Array<String>] The files to check.
|
104
|
-
# If this is empty, checks the entire repository
|
105
|
-
def changed_since?(rev, *files)
|
106
|
-
IO.popen("git diff --exit-code #{rev} #{files.join(' ')}") {}
|
107
|
-
return !$?.success?
|
108
|
-
end
|
109
|
-
|
110
|
-
task :submodules do
|
111
|
-
if File.exist?(File.dirname(__FILE__) + "/.git")
|
112
|
-
sh %{git submodule sync}
|
113
|
-
sh %{git submodule update --init}
|
114
|
-
elsif !File.exist?(File.dirname(__FILE__) + "/vendor/fssm/lib")
|
115
|
-
warn <<WARN
|
116
|
-
WARNING: vendor/fssm doesn't exist, and this isn't a git repository so
|
117
|
-
I can't get it automatically!
|
118
|
-
WARN
|
119
|
-
end
|
120
|
-
end
|
121
|
-
|
122
|
-
task :release_edge do
|
123
|
-
ensure_git_cleanup do
|
124
|
-
puts "#{'=' * 50} Running rake release_edge"
|
125
|
-
|
126
|
-
sh %{git checkout edge-gem}
|
127
|
-
sh %{git reset --hard origin/edge-gem}
|
128
|
-
sh %{git merge origin/master}
|
129
|
-
|
130
|
-
unless edge_version = bump_edge_version
|
131
|
-
puts "master is already a prerelease version, no use building an edge gem"
|
132
|
-
next
|
133
|
-
end
|
134
|
-
|
135
|
-
File.open(scope('EDGE_GEM_VERSION'), 'w') {|f| f.puts(edge_version)}
|
136
|
-
sh %{git commit -m "Bump edge gem version to #{edge_version}." EDGE_GEM_VERSION}
|
137
|
-
sh %{git push origin edge-gem}
|
138
|
-
|
139
|
-
# Package the edge gem with the proper version
|
140
|
-
File.open(scope('VERSION'), 'w') {|f| f.puts(edge_version)}
|
141
|
-
sh %{rake package}
|
142
|
-
sh %{git checkout VERSION}
|
143
|
-
|
144
|
-
sh %{rubyforge add_release sass sass "Bleeding Edge (v#{edge_version})" pkg/sass-#{edge_version}.gem}
|
145
|
-
sh %{gem push pkg/sass-#{edge_version}.gem}
|
146
|
-
end
|
147
|
-
end
|
148
|
-
|
149
|
-
# Reads the master version and the edge gem version,
|
150
|
-
# bump the latter, and return it.
|
151
|
-
#
|
152
|
-
# Returns nil if the current master version is already a non-alpha prerelease.
|
153
|
-
def bump_edge_version
|
154
|
-
# Get the current master branch version
|
155
|
-
version = File.read(scope('VERSION')).strip.split('.')
|
156
|
-
version.map! {|n| n =~ /^[0-9]+$/ ? n.to_i : n}
|
157
|
-
unless version.size == 5 # prerelease
|
158
|
-
raise "master version #{version.join('.')} is not a prerelease version"
|
159
|
-
end
|
160
|
-
|
161
|
-
# Bump the edge gem version
|
162
|
-
edge_version = File.read(scope('EDGE_GEM_VERSION')).strip.split('.')
|
163
|
-
edge_version.map! {|n| n =~ /^[0-9]+$/ ? n.to_i : n}
|
164
|
-
|
165
|
-
if version[3] != "alpha"
|
166
|
-
return
|
167
|
-
elsif edge_version[0..2] != version[0..2]
|
168
|
-
# A new master branch version was released, reset the edge gem version
|
169
|
-
edge_version[0..2] = version[0..2]
|
170
|
-
edge_version[4] = 1
|
171
|
-
else
|
172
|
-
# Just bump the teeny version
|
173
|
-
edge_version[4] += 1
|
174
|
-
end
|
175
|
-
|
176
|
-
edge_version.join('.')
|
177
|
-
end
|
178
|
-
|
179
|
-
task :watch_for_update do
|
180
|
-
sh %{ruby extra/update_watch.rb}
|
181
|
-
end
|
182
|
-
|
183
|
-
# ----- Documentation -----
|
184
|
-
|
185
|
-
task :rdoc do
|
186
|
-
puts '=' * 100, <<END, '=' * 100
|
187
|
-
Sass uses the YARD documentation system (http://github.com/lsegal/yard).
|
188
|
-
Install the yard gem and then run "rake doc".
|
189
|
-
END
|
190
|
-
end
|
191
|
-
|
192
|
-
begin
|
193
|
-
require 'yard'
|
194
|
-
|
195
|
-
namespace :doc do
|
196
|
-
task :sass do
|
197
|
-
require scope('lib/sass')
|
198
|
-
Dir[scope("yard/default/**/*.sass")].each do |sass|
|
199
|
-
File.open(sass.gsub(/sass$/, 'css'), 'w') do |f|
|
200
|
-
f.write(Sass::Engine.new(File.read(sass)).render)
|
201
|
-
end
|
202
|
-
end
|
203
|
-
end
|
204
|
-
|
205
|
-
desc "List all undocumented methods and classes."
|
206
|
-
task :undocumented do
|
207
|
-
opts = ENV["YARD_OPTS"] || ""
|
208
|
-
ENV["YARD_OPTS"] = opts.dup + <<OPTS
|
209
|
-
--list --query "
|
210
|
-
object.docstring.blank? &&
|
211
|
-
!(object.type == :method && object.is_alias?)"
|
212
|
-
OPTS
|
213
|
-
Rake::Task['yard'].execute
|
214
|
-
end
|
215
|
-
end
|
216
|
-
|
217
|
-
YARD::Rake::YardocTask.new do |t|
|
218
|
-
t.files = FileList.new(scope('lib/**/*.rb')) do |list|
|
219
|
-
list.exclude('lib/sass/plugin/merb.rb')
|
220
|
-
list.exclude('lib/sass/plugin/rails.rb')
|
221
|
-
list.exclude('lib/sass/less.rb')
|
222
|
-
end.to_a
|
223
|
-
t.options << '--incremental' if Rake.application.top_level_tasks.include?('redoc')
|
224
|
-
t.options += FileList.new(scope('yard/*.rb')).to_a.map {|f| ['-e', f]}.flatten
|
225
|
-
files = FileList.new(scope('doc-src/*')).to_a.sort_by {|s| s.size} + %w[MIT-LICENSE VERSION]
|
226
|
-
t.options << '--files' << files.join(',')
|
227
|
-
t.options << '--template-path' << scope('yard')
|
228
|
-
t.options << '--title' << ENV["YARD_TITLE"] if ENV["YARD_TITLE"]
|
229
|
-
|
230
|
-
t.before = lambda do
|
231
|
-
if ENV["YARD_OPTS"]
|
232
|
-
require 'shellwords'
|
233
|
-
t.options.concat(Shellwords.shellwords(ENV["YARD_OPTS"]))
|
234
|
-
end
|
235
|
-
end
|
236
|
-
end
|
237
|
-
Rake::Task['yard'].prerequisites.insert(0, 'doc:sass')
|
238
|
-
Rake::Task['yard'].instance_variable_set('@comment', nil)
|
239
|
-
|
240
|
-
desc "Generate Documentation"
|
241
|
-
task :doc => :yard
|
242
|
-
task :redoc => :yard
|
243
|
-
rescue LoadError
|
244
|
-
desc "Generate Documentation"
|
245
|
-
task :doc => :rdoc
|
246
|
-
task :yard => :rdoc
|
247
|
-
end
|
248
|
-
|
249
|
-
task :pages do
|
250
|
-
ensure_git_cleanup do
|
251
|
-
puts "#{'=' * 50} Running rake pages"
|
252
|
-
sh %{git checkout sass-pages}
|
253
|
-
sh %{git reset --hard origin/sass-pages}
|
254
|
-
|
255
|
-
Dir.chdir("/var/www/sass-pages") do
|
256
|
-
sh %{git fetch origin}
|
257
|
-
|
258
|
-
sh %{git checkout stable}
|
259
|
-
sh %{git reset --hard origin/stable}
|
260
|
-
|
261
|
-
sh %{git checkout sass-pages}
|
262
|
-
sh %{git reset --hard origin/sass-pages}
|
263
|
-
sh %{rake build --trace}
|
264
|
-
sh %{mkdir -p tmp}
|
265
|
-
sh %{touch tmp/restart.txt}
|
266
|
-
end
|
267
|
-
end
|
268
|
-
end
|
269
|
-
|
270
|
-
# ----- Coverage -----
|
271
|
-
|
272
|
-
begin
|
273
|
-
require 'rcov/rcovtask'
|
274
|
-
|
275
|
-
Rcov::RcovTask.new do |t|
|
276
|
-
t.test_files = FileList[scope('test/**/*_test.rb')]
|
277
|
-
t.rcov_opts << '-x' << '"^\/"'
|
278
|
-
if ENV['NON_NATIVE']
|
279
|
-
t.rcov_opts << "--no-rcovrt"
|
280
|
-
end
|
281
|
-
t.verbose = true
|
282
|
-
end
|
283
|
-
rescue LoadError; end
|
284
|
-
|
285
|
-
# ----- Profiling -----
|
286
|
-
|
287
|
-
begin
|
288
|
-
require 'ruby-prof'
|
289
|
-
|
290
|
-
desc <<END
|
291
|
-
Run a profile of sass.
|
292
|
-
TIMES=n sets the number of runs. Defaults to 1000.
|
293
|
-
FILE=str sets the file to profile. Defaults to 'complex'.
|
294
|
-
OUTPUT=str sets the ruby-prof output format.
|
295
|
-
Can be Flat, CallInfo, or Graph. Defaults to Flat. Defaults to Flat.
|
296
|
-
END
|
297
|
-
task :profile do
|
298
|
-
times = (ENV['TIMES'] || '1000').to_i
|
299
|
-
file = ENV['FILE']
|
300
|
-
|
301
|
-
require 'lib/sass'
|
302
|
-
|
303
|
-
file = File.read(scope("test/sass/templates/#{file || 'complex'}.sass"))
|
304
|
-
result = RubyProf.profile { times.times { Sass::Engine.new(file).render } }
|
305
|
-
|
306
|
-
RubyProf.const_get("#{(ENV['OUTPUT'] || 'Flat').capitalize}Printer").new(result).print
|
307
|
-
end
|
308
|
-
rescue LoadError; end
|
309
|
-
|
310
|
-
# ----- Handling Updates -----
|
311
|
-
|
312
|
-
def email_on_error
|
313
|
-
yield
|
314
|
-
rescue Exception => e
|
315
|
-
IO.popen("sendmail nex342@gmail.com", "w") do |sm|
|
316
|
-
sm << "From: nex3@nex-3.com\n" <<
|
317
|
-
"To: nex342@gmail.com\n" <<
|
318
|
-
"Subject: Exception when running rake #{Rake.application.top_level_tasks.join(', ')}\n" <<
|
319
|
-
e.message << "\n\n" <<
|
320
|
-
e.backtrace.join("\n")
|
321
|
-
end
|
322
|
-
ensure
|
323
|
-
raise e if e
|
324
|
-
end
|
325
|
-
|
326
|
-
def ensure_git_cleanup
|
327
|
-
email_on_error {yield}
|
328
|
-
ensure
|
329
|
-
sh %{git reset --hard HEAD}
|
330
|
-
sh %{git clean -xdf}
|
331
|
-
sh %{git checkout master}
|
332
|
-
end
|
333
|
-
|
334
|
-
task :handle_update do
|
335
|
-
email_on_error do
|
336
|
-
unless ENV["REF"] =~ %r{^refs/heads/(master|stable|sass-pages)$}
|
337
|
-
puts "#{'=' * 20} Ignoring rake handle_update REF=#{ENV["REF"].inspect}"
|
338
|
-
next
|
339
|
-
end
|
340
|
-
branch = $1
|
341
|
-
|
342
|
-
puts
|
343
|
-
puts
|
344
|
-
puts '=' * 150
|
345
|
-
puts "Running rake handle_update REF=#{ENV["REF"].inspect}"
|
346
|
-
|
347
|
-
sh %{git fetch origin}
|
348
|
-
sh %{git checkout stable}
|
349
|
-
sh %{git reset --hard origin/stable}
|
350
|
-
sh %{git checkout master}
|
351
|
-
sh %{git reset --hard origin/master}
|
352
|
-
|
353
|
-
case branch
|
354
|
-
when "master"
|
355
|
-
sh %{rake release_edge --trace}
|
356
|
-
when "stable", "sass-pages"
|
357
|
-
sh %{rake pages --trace}
|
358
|
-
end
|
359
|
-
|
360
|
-
puts 'Done running handle_update'
|
361
|
-
puts '=' * 150
|
362
|
-
end
|
363
|
-
end
|