haml-edge 2.3.194 → 2.3.195

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/EDGE_GEM_VERSION CHANGED
@@ -1 +1 @@
1
- 2.3.194
1
+ 2.3.195
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.3.194
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
- @opts = OptionParser.new(&method(:set_opts))
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
- next child unless Tree::RuleNode === child && child.rule.first.include?(',')
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
- next child unless child.is_a?(Tree::RuleNode)
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(/^(&?(?: .|[^ ])[^.#: \[]*)([.#: \[].*)?$/).first
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
- if child.is_a?(Tree::RuleNode)
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 { |child| flatten_rule(child) if child.is_a?(Tree::RuleNode) }
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
- next child unless child.is_a?(Tree::RuleNode)
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}"
@@ -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.194
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-09 00:00:00 -04:00
13
+ date: 2010-04-10 00:00:00 -04:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency