oreorenasass 3.4.4 → 3.4.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (176) hide show
  1. checksums.yaml +4 -4
  2. data/MIT-LICENSE +1 -1
  3. data/README.md +50 -70
  4. data/Rakefile +5 -26
  5. data/VERSION +1 -1
  6. data/VERSION_NAME +1 -1
  7. data/bin/sass +1 -1
  8. data/bin/scss +1 -1
  9. data/lib/sass.rb +12 -19
  10. data/lib/sass/cache_stores/base.rb +2 -2
  11. data/lib/sass/cache_stores/chain.rb +1 -2
  12. data/lib/sass/cache_stores/filesystem.rb +5 -1
  13. data/lib/sass/cache_stores/memory.rb +1 -1
  14. data/lib/sass/cache_stores/null.rb +2 -2
  15. data/lib/sass/callbacks.rb +0 -1
  16. data/lib/sass/css.rb +13 -11
  17. data/lib/sass/engine.rb +173 -424
  18. data/lib/sass/environment.rb +58 -148
  19. data/lib/sass/error.rb +14 -11
  20. data/lib/sass/exec.rb +703 -5
  21. data/lib/sass/importers/base.rb +6 -49
  22. data/lib/sass/importers/filesystem.rb +19 -44
  23. data/lib/sass/logger.rb +4 -1
  24. data/lib/sass/logger/base.rb +4 -2
  25. data/lib/sass/logger/log_level.rb +7 -3
  26. data/lib/sass/media.rb +23 -20
  27. data/lib/sass/plugin.rb +7 -7
  28. data/lib/sass/plugin/compiler.rb +145 -304
  29. data/lib/sass/plugin/configuration.rb +23 -18
  30. data/lib/sass/plugin/merb.rb +1 -1
  31. data/lib/sass/plugin/staleness_checker.rb +3 -3
  32. data/lib/sass/repl.rb +3 -3
  33. data/lib/sass/script.rb +8 -35
  34. data/lib/sass/script/{value/arg_list.rb → arg_list.rb} +25 -9
  35. data/lib/sass/script/bool.rb +18 -0
  36. data/lib/sass/script/color.rb +606 -0
  37. data/lib/sass/script/css_lexer.rb +4 -8
  38. data/lib/sass/script/css_parser.rb +2 -5
  39. data/lib/sass/script/funcall.rb +245 -0
  40. data/lib/sass/script/functions.rb +408 -1491
  41. data/lib/sass/script/interpolation.rb +79 -0
  42. data/lib/sass/script/lexer.rb +68 -172
  43. data/lib/sass/script/list.rb +85 -0
  44. data/lib/sass/script/literal.rb +221 -0
  45. data/lib/sass/script/{tree/node.rb → node.rb} +12 -22
  46. data/lib/sass/script/{value/null.rb → null.rb} +7 -14
  47. data/lib/sass/script/{value/number.rb → number.rb} +75 -152
  48. data/lib/sass/script/{tree/operation.rb → operation.rb} +24 -17
  49. data/lib/sass/script/parser.rb +110 -245
  50. data/lib/sass/script/string.rb +51 -0
  51. data/lib/sass/script/{tree/string_interpolation.rb → string_interpolation.rb} +4 -5
  52. data/lib/sass/script/{tree/unary_operation.rb → unary_operation.rb} +6 -6
  53. data/lib/sass/script/variable.rb +58 -0
  54. data/lib/sass/scss/css_parser.rb +3 -9
  55. data/lib/sass/scss/parser.rb +421 -450
  56. data/lib/sass/scss/rx.rb +11 -19
  57. data/lib/sass/scss/static_parser.rb +7 -321
  58. data/lib/sass/selector.rb +194 -68
  59. data/lib/sass/selector/abstract_sequence.rb +14 -29
  60. data/lib/sass/selector/comma_sequence.rb +25 -108
  61. data/lib/sass/selector/sequence.rb +66 -159
  62. data/lib/sass/selector/simple.rb +25 -23
  63. data/lib/sass/selector/simple_sequence.rb +63 -173
  64. data/lib/sass/shared.rb +1 -1
  65. data/lib/sass/supports.rb +15 -13
  66. data/lib/sass/tree/charset_node.rb +1 -1
  67. data/lib/sass/tree/comment_node.rb +3 -3
  68. data/lib/sass/tree/css_import_node.rb +11 -11
  69. data/lib/sass/tree/debug_node.rb +2 -2
  70. data/lib/sass/tree/directive_node.rb +4 -21
  71. data/lib/sass/tree/each_node.rb +8 -8
  72. data/lib/sass/tree/extend_node.rb +7 -14
  73. data/lib/sass/tree/for_node.rb +4 -4
  74. data/lib/sass/tree/function_node.rb +4 -9
  75. data/lib/sass/tree/if_node.rb +1 -1
  76. data/lib/sass/tree/import_node.rb +5 -4
  77. data/lib/sass/tree/media_node.rb +14 -4
  78. data/lib/sass/tree/mixin_def_node.rb +4 -4
  79. data/lib/sass/tree/mixin_node.rb +8 -21
  80. data/lib/sass/tree/node.rb +12 -54
  81. data/lib/sass/tree/prop_node.rb +20 -39
  82. data/lib/sass/tree/return_node.rb +2 -3
  83. data/lib/sass/tree/root_node.rb +3 -19
  84. data/lib/sass/tree/rule_node.rb +22 -35
  85. data/lib/sass/tree/supports_node.rb +13 -0
  86. data/lib/sass/tree/trace_node.rb +1 -2
  87. data/lib/sass/tree/variable_node.rb +3 -9
  88. data/lib/sass/tree/visitors/base.rb +8 -5
  89. data/lib/sass/tree/visitors/check_nesting.rb +19 -49
  90. data/lib/sass/tree/visitors/convert.rb +56 -74
  91. data/lib/sass/tree/visitors/cssize.rb +74 -202
  92. data/lib/sass/tree/visitors/deep_copy.rb +5 -10
  93. data/lib/sass/tree/visitors/extend.rb +7 -7
  94. data/lib/sass/tree/visitors/perform.rb +185 -278
  95. data/lib/sass/tree/visitors/set_options.rb +6 -20
  96. data/lib/sass/tree/visitors/to_css.rb +81 -234
  97. data/lib/sass/tree/warn_node.rb +2 -2
  98. data/lib/sass/tree/while_node.rb +2 -2
  99. data/lib/sass/util.rb +152 -522
  100. data/lib/sass/util/multibyte_string_scanner.rb +0 -2
  101. data/lib/sass/util/subset_map.rb +3 -4
  102. data/lib/sass/util/test.rb +1 -0
  103. data/lib/sass/version.rb +22 -20
  104. data/test/Gemfile +3 -0
  105. data/test/Gemfile.lock +10 -0
  106. data/test/sass/cache_test.rb +20 -62
  107. data/test/sass/callbacks_test.rb +1 -1
  108. data/test/sass/conversion_test.rb +2 -296
  109. data/test/sass/css2sass_test.rb +4 -23
  110. data/test/sass/engine_test.rb +354 -411
  111. data/test/sass/exec_test.rb +2 -2
  112. data/test/sass/extend_test.rb +145 -324
  113. data/test/sass/functions_test.rb +86 -873
  114. data/test/sass/importer_test.rb +21 -241
  115. data/test/sass/logger_test.rb +1 -1
  116. data/test/sass/more_results/more_import.css +1 -1
  117. data/test/sass/plugin_test.rb +26 -16
  118. data/test/sass/results/compact.css +1 -1
  119. data/test/sass/results/complex.css +4 -4
  120. data/test/sass/results/expanded.css +1 -1
  121. data/test/sass/results/import.css +1 -1
  122. data/test/sass/results/import_charset_ibm866.css +2 -2
  123. data/test/sass/results/mixins.css +17 -17
  124. data/test/sass/results/nested.css +1 -1
  125. data/test/sass/results/parent_ref.css +2 -2
  126. data/test/sass/results/script.css +3 -3
  127. data/test/sass/results/scss_import.css +1 -1
  128. data/test/sass/script_conversion_test.rb +7 -36
  129. data/test/sass/script_test.rb +53 -485
  130. data/test/sass/scss/css_test.rb +28 -143
  131. data/test/sass/scss/rx_test.rb +4 -4
  132. data/test/sass/scss/scss_test.rb +325 -2119
  133. data/test/sass/templates/scss_import.scss +1 -2
  134. data/test/sass/test_helper.rb +1 -1
  135. data/test/sass/util/multibyte_string_scanner_test.rb +1 -1
  136. data/test/sass/util/subset_map_test.rb +2 -2
  137. data/test/sass/util_test.rb +1 -86
  138. data/test/test_helper.rb +8 -37
  139. metadata +19 -66
  140. data/lib/sass/exec/base.rb +0 -187
  141. data/lib/sass/exec/sass_convert.rb +0 -264
  142. data/lib/sass/exec/sass_scss.rb +0 -424
  143. data/lib/sass/features.rb +0 -47
  144. data/lib/sass/script/tree.rb +0 -16
  145. data/lib/sass/script/tree/funcall.rb +0 -306
  146. data/lib/sass/script/tree/interpolation.rb +0 -118
  147. data/lib/sass/script/tree/list_literal.rb +0 -77
  148. data/lib/sass/script/tree/literal.rb +0 -45
  149. data/lib/sass/script/tree/map_literal.rb +0 -64
  150. data/lib/sass/script/tree/selector.rb +0 -26
  151. data/lib/sass/script/tree/variable.rb +0 -57
  152. data/lib/sass/script/value.rb +0 -11
  153. data/lib/sass/script/value/base.rb +0 -240
  154. data/lib/sass/script/value/bool.rb +0 -35
  155. data/lib/sass/script/value/color.rb +0 -680
  156. data/lib/sass/script/value/helpers.rb +0 -262
  157. data/lib/sass/script/value/list.rb +0 -113
  158. data/lib/sass/script/value/map.rb +0 -70
  159. data/lib/sass/script/value/string.rb +0 -97
  160. data/lib/sass/selector/pseudo.rb +0 -256
  161. data/lib/sass/source/map.rb +0 -210
  162. data/lib/sass/source/position.rb +0 -39
  163. data/lib/sass/source/range.rb +0 -41
  164. data/lib/sass/stack.rb +0 -120
  165. data/lib/sass/tree/at_root_node.rb +0 -83
  166. data/lib/sass/tree/error_node.rb +0 -18
  167. data/lib/sass/tree/keyframe_rule_node.rb +0 -15
  168. data/lib/sass/util/cross_platform_random.rb +0 -19
  169. data/lib/sass/util/normalized_map.rb +0 -130
  170. data/lib/sass/util/ordered_hash.rb +0 -192
  171. data/test/sass/compiler_test.rb +0 -232
  172. data/test/sass/encoding_test.rb +0 -219
  173. data/test/sass/source_map_test.rb +0 -977
  174. data/test/sass/superselector_test.rb +0 -191
  175. data/test/sass/util/normalized_map_test.rb +0 -51
  176. data/test/sass/value_helpers_test.rb +0 -179
@@ -1,5 +1,5 @@
1
1
  module Sass::Tree
2
- # A static node representing an unprocessed Sass `@charset` directive.
2
+ # A static node representing an unproccessed Sass `@charset` directive.
3
3
  #
4
4
  # @see Sass::Tree
5
5
  class CharsetNode < Node
@@ -6,10 +6,10 @@ module Sass::Tree
6
6
  # @see Sass::Tree
7
7
  class CommentNode < Node
8
8
  # The text of the comment, not including `/*` and `*/`.
9
- # Interspersed with {Sass::Script::Tree::Node}s representing `#{}`-interpolation
9
+ # Interspersed with {Sass::Script::Node}s representing `#{}`-interpolation
10
10
  # if this is a loud comment.
11
11
  #
12
- # @return [Array<String, Sass::Script::Tree::Node>]
12
+ # @return [Array<String, Sass::Script::Node>]
13
13
  attr_accessor :value
14
14
 
15
15
  # The text of the comment
@@ -26,7 +26,7 @@ module Sass::Tree
26
26
  # @return [Symbol]
27
27
  attr_accessor :type
28
28
 
29
- # @param value [Array<String, Sass::Script::Tree::Node>] See \{#value}
29
+ # @param value [Array<String, Sass::Script::Node>] See \{#value}
30
30
  # @param type [Symbol] See \{#type}
