oreorenasass 3.4.4 → 3.4.5

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.
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.