haml-edge 2.3.47 → 2.3.48

Sign up to get free protection for your applications and to get access to all the features.
@@ -1 +1 @@
1
- 2.3.47
1
+ 2.3.48
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.3.47
1
+ 2.3.48
@@ -14,6 +14,18 @@ module Sass::Tree
14
14
  # @return [String, Script::Node]
15
15
  attr_accessor :value
16
16
 
17
+ # How deep this property is indented
18
+ # relative to a normal property.
19
+ # This is only greater than 0 in the case that:
20
+ #
21
+ # * This node is in a static tree
22
+ # * The style is :nested
23
+ # * This is a child property of another property
24
+ # * The parent property has a value, and thus will be rendered
25
+ #
26
+ # @return [Fixnum]
27
+ attr_accessor :indentation
28
+
17
29
  # @param name [String] See \{#name}
18
30
  # @param value [String] See \{#value}
19
31
  # @param prop_syntax [Symbol] `:new` if this property uses `a: b`-style syntax,
@@ -21,6 +33,7 @@ module Sass::Tree
21
33
  def initialize(name, value, prop_syntax)
22
34
  @name = name
23
35
  @value = value
36
+ @indentation = 0
24
37
  @prop_syntax = prop_syntax
25
38
  super()
26
39
  end
@@ -39,43 +52,36 @@ module Sass::Tree
39
52
  # Computes the CSS for the property.
40
53
  #
41
54
  # @param tabs [Fixnum] The level of indentation for the CSS
42
- # @param parent_name [String] The name of the parent property (e.g. `text`) or nil
43
55
  # @return [String] The resulting CSS
44
56
  # @raise [Sass::SyntaxError] if the property uses invalid syntax
45
- def _to_s(tabs, parent_name = nil)
57
+ def _to_s(tabs)
46
58
  if @options[:property_syntax] == :old && @prop_syntax == :new
47
59
  raise Sass::SyntaxError.new("Illegal property syntax: can't use new syntax when :property_syntax => :old is set.")
48
60
  elsif @options[:property_syntax] == :new && @prop_syntax == :old
49
61
  raise Sass::SyntaxError.new("Illegal property syntax: can't use old syntax when :property_syntax => :new is set.")
50
62
  elsif value[-1] == ?;
51
63
  raise Sass::SyntaxError.new("Invalid property: #{declaration.dump} (no \";\" required at end-of-line).")
52
- elsif value.empty? && children.empty?
64
+ elsif value.empty?
53
65
  raise Sass::SyntaxError.new("Invalid property: #{declaration.dump} (no value).")
54
66
  end
55
67
 
56
- real_name = name
57
- real_name = "#{parent_name}-#{real_name}" if parent_name
68
+ to_return = ' ' * (tabs - 1 + indentation) + name + ":" +
69
+ (style == :compressed ? '' : ' ') + value + (style == :compressed ? "" : ";")
70
+ end
58
71
 
59
- join_string = case style
60
- when :compact; ' '
61
- when :compressed; ''
62
- else "\n"
63
- end
64
- spaces = ' ' * (tabs - 1)
65
- to_return = ''
66
- if !value.empty?
67
- to_return << "#{spaces}#{real_name}:#{style == :compressed ? '' : ' '}#{value};#{join_string}"
68
- end
69
-
70
- children.each do |kid|
71
- next if kid.invisible?
72
- to_return << kid.to_s(tabs, real_name) << join_string
73
- end
74
-
75
- (style == :compressed && parent_name) ? to_return : to_return[0...-1]
72
+ # Returns this node's fully-resolved child properties, and/or this node.
73
+ #
74
+ # @param environment [Sass::Environment] The lexical environment containing
75
+ # variable and mixin values
76
+ def _perform(environment)
77
+ node = super
78
+ result = node.children.dup
79
+ result.unshift(node) if !node.value.empty? || node.children.empty?
80
+ result
76
81
  end
77
82
 
78
- # Runs any SassScript that may be embedded in the property.
83
+ # Runs any SassScript that may be embedded in the property,
84
+ # and invludes the parent property, if any.
79
85
  #