31
31
  def initialize(value, type)
32
32
  @value = Sass::Util.with_extracted_values(value) {|str| normalize_indentation str}
@@ -6,31 +6,31 @@ module Sass::Tree
6
6
  # The URI being imported, either as a plain string or an interpolated
7
7
  # script string.
8
8
  #
9
- # @return [String, Sass::Script::Tree::Node]
9
+ # @return [String, Sass::Script::Node]
10
10
  attr_accessor :uri
11
11
 
12
12
  # The text of the URI being imported after any interpolated SassScript has
13
- # been resolved. Only set once {Tree::Visitors::Perform} has been run.
13
+ # been resolved. Only set once \{Tree::Visitors::Perform} has been run.
14
14
  #
15
15
  # @return [String]
16
16
  attr_accessor :resolved_uri
17
17
 
18
- # The media query for this rule, interspersed with
19
- # {Sass::Script::Tree::Node}s representing `#{}`-interpolation. Any adjacent
20
- # strings will be merged together.
18
+ # The media query for this rule, interspersed with {Sass::Script::Node}s
19
+ # representing `#{}`-interpolation. Any adjacent strings will be merged
20
+ # together.
21
21
  #
22
- # @return [Array<String, Sass::Script::Tree::Node>]
22
+ # @return [Array<String, Sass::Script::Node>]
23
23
  attr_accessor :query
