sass 3.1.0.alpha.36 → 3.1.0.alpha.37

Sign up to get free protection for your applications and to get access to all the features.
@@ -1 +1 @@
1
- 3.1.0.alpha.36
1
+ 3.1.0.alpha.37
data/VERSION CHANGED
@@ -1 +1 @@
1
- 3.1.0.alpha.36
1
+ 3.1.0.alpha.37
@@ -459,23 +459,21 @@ MSG
459
459
  children.each do |line|
460
460
  child = build_tree(parent, line, root)
461
461
 
462
- if child.is_a?(Tree::RuleNode) && child.continued?
463
- raise SyntaxError.new("Rules can't end in commas.",
464
- :line => child.line) unless child.children.empty?
465
- if continued_rule
462
+ if child.is_a?(Tree::RuleNode)
463
+ if child.continued? && child.children.empty?
464
+ if continued_rule
465
+ continued_rule.add_rules child
466
+ else
467
+ continued_rule = child
468
+ end
469
+ next
470
+ elsif continued_rule
466
471
  continued_rule.add_rules child
467
- else
468
- continued_rule = child
472
+ continued_rule.children = child.children
473
+ continued_rule, child = nil, continued_rule
469
474
  end
470
- next
471
- end
472
-
473
- if continued_rule
474
- raise SyntaxError.new("Rules can't end in commas.",
475
- :line => continued_rule.line) unless child.is_a?(Tree::RuleNode)
476
- continued_rule.add_rules child
477
- continued_rule.children = child.children
478
- continued_rule, child = nil, continued_rule
475
+ elsif continued_rule
476
+ continued_rule = nil
479
477
  end
480
478
 
481
479
  if child.is_a?(Tree::CommentNode) && child.silent
@@ -493,9 +491,6 @@ MSG
493
491
  validate_and_append_child(parent, child, line, root)
494
492
  end
495
493
 
496
- raise SyntaxError.new("Rules can't end in commas.",
497
- :line => continued_rule.line) if continued_rule
498
-
499
494
  parent
500
495
  end
501
496
 
@@ -427,9 +427,14 @@ module Sass
427
427
  return unless v = selector
428
428
  rules.concat v
429
429
 
430
+ ws = ''
430
431
  while tok(/,/)
431
- rules << ',' << str {ss}
432
- rules.concat expr!(:selector)
432
+ ws << str {ss}
433
+ if v = selector
434
+ rules << ',' << ws
435
+ rules.concat v
436
+ ws = ''
437
+ end
433
438
  end
434
439
  rules
435
440
  end
@@ -442,10 +447,14 @@ module Sass
442
447
  def selector_comma_sequence
443
448
  return unless sel = _selector
444
449
  selectors = [sel]
450
+ ws = ''
445
451
  while tok(/,/)
446
- ws = str{ss}
447
- selectors << expr!(:_selector)
448
- selectors[-1] = Selector::Sequence.new(["\n"] + selectors.last.members) if ws.include?("\n")
452
+ ws << str{ss}
453
+ if sel = _selector
454
+ selectors << sel
455
+ selectors[-1] = Selector::Sequence.new(["\n"] + selectors.last.members) if ws.include?("\n")
456
+ ws = ''
457
+ end
449
458
  end
450
459
  Selector::CommaSequence.new(selectors)
451
460
  end
@@ -790,6 +799,7 @@ MESSAGE
790
799
  :interp_ident => "identifier",
791
800
  :interp_name => "identifier",
792
801
  :expr => "expression (e.g. 1px, bold)",
802
+ :_selector => "selector",
793
803
  :selector_comma_sequence => "selector",
794
804
  :simple_selector_sequence => "selector",
795
805
  :import_arg => "file to import (string or url())",
@@ -56,12 +56,8 @@ MSG
56
56
  "$a: #ccc + 2px" => "Cannot add a number with units (2px) to a color (#cccccc).",
57
57
  "& a\n :b c" => ["Base-level rules cannot contain the parent-selector-referencing character '&'.", 1],
58
58
  "a\n :b\n c" => "Illegal nesting: Only properties may be nested beneath properties.",
59
- "a,\n :b c" => ["Rules can\'t end in commas.", 1],
60
- "a," => "Rules can\'t end in commas.",
61
- "a,\n$b: 1" => ["Rules can\'t end in commas.", 1],
62
59
  "$a: b\n :c d\n" => "Illegal nesting: Nothing may be nested beneath variable declarations.",
63
60
  "@import foo.sass" => "File to import not found or unreadable: foo.sass.",
64
- "a,\n$b: 1" => ["Rules can\'t end in commas.", 1],
65
61
  "$a: b\n :c d\n" => "Illegal nesting: Nothing may be nested beneath variable declarations.",
66
62
  "@import foo.sass" => <<MSG,
67
63
  File to import not found or unreadable: foo.sass.
@@ -610,6 +606,12 @@ SASS
610
606
 
611
607
  assert_equal("#foo #bar,#baz #boom{foo:bar}\n",
612
608
  render("#foo #bar,\n#baz #boom\n :foo bar", :style => :compressed))
609
+
610
+ assert_equal("#foo #bar,\n#baz #boom {\n foo: bar; }\n",
611
+ render("#foo #bar,,\n,#baz #boom,\n :foo bar"))
612
+
613
+ assert_equal("#bip #bop {\n foo: bar; }\n",
614
+ render("#bip #bop,, ,\n :foo bar"))
613
615
  end
614
616
 
615
617
  def test_complex_multiline_selector
@@ -468,6 +468,22 @@ baz {
468
468
  SCSS
469
469
  end
470
470
 
471
+ def test_trailing_comma_in_selector
472
+ assert_equal <<CSS, render(<<SCSS)
473
+ #foo #bar,
474
+ #baz #boom {
475
+ a: b; }
476
+
477
+ #bip #bop {
478
+ c: d; }
479
+ CSS
480
+ #foo #bar,,
481
+ ,#baz #boom, {a: b}
482
+
483
+ #bip #bop, ,, {c: d}
484
+ SCSS
485
+ end
486
+
471
487
  def test_parent_selectors
472
488
  assert_equal <<CSS, render(<<SCSS)
473
489
  foo:hover {
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sass
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.0.alpha.36
4
+ version: 3.1.0.alpha.37
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Weizenbaum