oreorenasass 3.4.4 → 3.4.5
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.
- checksums.yaml +4 -4
- data/MIT-LICENSE +1 -1
- data/README.md +50 -70
- data/Rakefile +5 -26
- data/VERSION +1 -1
- data/VERSION_NAME +1 -1
- data/bin/sass +1 -1
- data/bin/scss +1 -1
- data/lib/sass.rb +12 -19
- data/lib/sass/cache_stores/base.rb +2 -2
- data/lib/sass/cache_stores/chain.rb +1 -2
- data/lib/sass/cache_stores/filesystem.rb +5 -1
- data/lib/sass/cache_stores/memory.rb +1 -1
- data/lib/sass/cache_stores/null.rb +2 -2
- data/lib/sass/callbacks.rb +0 -1
- data/lib/sass/css.rb +13 -11
- data/lib/sass/engine.rb +173 -424
- data/lib/sass/environment.rb +58 -148
- data/lib/sass/error.rb +14 -11
- data/lib/sass/exec.rb +703 -5
- data/lib/sass/importers/base.rb +6 -49
- data/lib/sass/importers/filesystem.rb +19 -44
- data/lib/sass/logger.rb +4 -1
- data/lib/sass/logger/base.rb +4 -2
- data/lib/sass/logger/log_level.rb +7 -3
- data/lib/sass/media.rb +23 -20
- data/lib/sass/plugin.rb +7 -7
- data/lib/sass/plugin/compiler.rb +145 -304
- data/lib/sass/plugin/configuration.rb +23 -18
- data/lib/sass/plugin/merb.rb +1 -1
- data/lib/sass/plugin/staleness_checker.rb +3 -3
- data/lib/sass/repl.rb +3 -3
- data/lib/sass/script.rb +8 -35
- data/lib/sass/script/{value/arg_list.rb → arg_list.rb} +25 -9
- data/lib/sass/script/bool.rb +18 -0
- data/lib/sass/script/color.rb +606 -0
- data/lib/sass/script/css_lexer.rb +4 -8
- data/lib/sass/script/css_parser.rb +2 -5
- data/lib/sass/script/funcall.rb +245 -0
- data/lib/sass/script/functions.rb +408 -1491
- data/lib/sass/script/interpolation.rb +79 -0
- data/lib/sass/script/lexer.rb +68 -172
- data/lib/sass/script/list.rb +85 -0
- data/lib/sass/script/literal.rb +221 -0
- data/lib/sass/script/{tree/node.rb → node.rb} +12 -22
- data/lib/sass/script/{value/null.rb → null.rb} +7 -14
- data/lib/sass/script/{value/number.rb → number.rb} +75 -152
- data/lib/sass/script/{tree/operation.rb → operation.rb} +24 -17
- data/lib/sass/script/parser.rb +110 -245
- data/lib/sass/script/string.rb +51 -0
- data/lib/sass/script/{tree/string_interpolation.rb → string_interpolation.rb} +4 -5
- data/lib/sass/script/{tree/unary_operation.rb → unary_operation.rb} +6 -6
- data/lib/sass/script/variable.rb +58 -0
- data/lib/sass/scss/css_parser.rb +3 -9
- data/lib/sass/scss/parser.rb +421 -450
- data/lib/sass/scss/rx.rb +11 -19
- data/lib/sass/scss/static_parser.rb +7 -321
- data/lib/sass/selector.rb +194 -68
- data/lib/sass/selector/abstract_sequence.rb +14 -29
- data/lib/sass/selector/comma_sequence.rb +25 -108
- data/lib/sass/selector/sequence.rb +66 -159
- data/lib/sass/selector/simple.rb +25 -23
- data/lib/sass/selector/simple_sequence.rb +63 -173
- data/lib/sass/shared.rb +1 -1
- data/lib/sass/supports.rb +15 -13
- data/lib/sass/tree/charset_node.rb +1 -1
- data/lib/sass/tree/comment_node.rb +3 -3
- data/lib/sass/tree/css_import_node.rb +11 -11
- data/lib/sass/tree/debug_node.rb +2 -2
- data/lib/sass/tree/directive_node.rb +4 -21
- data/lib/sass/tree/each_node.rb +8 -8
- data/lib/sass/tree/extend_node.rb +7 -14
- data/lib/sass/tree/for_node.rb +4 -4
- data/lib/sass/tree/function_node.rb +4 -9
- data/lib/sass/tree/if_node.rb +1 -1
- data/lib/sass/tree/import_node.rb +5 -4
- data/lib/sass/tree/media_node.rb +14 -4
- data/lib/sass/tree/mixin_def_node.rb +4 -4
- data/lib/sass/tree/mixin_node.rb +8 -21
- data/lib/sass/tree/node.rb +12 -54
- data/lib/sass/tree/prop_node.rb +20 -39
- data/lib/sass/tree/return_node.rb +2 -3
- data/lib/sass/tree/root_node.rb +3 -19
- data/lib/sass/tree/rule_node.rb +22 -35
- data/lib/sass/tree/supports_node.rb +13 -0
- data/lib/sass/tree/trace_node.rb +1 -2
- data/lib/sass/tree/variable_node.rb +3 -9
- data/lib/sass/tree/visitors/base.rb +8 -5
- data/lib/sass/tree/visitors/check_nesting.rb +19 -49
- data/lib/sass/tree/visitors/convert.rb +56 -74
- data/lib/sass/tree/visitors/cssize.rb +74 -202
- data/lib/sass/tree/visitors/deep_copy.rb +5 -10
- data/lib/sass/tree/visitors/extend.rb +7 -7
- data/lib/sass/tree/visitors/perform.rb +185 -278
- data/lib/sass/tree/visitors/set_options.rb +6 -20
- data/lib/sass/tree/visitors/to_css.rb +81 -234
- data/lib/sass/tree/warn_node.rb +2 -2
- data/lib/sass/tree/while_node.rb +2 -2
- data/lib/sass/util.rb +152 -522
- data/lib/sass/util/multibyte_string_scanner.rb +0 -2
- data/lib/sass/util/subset_map.rb +3 -4
- data/lib/sass/util/test.rb +1 -0
- data/lib/sass/version.rb +22 -20
- data/test/Gemfile +3 -0
- data/test/Gemfile.lock +10 -0
- data/test/sass/cache_test.rb +20 -62
- data/test/sass/callbacks_test.rb +1 -1
- data/test/sass/conversion_test.rb +2 -296
- data/test/sass/css2sass_test.rb +4 -23
- data/test/sass/engine_test.rb +354 -411
- data/test/sass/exec_test.rb +2 -2
- data/test/sass/extend_test.rb +145 -324
- data/test/sass/functions_test.rb +86 -873
- data/test/sass/importer_test.rb +21 -241
- data/test/sass/logger_test.rb +1 -1
- data/test/sass/more_results/more_import.css +1 -1
- data/test/sass/plugin_test.rb +26 -16
- data/test/sass/results/compact.css +1 -1
- data/test/sass/results/complex.css +4 -4
- data/test/sass/results/expanded.css +1 -1
- data/test/sass/results/import.css +1 -1
- data/test/sass/results/import_charset_ibm866.css +2 -2
- data/test/sass/results/mixins.css +17 -17
- data/test/sass/results/nested.css +1 -1
- data/test/sass/results/parent_ref.css +2 -2
- data/test/sass/results/script.css +3 -3
- data/test/sass/results/scss_import.css +1 -1
- data/test/sass/script_conversion_test.rb +7 -36
- data/test/sass/script_test.rb +53 -485
- data/test/sass/scss/css_test.rb +28 -143
- data/test/sass/scss/rx_test.rb +4 -4
- data/test/sass/scss/scss_test.rb +325 -2119
- data/test/sass/templates/scss_import.scss +1 -2
- data/test/sass/test_helper.rb +1 -1
- data/test/sass/util/multibyte_string_scanner_test.rb +1 -1
- data/test/sass/util/subset_map_test.rb +2 -2
- data/test/sass/util_test.rb +1 -86
- data/test/test_helper.rb +8 -37
- metadata +19 -66
- data/lib/sass/exec/base.rb +0 -187
- data/lib/sass/exec/sass_convert.rb +0 -264
- data/lib/sass/exec/sass_scss.rb +0 -424
- data/lib/sass/features.rb +0 -47
- data/lib/sass/script/tree.rb +0 -16
- data/lib/sass/script/tree/funcall.rb +0 -306
- data/lib/sass/script/tree/interpolation.rb +0 -118
- data/lib/sass/script/tree/list_literal.rb +0 -77
- data/lib/sass/script/tree/literal.rb +0 -45
- data/lib/sass/script/tree/map_literal.rb +0 -64
- data/lib/sass/script/tree/selector.rb +0 -26
- data/lib/sass/script/tree/variable.rb +0 -57
- data/lib/sass/script/value.rb +0 -11
- data/lib/sass/script/value/base.rb +0 -240
- data/lib/sass/script/value/bool.rb +0 -35
- data/lib/sass/script/value/color.rb +0 -680
- data/lib/sass/script/value/helpers.rb +0 -262
- data/lib/sass/script/value/list.rb +0 -113
- data/lib/sass/script/value/map.rb +0 -70
- data/lib/sass/script/value/string.rb +0 -97
- data/lib/sass/selector/pseudo.rb +0 -256
- data/lib/sass/source/map.rb +0 -210
- data/lib/sass/source/position.rb +0 -39
- data/lib/sass/source/range.rb +0 -41
- data/lib/sass/stack.rb +0 -120
- data/lib/sass/tree/at_root_node.rb +0 -83
- data/lib/sass/tree/error_node.rb +0 -18
- data/lib/sass/tree/keyframe_rule_node.rb +0 -15
- data/lib/sass/util/cross_platform_random.rb +0 -19
- data/lib/sass/util/normalized_map.rb +0 -130
- data/lib/sass/util/ordered_hash.rb +0 -192
- data/test/sass/compiler_test.rb +0 -232
- data/test/sass/encoding_test.rb +0 -219
- data/test/sass/source_map_test.rb +0 -977
- data/test/sass/superselector_test.rb +0 -191
- data/test/sass/util/normalized_map_test.rb +0 -51
- data/test/sass/value_helpers_test.rb +0 -179
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 43d86ae65ada6b57dc4199e4f9549b229d948a97
|
4
|
+
data.tar.gz: 0d4ae59a191fae5b3bdab842b98daeec19aaa4ac
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 77f6e678d9ccec64f3f78ed65e0b5d740ab729b65f4cdd375a49f998e147c9481dcf0c5e92a47f174ff6d2e800937b236cf6a627e0277b0cde92c0ce92664ac1
|
7
|
+
data.tar.gz: ae21995c6b87813c4ed406e984daecbf0d6043c38c98089e0761b4a67d0fef884ddbde627f71ad614685d9196bfce6ea9b6a265e0121f3325797defa09f89c7b
|
data/MIT-LICENSE
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
Copyright (c) 2006-
|
1
|
+
Copyright (c) 2006-2013 Hampton Catlin, Nathan Weizenbaum, and Chris Eppstein
|
2
2
|
|
3
3
|
Permission is hereby granted, free of charge, to any person obtaining
|
4
4
|
a copy of this software and associated documentation files (the
|
data/README.md
CHANGED
@@ -49,10 +49,8 @@ see [the Sass reference](http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.ht
|
|
49
49
|
Sass can also be used with any Rack-enabled web framework.
|
50
50
|
To do so, just add
|
51
51
|
|
52
|
-
|
53
|
-
|
54
|
-
use Sass::Plugin::Rack
|
55
|
-
```
|
52
|
+
require 'sass/plugin/rack'
|
53
|
+
use Sass::Plugin::Rack
|
56
54
|
|
57
55
|
to `config.ru`.
|
58
56
|
Then any Sass files in `public/stylesheets/sass`
|
@@ -95,20 +93,18 @@ put them in a file called `test.scss` and run `sass test.scss`.
|
|
95
93
|
Sass avoids repetition by nesting selectors within one another.
|
96
94
|
The same thing works for properties.
|
97
95
|
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
}
|
111
|
-
```
|
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
|
+
}
|
112
108
|
|
113
109
|
### Variables
|
114
110
|
|
@@ -116,21 +112,19 @@ Use the same color all over the place?
|
|
116
112
|
Need to do some math with height and width and text size?
|
117
113
|
Sass supports variables, math operations, and many useful functions.
|
118
114
|
|
119
|
-
|
120
|
-
$
|
121
|
-
$margin: 16px;
|
115
|
+
$blue: #3bbfce;
|
116
|
+
$margin: 16px;
|
122
117
|
|
123
|
-
.content_navigation {
|
124
|
-
|
125
|
-
|
126
|
-
}
|
118
|
+
.content_navigation {
|
119
|
+
border-color: $blue;
|
120
|
+
color: darken($blue, 10%);
|
121
|
+
}
|
127
122
|
|
128
|
-
.border {
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
}
|
133
|
-
```
|
123
|
+
.border {
|
124
|
+
padding: $margin / 2;
|
125
|
+
margin: $margin / 2;
|
126
|
+
border-color: $blue;
|
127
|
+
}
|
134
128
|
|
135
129
|
### Mixins
|
136
130
|
|
@@ -139,25 +133,23 @@ mixins allow you to re-use whole chunks of CSS,
|
|
139
133
|
properties or selectors.
|
140
134
|
You can even give them arguments.
|
141
135
|
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
}
|
160
|
-
```
|
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
|
+
}
|
161
153
|
|
162
154
|
A comprehensive list of features is available
|
163
155
|
in the [Sass reference](http://sass-lang.com/documentation/file.SASS_REFERENCE.html).
|
@@ -179,18 +171,6 @@ When converting from CSS to Sass or SCSS,
|
|
179
171
|
nesting is applied where appropriate.
|
180
172
|
See `sass-convert --help` for further information and options.
|
181
173
|
|
182
|
-
### Running locally
|
183
|
-
|
184
|
-
To run the Sass executables from a source checkout instead of from rubygems:
|
185
|
-
|
186
|
-
```
|
187
|
-
$ cd <SASS_CHECKOUT_DIRECTORY>
|
188
|
-
$ bundle
|
189
|
-
$ bundle exec sass ...
|
190
|
-
$ bundle exec scss ...
|
191
|
-
$ bundle exec sass-convert ...
|
192
|
-
```
|
193
|
-
|
194
174
|
## Authors
|
195
175
|
|
196
176
|
Sass was envisioned by [Hampton Catlin](http://www.hamptoncatlin.com)
|
@@ -199,23 +179,23 @@ and now occasionally consults on the language issues. Hampton lives in San
|
|
199
179
|
Francisco, California and works as VP of Technology
|
200
180
|
at [Moovweb](http://www.moovweb.com/).
|
201
181
|
|
202
|
-
[
|
203
|
-
Sass.
|
182
|
+
[Nathan Weizenbaum](http://nex-3.com) is the primary developer and architect of
|
183
|
+
Sass. His hard work has kept the project alive by endlessly answering forum
|
204
184
|
posts, fixing bugs, refactoring, finding speed improvements, writing
|
205
185
|
documentation, implementing new features, and getting Hampton coffee (a fitting
|
206
|
-
task for a
|
186
|
+
task for a boy-genius). Nathan lives in Seattle, Washington and works on
|
207
187
|
[Dart](http://dartlang.org) application libraries at Google.
|
208
188
|
|
209
189
|
[Chris Eppstein](http://acts-as-architect.blogspot.com) is a core contributor to
|
210
190
|
Sass and the creator of Compass, the first Sass-based framework. Chris focuses
|
211
191
|
on making Sass more powerful, easy to use, and on ways to speed its adoption
|
212
192
|
through the web development community. Chris lives in San Jose, California with
|
213
|
-
his wife and daughter. He is
|
214
|
-
[
|
215
|
-
|
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.
|
216
196
|
|
217
|
-
If you use this software, you must pay Hampton a compliment. And
|
218
|
-
some
|
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.
|
219
199
|
|
220
200
|
Beyond that, the implementation is licensed under the MIT License.
|
221
201
|
Okay, fine, I guess that means compliments aren't __required__.
|
data/Rakefile
CHANGED
@@ -21,25 +21,6 @@ Rake::TestTask.new do |t|
|
|
21
21
|
t.verbose = true
|
22
22
|
end
|
23
23
|
|
24
|
-
# ----- Code Style Enforcement -----
|
25
|
-
|
26
|
-
if RUBY_VERSION !~ /^(1\.8)/ && (ENV.has_key?("RUBOCOP") && ENV["RUBOCOP"] == "true" || !(ENV.has_key?("RUBOCOP") || ENV.has_key?("TEST")))
|
27
|
-
require 'rubocop/rake_task'
|
28
|
-
Rubocop::RakeTask.new do |t|
|
29
|
-
t.patterns = FileList["lib/**/*"]
|
30
|
-
end
|
31
|
-
else
|
32
|
-
task :rubocop do
|
33
|
-
puts "Skipping rubocop style check."
|
34
|
-
if !ENV.has_key?("RUBOCOP")
|
35
|
-
puts "Passing this check is required in order for your patch to be accepted."
|
36
|
-
puts "Use ruby 1.9 or greater and then run the style check with: rake rubocop"
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
task :test => :rubocop
|
42
|
-
|
43
24
|
# ----- Packaging -----
|
44
25
|
|
45
26
|
# Don't use Rake::GemPackageTast because we want prerequisites to run
|
@@ -102,10 +83,12 @@ task :install => [:package] do
|
|
102
83
|
sh %{#{'sudo ' if ENV["SUDO"]}#{gem} install --no-ri pkg/sass-#{get_version}}
|
103
84
|
end
|
104
85
|
|
105
|
-
desc "Release a new Sass package to
|
86
|
+
desc "Release a new Sass package to Rubyforge."
|
106
87
|
task :release => [:check_release, :package] do
|
107
88
|
name = File.read(scope("VERSION_NAME")).strip
|
108
89
|
version = File.read(scope("VERSION")).strip
|
90
|
+
# sh %{rubyforge add_release sass sass "#{name} (v#{version})" pkg/sass-#{version}.gem}
|
91
|
+
# sh %{rubyforge add_file sass sass "#{name} (v#{version})" pkg/sass-#{version}.tar.gz}
|
109
92
|
sh %{gem push pkg/sass-#{version}.gem}
|
110
93
|
end
|
111
94
|
|
@@ -159,11 +142,7 @@ task :release_edge do
|
|
159
142
|
sh %{git reset --hard origin/master}
|
160
143
|
sh %{rake package}
|
161
144
|
version = get_version
|
162
|
-
|
163
|
-
puts "#{'=' * 20} Not releasing edge gem for RC version"
|
164
|
-
next
|
165
|
-
end
|
166
|
-
|
145
|
+
# sh %{rubyforge add_release sass sass "Bleeding Edge (v#{version})" pkg/sass-#{version}.gem}
|
167
146
|
sh %{gem push pkg/sass-#{version}.gem}
|
168
147
|
end
|
169
148
|
end
|
@@ -214,7 +193,7 @@ begin
|
|
214
193
|
task :undocumented do
|
215
194
|
opts = ENV["YARD_OPTS"] || ""
|
216
195
|
ENV["YARD_OPTS"] = opts.dup + <<OPTS
|
217
|
-
--list --
|
196
|
+
--list --query "
|
218
197
|
object.docstring.blank? &&
|
219
198
|
!(object.type == :method && object.is_alias?)"
|
220
199
|
OPTS
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.4.
|
1
|
+
3.4.5
|
data/VERSION_NAME
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
Media Mark
|
data/bin/sass
CHANGED
data/bin/scss
CHANGED
data/lib/sass.rb
CHANGED
@@ -1,6 +1,11 @@
|
|
1
1
|
dir = File.dirname(__FILE__)
|
2
2
|
$LOAD_PATH.unshift dir unless $LOAD_PATH.include?(dir)
|
3
3
|
|
4
|
+
# This is necessary to set so that the Haml code that tries to load Sass
|
5
|
+
# knows that Sass is indeed loading,
|
6
|
+
# even if there's some crazy autoload stuff going on.
|
7
|
+
SASS_BEGUN_TO_LOAD = true unless defined?(SASS_BEGUN_TO_LOAD)
|
8
|
+
|
4
9
|
require 'sass/version'
|
5
10
|
|
6
11
|
# The module that contains everything Sass-related:
|
@@ -12,14 +17,9 @@ require 'sass/version'
|
|
12
17
|
#
|
13
18
|
# Also see the {file:SASS_REFERENCE.md full Sass reference}.
|
14
19
|
module Sass
|
15
|
-
class << self
|
16
|
-
# @private
|
17
|
-
attr_accessor :tests_running
|
18
|
-
end
|
19
|
-
|
20
20
|
# The global load paths for Sass files. This is meant for plugins and
|
21
21
|
# libraries to register the paths to their Sass stylesheets to that they may
|
22
|
-
# be `@imported`. This load path is used by every instance of
|
22
|
+
# be `@imported`. This load path is used by every instance of [Sass::Engine].
|
23
23
|
# They are lower-precedence than any load paths passed in via the
|
24
24
|
# {file:SASS_REFERENCE.md#load_paths-option `:load_paths` option}.
|
25
25
|
#
|
@@ -35,11 +35,8 @@ module Sass
|
|
35
35
|
# Sass.load_paths << File.dirname(__FILE__ + '/sass')
|
36
36
|
# @return [Array<String, Pathname, Sass::Importers::Base>]
|
37
37
|
def self.load_paths
|
38
|
-
@load_paths ||=
|
39
|
-
|
40
|
-
else
|
41
|
-
[]
|
42
|
-
end
|
38
|
+
@load_paths ||= ENV['SASS_PATH'] ?
|
39
|
+
ENV['SASS_PATH'].split(Sass::Util.windows? ? ';' : ':') : []
|
43
40
|
end
|
44
41
|
|
45
42
|
# Compile a Sass or SCSS string to CSS.
|
@@ -59,6 +56,9 @@ module Sass
|
|
59
56
|
|
60
57
|
# Compile a file on disk to CSS.
|
61
58
|
#
|
59
|
+
# @param filename [String] The path to the Sass, SCSS, or CSS file on disk.
|
60
|
+
# @param options [{Symbol => Object}] An options hash;
|
61
|
+
# see {file:SASS_REFERENCE.md#sass_options the Sass options documentation}
|
62
62
|
# @raise [Sass::SyntaxError] if there's an error in the document
|
63
63
|
# @raise [Encoding::UndefinedConversionError] if the source encoding
|
64
64
|
# cannot be converted to UTF-8
|
@@ -67,17 +67,11 @@ module Sass
|
|
67
67
|
# @overload compile_file(filename, options = {})
|
68
68
|
# Return the compiled CSS rather than writing it to a file.
|
69
69
|
#
|
70
|
-
# @param filename [String] The path to the Sass, SCSS, or CSS file on disk.
|
71
|
-
# @param options [{Symbol => Object}] An options hash;
|
72
|
-
# see {file:SASS_REFERENCE.md#sass_options the Sass options documentation}
|
73
70
|
# @return [String] The compiled CSS.
|
74
71
|
#
|
75
72
|
# @overload compile_file(filename, css_filename, options = {})
|
76
73
|
# Write the compiled CSS to a file.
|
77
74
|
#
|
78
|
-
# @param filename [String] The path to the Sass, SCSS, or CSS file on disk.
|
79
|
-
# @param options [{Symbol => Object}] An options hash;
|
80
|
-
# see {file:SASS_REFERENCE.md#sass_options the Sass options documentation}
|
81
75
|
# @param css_filename [String] The location to which to write the compiled CSS.
|
82
76
|
def self.compile_file(filename, *args)
|
83
77
|
options = args.last.is_a?(Hash) ? args.pop : {}
|
@@ -85,7 +79,7 @@ module Sass
|
|
85
79
|
result = Sass::Engine.for_file(filename, options).render
|
86
80
|
if css_filename
|
87
81
|
options[:css_filename] ||= css_filename
|
88
|
-
open(css_filename,
|
82
|
+
open(css_filename,"w") {|css_file| css_file.write(result)}
|
89
83
|
nil
|
90
84
|
else
|
91
85
|
result
|
@@ -99,4 +93,3 @@ require 'sass/util'
|
|
99
93
|
require 'sass/engine'
|
100
94
|
require 'sass/plugin' if defined?(Merb::Plugins)
|
101
95
|
require 'sass/railtie'
|
102
|
-
require 'sass/features'
|
@@ -27,7 +27,7 @@ module Sass
|
|
27
27
|
|
28
28
|
# Retrieved cached contents.
|
29
29
|
# Must be implemented by all subclasses.
|
30
|
-
#
|
30
|
+
#
|
31
31
|
# Note: if the key exists but the sha or version have changed,
|
32
32
|
# then the key may be deleted by the cache store, if it wants to do so.
|
33
33
|
#
|
@@ -46,7 +46,7 @@ module Sass
|
|
46
46
|
#
|
47
47
|
# @param key [String] The key to store it under.
|
48
48
|
# @param sha [String] The checksum for the contents that are being stored.
|
49
|
-
# @param
|
49
|
+
# @param obj [Object] The object to cache.
|
50
50
|
def store(key, sha, root)
|
51
51
|
_store(key, Sass::VERSION, sha, Marshal.dump(root))
|
52
52
|
rescue TypeError, LoadError => e
|
@@ -22,8 +22,7 @@ module Sass
|
|
22
22
|
# @see Base#retrieve
|
23
23
|
def retrieve(key, sha)
|
24
24
|
@caches.each_with_index do |c, i|
|
25
|
-
obj = c.retrieve(key, sha)
|
26
|
-
next unless obj
|
25
|
+
next unless obj = c.retrieve(key, sha)
|
27
26
|
@caches[0...i].each {|prev| prev.store(key, sha, obj)}
|
28
27
|
return obj
|
29
28
|
end
|
@@ -34,7 +34,11 @@ module Sass
|
|
34
34
|
|
35
35
|
# @see Base#\_store
|
36
36
|
def _store(key, version, sha, contents)
|
37
|
+
# return unless File.writable?(File.dirname(@cache_location))
|
38
|
+
# return if File.exists?(@cache_location) && !File.writable?(@cache_location)
|
37
39
|
compiled_filename = path_to(key)
|
40
|
+
# return if File.exists?(File.dirname(compiled_filename)) && !File.writable?(File.dirname(compiled_filename))
|
41
|
+
# return if File.exists?(compiled_filename) && !File.writable?(compiled_filename)
|
38
42
|
FileUtils.mkdir_p(File.dirname(compiled_filename))
|
39
43
|
Sass::Util.atomic_create_and_write_file(compiled_filename, 0600) do |f|
|
40
44
|
f.puts(version)
|
@@ -42,7 +46,7 @@ module Sass
|
|
42
46
|
f.write(contents)
|
43
47
|
end
|
44
48
|
rescue Errno::EACCES
|
45
|
-
#
|
49
|
+
#pass
|
46
50
|
end
|
47
51
|
|
48
52
|
private
|
data/lib/sass/callbacks.rb
CHANGED
data/lib/sass/css.rb
CHANGED
@@ -67,14 +67,16 @@ module Sass
|
|
67
67
|
def check_encoding!
|
68
68
|
return if @checked_encoding
|
69
69
|
@checked_encoding = true
|
70
|
-
@template, @original_encoding = Sass::Util.check_sass_encoding(@template)
|
70
|
+
@template, @original_encoding = Sass::Util.check_sass_encoding(@template) do |msg, line|
|
71
|
+
raise Sass::SyntaxError.new(msg, :line => line)
|
72
|
+
end
|
71
73
|
end
|
72
74
|
|
73
75
|
# Parses the CSS template and applies various transformations
|
74
76
|
#
|
75
77
|
# @return [Tree::Node] The root node of the parsed tree
|
76
78
|
def build_tree
|
77
|
-
root = Sass::SCSS::CssParser.new(@template, @options[:filename]
|
79
|
+
root = Sass::SCSS::CssParser.new(@template, @options[:filename]).parse
|
78
80
|
parse_selectors root
|
79
81
|
expand_commas root
|
80
82
|
nest_seqs root
|
@@ -94,7 +96,7 @@ module Sass
|
|
94
96
|
root.children.each do |child|
|
95
97
|
next parse_selectors(child) if child.is_a?(Tree::DirectiveNode)
|
96
98
|
next unless child.is_a?(Tree::RuleNode)
|
97
|
-
parser = Sass::SCSS::CssParser.new(child.rule.first, child.filename,
|
99
|
+
parser = Sass::SCSS::CssParser.new(child.rule.first, child.filename, child.line)
|
98
100
|
child.parsed_rules = parser.parse_selector
|
99
101
|
end
|
100
102
|
end
|
@@ -167,11 +169,11 @@ module Sass
|
|
167
169
|
current_rule.parsed_rules = make_seq(first)
|
168
170
|
end
|
169
171
|
|
170
|
-
|
171
|
-
current_rule.children += child.children
|
172
|
-
else
|
172
|
+
unless rest.empty?
|
173
173
|
child.parsed_rules = make_seq(*rest)
|
174
174
|
current_rule << child
|
175
|
+
else
|
176
|
+
current_rule.children += child.children
|
175
177
|
end
|
176
178
|
|
177
179
|
current_rule
|
@@ -218,12 +220,12 @@ module Sass
|
|
218
220
|
current_rule.parsed_rules = make_sseq(last_simple_subject, *firsts)
|
219
221
|
end
|
220
222
|
|
221
|
-
|
222
|
-
current_rule.children += child.children
|
223
|
-
else
|
223
|
+
unless rest.empty?
|
224
224
|
rest.unshift Sass::Selector::Parent.new
|
225
225
|
child.parsed_rules = make_sseq(sseq.subject?, *rest)
|
226
226
|
current_rule << child
|
227
|
+
else
|
228
|
+
current_rule.children += child.children
|
227
229
|
end
|
228
230
|
|
229
231
|
current_rule
|
@@ -315,7 +317,7 @@ module Sass
|
|
315
317
|
# bar, baz
|
316
318
|
# color: blue
|
317
319
|
#
|
318
|
-
# @param
|
320
|
+
# @param rule [Tree::RuleNode] The candidate for flattening
|
319
321
|
def fold_commas(root)
|
320
322
|
prev_rule = nil
|
321
323
|
root.children.map! do |child|
|
@@ -324,7 +326,7 @@ module Sass
|
|
324
326
|
next child
|
325
327
|
end
|
326
328
|
|
327
|
-
if prev_rule && prev_rule.children
|
329
|
+
if prev_rule && prev_rule.children == child.children
|
328
330
|
prev_rule.parsed_rules.members << first_seq(child)
|
329
331
|
next nil
|
330
332
|
end
|