24
24
 
25
- # The media query for this rule, without any unresolved interpolation.
26
- # It's only set once {Tree::Visitors::Perform} has been run.
25
+ # The media query for this rule, without any unresolved interpolation. It's
26
+ # only set once {Tree::Node#perform} has been called.
27
27
  #
28
28
  # @return [Sass::Media::QueryList]
29
29
  attr_accessor :resolved_query
30
30
 
31
- # @param uri [String, Sass::Script::Tree::Node] See \{#uri}
32
- # @param query [Array<String, Sass::Script::Tree::Node>] See \{#query}
33
- def initialize(uri, query = [])
31
+ # @param uri [String, Sass::Script::Node] See \{#uri}
32
+ # @param query [Array<String, Sass::Script::Node>] See \{#query}
33
+ def initialize(uri, query = nil)
34
34
  @uri = uri
35
35
  @query = query
36
36
  super('')
@@ -5,10 +5,10 @@ module Sass
5
5
  # @see Sass::Tree
6
6
  class DebugNode < Node
7
7
  # The expression to print.
8
- # @return [Script::Tree::Node]
8
+ # @return [Script::Node]
9
9
  attr_accessor :expr
10
10
 
11
- # @param expr [Script::Tree::Node] The expression to print
11
+ # @param expr [Script::Node] The expression to print
12
12
  def initialize(expr)
13
13
  @expr = expr
14
14
  super()
@@ -1,5 +1,5 @@
1
1
  module Sass::Tree
2
- # A static node representing an unprocessed Sass `@`-directive.
2
+ # A static node representing an unproccessed Sass `@`-directive.
3
3
  # Directives known to Sass, like `@for` and `@debug`,
4
4
  # are handled by their own nodes;
5
5
  # only CSS directives like `@media` and `@font-face` become {DirectiveNode}s.
@@ -11,7 +11,7 @@ module Sass::Tree
11
11
  class DirectiveNode < Node
12
12
  # The text of the directive, `@` and all, with interpolation included.
13
13
  #
14
- # @return [Array<String, Sass::Script::Tree::Node>]
14
+ # @return [Array<String, Sass::Script::Node>]
15
15
  attr_accessor :value
16
16
 
17
17
  # The text of the directive after any interpolated SassScript has been resolved.
@@ -20,16 +20,9 @@ module Sass::Tree
20
20
  # @return [String]
21
21
  attr_accessor :resolved_value
22
22
 
23
- # @see RuleNode#tabs
24
- attr_accessor :tabs
25
-
26
- # @see RuleNode#group_end
27
- attr_accessor :group_end
28
-
29
- # @param value [Array<String, Sass::Script::Tree::Node>] See \{#value}
23
+ # @param value [Array<String, Sass::Script::Node>] See \{#value}
30
24
  def initialize(value)