80
86
  # @param environment [Sass::Environment] The lexical environment containing
81
87
  # variable and mixin values
@@ -83,6 +89,12 @@ module Sass::Tree
83
89
  @name = interpolate(@name, environment)
84
90
  @value = @value.is_a?(String) ? interpolate(@value, environment) : @value.perform(environment).to_s
85
91
  super
92
+ # Once we've called super, the child nodes have been dup'ed
93
+ # so we can destructively modify them
94
+ children.select {|c| c.is_a?(PropNode)}.each do |c|
95
+ c.name = "#{name}-#{c.name}"
96
+ c.indentation += 1 if style == :nested && !@value.empty?
97
+ end
86
98
  end
87
99
 
88
100
  # Returns an error message if the given child node is invalid,
@@ -1,6 +1,9 @@
1
1
  require 'pathname'
2
2
 
3
3
  module Sass::Tree
4
+ # A static node reprenting a CSS rule.
5
+ #
6
+ # @see Sass::Tree
4
7
  class RuleNode < Node
5
8
  # The character used to include the parent selector
6
9
  PARENT = '&'
@@ -27,7 +27,7 @@ class SassEngineTest < Test::Unit::TestCase
27
27
  "a\n b: c;" => 'Invalid property: "b: c;" (no ";" required at end-of-line).',
28
28
  "a\n b : c" => 'Invalid property: "b : c".',
29
29
  "a\n b=c: d" => 'Invalid property: "b=c: d".',
30
- ":a" => 'Properties aren\'t allowed at the root of a document.',
30
+ "a: b" => 'Properties aren\'t allowed at the root of a document.',
31
31
  "!" => 'Invalid variable: "!".',
32
32
  "!a" => 'Invalid variable: "!a".',
33
33
  "! a" => 'Invalid variable: "! a".',
@@ -463,6 +463,31 @@ SASS
463
463
  assert_equal("foo {\n a: b;\n c: d;\n e: f; }\n", render("foo\r a: b\r\n c: d\n\r e: f"))
464
464
  end
465
465
 
466
+ def test_property_with_content_and_nested_props
467
+ assert_equal(<<CSS, render(<<SASS))
468
+ foo {
469
+ a: b;
470
+ a-c: d;
471
+ a-c-e: f; }
472
+ CSS
473
+ foo
474
+ a: b
475
+ c: d
476
+ e: f
477
+ SASS
478
+
479
+ assert_equal(<<CSS, render(<<SASS))
480
+ foo {
481
+ a: b;
482
+ a-c-e: f; }
483
+ CSS
484
+ foo
485
+ a: b
486
+ c:
487
+ e: f
488
+ SASS
489
+ end
490
+
466
491
  def test_or_eq
467
492
  assert_equal("foo {\n a: b; }\n", render(%Q{!foo = "b"\n!foo ||= "c"\nfoo\n a = !foo}))
468
493
  assert_equal("foo {\n a: b; }\n", render(%Q{!foo ||= "b"\nfoo\n a = !foo}))
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.47
4
+ version: 2.3.48
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: 2009-10-11 00:00:00 -04:00
13
+ date: 2009-10-14 00:00:00 -04:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -152,8 +152,8 @@ files:
152
152
  - test/haml/rhtml/action_view.rhtml
153
153
  - test/haml/rhtml/standard.rhtml
154
154
  - test/haml/spec
155
- - test/haml/spec_test.rb
156
155
  - test/haml/template_test.rb
156
+ - test/haml/spec_test.rb
157
157
  - test/haml/templates
158
158
  - test/haml/templates/_av_partial_1.haml
159
159
  - test/haml/templates/_av_partial_1_ugly.haml
@@ -300,8 +300,8 @@ test_files:
300
300
  - test/haml/engine_test.rb
301
301
  - test/haml/helper_test.rb
302
302
  - test/haml/html2haml_test.rb
303
- - test/haml/spec_test.rb
304
303
  - test/haml/template_test.rb
304
+ - test/haml/spec_test.rb
305
305
  - test/haml/util_test.rb
306
306
  - test/sass/css2sass_test.rb
307
307
  - test/sass/engine_test.rb