haml-edge 2.3.194 → 2.3.195
Sign up to get free protection for your applications and to get access to all the features.
- data/EDGE_GEM_VERSION +1 -1
- data/VERSION +1 -1
- data/lib/haml/exec.rb +16 -6
- data/lib/sass/css.rb +25 -6
- data/test/sass/css2sass_test.rb +31 -0
- metadata +2 -2
data/EDGE_GEM_VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.3.
|
1
|
+
2.3.195
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.3.
|
1
|
+
2.3.195
|
data/lib/haml/exec.rb
CHANGED
@@ -15,14 +15,11 @@ module Haml
|
|
15
15
|
|
16
16
|
# Parses the command-line arguments and runs the executable.
|
17
17
|
# Calls `Kernel#exit` at the end, so it never returns.
|
18
|
+
#
|
19
|
+
# @see #parse
|
18
20
|
def parse!
|
19
21
|
begin
|
20
|
-
|
21
|
-
@opts.parse!(@args)
|
22
|
-
|
23
|
-
process_result
|
24
|
-
|
25
|
-
@options
|
22
|
+
parse
|
26
23
|
rescue Exception => e
|
27
24
|
raise e if @options[:trace] || e.is_a?(SystemExit)
|
28
25
|
|
@@ -32,6 +29,19 @@ module Haml
|
|
32
29
|
exit 0
|
33
30
|
end
|
34
31
|
|
32
|
+
# Parses the command-line arguments and runs the executable.
|
33
|
+
# This does not handle exceptions or exit the program.
|
34
|
+
#
|
35
|
+
# @see #parse!
|
36
|
+
def parse
|
37
|
+
@opts = OptionParser.new(&method(:set_opts))
|
38
|
+
@opts.parse!(@args)
|
39
|
+
|
40
|
+
process_result
|
41
|
+
|
42
|
+
@options
|
43
|
+
end
|
44
|
+
|
35
45
|
# @return [String] A description of the executable
|
36
46
|
def to_s
|
37
47
|
@opts.to_s
|
data/lib/sass/css.rb
CHANGED
@@ -79,7 +79,10 @@ module Sass
|
|
79
79
|
# @param root [Tree::Node] The parent node
|
80
80
|
def expand_commas(root)
|
81
81
|
root.children.map! do |child|
|
82
|
-
|
82
|
+
unless child.is_a?(Tree::RuleNode) && child.rule.first.include?(',')
|
83
|
+
expand_commas(child) if child.is_a?(Tree::DirectiveNode)
|
84
|
+
next child
|
85
|
+
end
|
83
86
|
child.rule.first.split(',').map do |rule|
|
84
87
|
node = Tree::RuleNode.new([rule.strip])
|
85
88
|
node.children = child.children
|
@@ -126,9 +129,12 @@ module Sass
|
|
126
129
|
def parent_ref_rules(root)
|
127
130
|
current_rule = nil
|
128
131
|
root.children.map! do |child|
|
129
|
-
|
132
|
+
unless child.is_a?(Tree::RuleNode)
|
133
|
+
parent_ref_rules(child) if child.is_a?(Tree::DirectiveNode)
|
134
|
+
next child
|
135
|
+
end
|
130
136
|
|
131
|
-
first, rest = child.rule.first.scan(
|
137
|
+
first, rest = child.rule.first.scan(/\A(&?(?: .|[^ ])[^.#: \[]*)([.#: \[].*)?\Z/m).first
|
132
138
|
|
133
139
|
if current_rule.nil? || current_rule.rule.first != first
|
134
140
|
current_rule = Tree::RuleNode.new([first])
|
@@ -164,9 +170,12 @@ module Sass
|
|
164
170
|
# @param root [Tree::Node] The parent node
|
165
171
|
def remove_parent_refs(root)
|
166
172
|
root.children.each do |child|
|
167
|
-
|
173
|
+
case child
|
174
|
+
when Tree::RuleNode
|
168
175
|
child.rule.first.gsub! /^& +/, ''
|
169
176
|
remove_parent_refs child
|
177
|
+
when Tree::DirectiveNode
|
178
|
+
remove_parent_refs child
|
170
179
|
end
|
171
180
|
end
|
172
181
|
end
|
@@ -195,7 +204,14 @@ module Sass
|
|
195
204
|
#
|
196
205
|
# @param root [Tree::Node] The parent node
|
197
206
|
def flatten_rules(root)
|
198
|
-
root.children.each
|
207
|
+
root.children.each do |child|
|
208
|
+
case child
|
209
|
+
when Tree::RuleNode
|
210
|
+
flatten_rule(child)
|
211
|
+
when Tree::DirectiveNode
|
212
|
+
flatten_rules(child)
|
213
|
+
end
|
214
|
+
end
|
199
215
|
end
|
200
216
|
|
201
217
|
# Flattens a single rule
|
@@ -236,7 +252,10 @@ module Sass
|
|
236
252
|
def fold_commas(root)
|
237
253
|
prev_rule = nil
|
238
254
|
root.children.map! do |child|
|
239
|
-
|
255
|
+
unless child.is_a?(Tree::RuleNode)
|
256
|
+
fold_commas(child) if child.is_a?(Tree::DirectiveNode)
|
257
|
+
next child
|
258
|
+
end
|
240
259
|
|
241
260
|
if prev_rule && prev_rule.children == child.children
|
242
261
|
prev_rule.rule.first << ", #{child.rule.first}"
|
data/test/sass/css2sass_test.rb
CHANGED
@@ -237,6 +237,37 @@ SASS
|
|
237
237
|
CSS
|
238
238
|
end
|
239
239
|
|
240
|
+
# Regressions
|
241
|
+
|
242
|
+
def test_nesting_within_media
|
243
|
+
assert_equal(<<SASS, css2sass(<<CSS))
|
244
|
+
@media all
|
245
|
+
.next .vevent
|
246
|
+
padding-left: 0
|
247
|
+
padding-right: 0
|
248
|
+
SASS
|
249
|
+
@media all {
|
250
|
+
.next .vevent {
|
251
|
+
padding-left: 0;
|
252
|
+
padding-right: 0; } }
|
253
|
+
CSS
|
254
|
+
end
|
255
|
+
|
256
|
+
def test_multiline_selector_within_media_and_with_child_selector
|
257
|
+
assert_equal(<<SASS, css2sass(<<CSS))
|
258
|
+
@media all
|
259
|
+
foo bar, baz
|
260
|
+
padding-left: 0
|
261
|
+
padding-right: 0
|
262
|
+
SASS
|
263
|
+
@media all {
|
264
|
+
foo bar,
|
265
|
+
baz {
|
266
|
+
padding-left: 0;
|
267
|
+
padding-right: 0; } }
|
268
|
+
CSS
|
269
|
+
end
|
270
|
+
|
240
271
|
# Error reporting
|
241
272
|
|
242
273
|
def test_error_reporting
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: haml-edge
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.3.
|
4
|
+
version: 2.3.195
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nathan Weizenbaum
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2010-04-
|
13
|
+
date: 2010-04-10 00:00:00 -04:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|