31
25
  @value = value
32
- @tabs = 0
33
26
  super()
34
27
  end
35
28
 
@@ -43,17 +36,7 @@ module Sass::Tree
43
36
 
44
37
  # @return [String] The name of the directive, including `@`.
45
38
  def name
46
- @name ||= value.first.gsub(/ .*$/, '')
47
- end
48
-
49
- # Strips out any vendor prefixes and downcases the directive name.
50
- # @return [String] The normalized name of the directive.
51
- def normalized_name
52
- @normalized_name ||= name.gsub(/^(@)(?:-[a-zA-Z0-9]+-)?/, '\1').downcase
53
- end
54
-
55
- def bubbles?
56
- has_children
39
+ value.first.gsub(/ .*$/, '')
57
40
  end
58
41
  end
59
42
  end
@@ -5,18 +5,18 @@ module Sass::Tree
5
5
  #
6
6
  # @see Sass::Tree
7
7
  class EachNode < Node
8
- # The names of the loop variables.
9
- # @return [Array<String>]
10
- attr_reader :vars
8
+ # The name of the loop variable.
9
+ # @return [String]
10
+ attr_reader :var
11
11
 
12
12
  # The parse tree for the list.
13
- # @return [Script::Tree::Node]
13
+ # @param [Script::Node]
14
14
  attr_accessor :list
15
15
 
16
- # @param vars [Array<String>] The names of the loop variables
17
- # @param list [Script::Tree::Node] The parse tree for the list
18
- def initialize(vars, list)
19
- @vars = vars
16
+ # @param var [String] The name of the loop variable
17
+ # @param list [Script::Node] The parse tree for the list
18
+ def initialize(var, list)
19
+ @var = var
20
20
  @list = list
21
21
  super()
22
22
  end
@@ -1,7 +1,7 @@
1
1
  require 'sass/tree/node'
2
2
 
3
3
  module Sass::Tree
4
- # A static node representing an `@extend` directive.
4
+ # A static node reprenting an `@extend` directive.
5
5
  #
6
6
  # @see Sass::Tree
7
7
  class ExtendNode < Node
@@ -11,32 +11,25 @@ module Sass::Tree
11
11
  # @return [Selector::CommaSequence]
12
12
  attr_accessor :resolved_selector
13
13
 
14
- # The CSS selector to extend, interspersed with {Sass::Script::Tree::Node}s
14
+ # The CSS selector to extend, interspersed with {Sass::Script::Node}s
15
15
  # representing `#{}`-interpolation.
16
16
  #
17
- # @return [Array<String, Sass::Script::Tree::Node>]
17
+ # @return [Array<String, Sass::Script::Node>]
18
18
  attr_accessor :selector
19
19
 
20
- # The extended selector source range.
21
- #
22
- # @return [Sass::Source::Range]
23
- attr_accessor :selector_source_range
24
-
25
20
  # Whether the `@extend` is allowed to match no selectors or not.
26
21
  #
27
22
  # @return [Boolean]
28
23
  def optional?; @optional; end
29
24
 
30
- # @param selector [Array<String, Sass::Script::Tree::Node>]
25
+ # @param selector [Array<String, Sass::Script::Node>]
31
26
  # The CSS selector to extend,
32
- # interspersed with {Sass::Script::Tree::Node}s
27
+ # interspersed with {Sass::Script::Node}s
33
28
  # representing `#{}`-interpolation.
34
- # @param optional [Boolean] See \{ExtendNode#optional?}
35
- # @param selector_source_range [Sass::Source::Range] The extended selector source range.
36
- def initialize(selector, optional, selector_source_range)
29
+ # @param optional [Boolean] See \{#optional}
30
+ def initialize(selector, optional)
37
31
  @selector = selector
38
32
  @optional = optional
39
- @selector_source_range = selector_source_range
40
33
  super()
41
34
  end
42
35
  end
@@ -10,11 +10,11 @@ module Sass::Tree
10
10
  attr_reader :var
11
11
 
12
12
  # The parse tree for the initial expression.
13
- # @return [Script::Tree::Node]
13
+ # @return [Script::Node]
14
14
  attr_accessor :from
15
15
 
16
16
  # The parse tree for the final expression.
17
- # @return [Script::Tree::Node]
17
+ # @return [Script::Node]
18
18
  attr_accessor :to
19
19
 
20
20
  # Whether to include `to` in the loop or stop just before.
@@ -22,8 +22,8 @@ module Sass::Tree
22
22
  attr_reader :exclusive
23
23
 
24
24
  # @param var [String] See \{#var}
25
- # @param from [Script::Tree::Node] See \{#from}
26
- # @param to [Script::Tree::Node] See \{#to}
25
+ # @param from [Script::Node] See \{#from}
26
+ # @param to [Script::Node] See \{#to}
27
27
  # @param exclusive [Boolean] See \{#exclusive}
28
28
  def initialize(var, from, to, exclusive)
29
29
  @var = var
@@ -12,27 +12,22 @@ module Sass
12
12
  # containing the variable for argument and the parse tree for
13
13
  # the default value of the argument
14
14
  #
15
- # @return [Array<Script::Tree::Node>]
15
+ # @return [Array<Script::Node>]
16
16
  attr_accessor :args
17
17
 
18
18
  # The splat argument for this function, if one exists.
19
19
  #
20
- # @return [Script::Tree::Node?]
20
+ # @return [Script::Node?]
21
21
  attr_accessor :splat
22
22
 
23
23
  # @param name [String] The function name
24
- # @param args [Array<(Script::Tree::Node, Script::Tree::Node)>]
25
- # The arguments for the function.
26
- # @param splat [Script::Tree::Node] See \{#splat}
24
+ # @param args [Array<(Script::Node, Script::Node)>] The arguments for the function.
25
+ # @param splat [Script::Node] See \{#splat}
27
26
  def initialize(name, args, splat)
28
27
  @name = name
29
28
  @args = args
30
29
  @splat = splat
31
30
  super()
32
-
33
- if %w[and or not].include?(name)
34
- raise Sass::SyntaxError.new("Invalid function name \"#{name}\".")
35
- end
36
31
  end
37
32
  end
38
33
  end
@@ -36,7 +36,7 @@ module Sass::Tree
36
36
  end
37
37
 
38
38
  def _dump(f)
39
- Marshal.dump([expr, self.else, children])
39
+ Marshal.dump([self.expr, self.else, self.children])
40
40
  end
41
41
 
42
42
  def self._load(data)
@@ -51,8 +51,9 @@ module Sass
51
51
  end
52
52
 
53
53
  paths.each do |p|
54
- f = p.find(@imported_filename, options_for_importer)
55
- return f if f
54
+ if f = p.find(@imported_filename, options_for_importer)
55
+ return f
56
+ end
56
57
  end
57
58
 
58
59
  message = "File to import not found or unreadable: #{@imported_filename}.\n"
@@ -63,11 +64,11 @@ module Sass
63
64
  end
64
65
  raise SyntaxError.new(message)
65
66
  rescue SyntaxError => e
66
- raise SyntaxError.new(e.message, :line => line, :filename => @filename)
67
+ raise SyntaxError.new(e.message, :line => self.line, :filename => @filename)
67
68
  end
68
69
 
69
70
  def options_for_importer
70
- @options.merge(:_from_import_node => true)
71
+ @options.merge(:_line => line)
71
72
  end
72
73
  end
73
74
  end
@@ -8,22 +8,29 @@ module Sass::Tree
8
8
  class MediaNode < DirectiveNode
9
9
  # TODO: parse and cache the query immediately if it has no dynamic elements
10
10
 
11
- # The media query for this rule, interspersed with {Sass::Script::Tree::Node}s
11
+ # The media query for this rule, interspersed with {Sass::Script::Node}s
12
12
  # representing `#{}`-interpolation. Any adjacent strings will be merged
13
13
  # together.
14
14
  #
15
- # @return [Array<String, Sass::Script::Tree::Node>]
15
+ # @return [Array<String, Sass::Script::Node>]
16
16
  attr_accessor :query
17
17
 
18
18
  # The media query for this rule, without any unresolved interpolation. It's
19
- # only set once {Tree::Visitors::Perform} has been run.
19
+ # only set once {Tree::Node#perform} has been called.
20
20
  #
21
21
  # @return [Sass::Media::QueryList]
22
22
  attr_accessor :resolved_query
23
23
 
24
- # @param query [Array<String, Sass::Script::Tree::Node>] See \{#query}
24
+ # @see RuleNode#tabs
25
+ attr_accessor :tabs
26
+
27
+ # @see RuleNode#group_end
28
+ attr_accessor :group_end
29
+
30
+ # @param query [Array<String, Sass::Script::Node>] See \{#query}
25
31
  def initialize(query)
26
32
  @query = query
33
+ @tabs = 0
27
34
  super('')
28
35
  end
29
36
 
@@ -44,5 +51,8 @@ module Sass::Tree
44
51
  def invisible?
45
52
  children.all? {|c| c.invisible?}
46
53
  end
54
+
55
+ # @see Node#bubbles?
56
+ def bubbles?; true; end
47
57
  end
48
58
  end
@@ -12,12 +12,12 @@ module Sass
12
12
  # Each element is a tuple containing the variable for argument
13
13
  # and the parse tree for the default value of the argument.
14
14
  #
15
- # @return [Array<(Script::Tree::Node, Script::Tree::Node)>]
15
+ # @return [Array<(Script::Node, Script::Node)>]
16
16
  attr_accessor :args
17
17
 
18
18
  # The splat argument for this mixin, if one exists.
19
19
  #
20
- # @return [Script::Tree::Node?]
20
+ # @return [Script::Node?]
21
21
  attr_accessor :splat
22
22
 
23
23
  # Whether the mixin uses `@content`. Set during the nesting check phase.
@@ -25,8 +25,8 @@ module Sass
25
25
  attr_accessor :has_content
26
26
 
27
27
  # @param name [String] The mixin name
28
- # @param args [Array<(Script::Tree::Node, Script::Tree::Node)>] See \{#args}
29
- # @param splat [Script::Tree::Node] See \{#splat}
28
+ # @param args [Array<(Script::Node, Script::Node)>] See \{#args}
29
+ # @param splat [Script::Node] See \{#splat}
30
30
  def initialize(name, args, splat)
31
31
  @name = name
32
32
  @args = args
@@ -12,40 +12,27 @@ module Sass::Tree
12
12
  attr_reader :name
13
13
 
14
14
  # The arguments to the mixin.
15
- # @return [Array<Script::Tree::Node>]
15
+ # @return [Array<Script::Node>]
16
16
  attr_accessor :args
17
17
 
18
18
  # A hash from keyword argument names to values.
19
- # @return [Sass::Util::NormalizedMap<Script::Tree::Node>]
19
+ # @return [{String => Script::Node}]
20
20
  attr_accessor :keywords
21
21
 
22
- # The first splat argument for this mixin, if one exists.
22
+ # The splat argument for this mixin, if one exists.
23
23
  #
24
- # This could be a list of positional arguments, a map of keyword
25
- # arguments, or an arglist containing both.
26
- #
27
- # @return [Node?]
24
+ # @return [Script::Node?]
28
25
  attr_accessor :splat
29
26
 
30
- # The second splat argument for this mixin, if one exists.
31
- #
32
- # If this exists, it's always a map of keyword arguments, and
33
- # \{#splat} is always either a list or an arglist.
34
- #
35
- # @return [Node?]
36
- attr_accessor :kwarg_splat
37
-
38
27
  # @param name [String] The name of the mixin
39
- # @param args [Array<Script::Tree::Node>] See \{#args}
40
- # @param splat [Script::Tree::Node] See \{#splat}
41
- # @param kwarg_splat [Script::Tree::Node] See \{#kwarg_splat}
42
- # @param keywords [Sass::Util::NormalizedMap<Script::Tree::Node>] See \{#keywords}
43
- def initialize(name, args, keywords, splat, kwarg_splat)
28
+ # @param args [Array<Script::Node>] See \{#args}
29
+ # @param splat [Script::Node] See \{#splat}
30
+ # @param keywords [{String => Script::Node}] See \{#keywords}
31
+ def initialize(name, args, keywords, splat)
44
32
  @name = name
45
33
  @args = args
46
34
  @keywords = keywords
47
35
  @splat = splat
48
- @kwarg_splat = kwarg_splat
49
36
  super()
50
37
  end
51
38
  end
@@ -8,15 +8,14 @@ module Sass
8
8
  # in addition to nodes for CSS rules and properties.
9
9
  # Nodes that only appear in this state are called **dynamic nodes**.
10
10
  #
11
- # {Tree::Visitors::Perform} creates a static Sass tree, which is
12
- # different. It still has nodes for CSS rules and properties but it
13
- # doesn't have any dynamic-generation-related nodes. The nodes in
14
- # this state are in a similar structure to the Sass document: rules
15
- # and properties are nested beneath one another, although the
16
- # {Tree::RuleNode} selectors are already in their final state. Nodes
17
- # that can be in this state or in the dynamic state are called
18
- # **static nodes**; nodes that can only be in this state are called
19
- # **solely static nodes**.
11
+ # {Tree::Visitors::Perform} creates a static Sass tree, which is different.
12
+ # It still has nodes for CSS rules and properties
13
+ # but it doesn't have any dynamic-generation-related nodes.
14
+ # The nodes in this state are in the same structure as the Sass document:
15
+ # rules and properties are nested beneath one another.
16
+ # Nodes that can be in this state or in the dynamic state
17
+ # are called **static nodes**; nodes that can only be in this state
18
+ # are called **solely static nodes**.
20
19
  #
21
20
  # {Tree::Visitors::Cssize} is then used to create a static CSS tree.
22
21
  # This is like a static Sass tree,
@@ -30,35 +29,10 @@ module Sass
30
29
  class Node
31
30
  include Enumerable
32
31
 
33
- def self.inherited(base)
34
- node_name = base.name.gsub(/.*::(.*?)Node$/, '\\1').downcase
35
- base.instance_eval <<-METHODS
36
- # @return [Symbol] The name that is used for this node when visiting.
37
- def node_name
38
- :#{node_name}
39
- end
40
-
41
- # @return [Symbol] The method that is used on the visitor to visit nodes of this type.
42
- def visit_method
43
- :visit_#{node_name}
44
- end
45
-
46
- # @return [Symbol] The method name that determines if the parent is invalid.
47
- def invalid_child_method_name
48
- :"invalid_#{node_name}_child?"
49
- end
50
-
51
- # @return [Symbol] The method name that determines if the node is an invalid parent.
52
- def invalid_parent_method_name
53
- :"invalid_#{node_name}_parent?"
54
- end
55
- METHODS
56
- end
57
-
58
32
  # The child nodes of this node.
59
33
  #
60
34
  # @return [Array<Tree::Node>]
61
- attr_reader :children
35
+ attr_accessor :children
62
36
 
63
37
  # Whether or not this node has child nodes.
64
38
  # This may be true even when \{#children} is empty,
@@ -72,11 +46,6 @@ module Sass
72
46
  # @return [Fixnum]
73
47
  attr_accessor :line
74
48
 
75
- # The source range in the document on which this node appeared.
76
- #
77
- # @return [Sass::Source::Range]
78
- attr_accessor :source_range
79
-
80
49
  # The name of the document on which this node appeared.
81
50
  #
82
51
  # @return [String]
@@ -158,21 +127,10 @@ module Sass
158
127
 
159
128
  # Computes the CSS corresponding to this static CSS tree.
160
129
  #
161
- # @return [String] The resulting CSS
162
- # @see Sass::Tree
163
- def css
164
- Sass::Tree::Visitors::ToCss.new.visit(self)
165
- end
166
-
167
- # Computes the CSS corresponding to this static CSS tree, along with
168
- # the respective source map.
169
- #
170
- # @return [(String, Sass::Source::Map)] The resulting CSS and the source map
130
+ # @return [String, nil] The resulting CSS
171
131
  # @see Sass::Tree
172
- def css_with_sourcemap
173
- visitor = Sass::Tree::Visitors::ToCss.new(:build_source_mapping)
174
- result = visitor.visit(self)
175
- return result, visitor.source_mapping
132
+ def to_s
133
+ Sass::Tree::Visitors::ToCss.visit(self)
176
134
  end
177
135
 
178
136
  # Returns a representation of the node for debugging purposes.