sass 3.1.0 → 3.3.0

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 (260) hide show
  1. checksums.yaml +7 -0
  2. data/CONTRIBUTING +1 -1
  3. data/MIT-LICENSE +2 -2
  4. data/README.md +29 -17
  5. data/Rakefile +43 -9
  6. data/VERSION +1 -1
  7. data/VERSION_DATE +1 -0
  8. data/VERSION_NAME +1 -1
  9. data/bin/sass +6 -1
  10. data/bin/sass-convert +6 -1
  11. data/bin/scss +6 -1
  12. data/ext/mkrf_conf.rb +27 -0
  13. data/lib/sass/cache_stores/base.rb +7 -3
  14. data/lib/sass/cache_stores/chain.rb +3 -2
  15. data/lib/sass/cache_stores/filesystem.rb +5 -7
  16. data/lib/sass/cache_stores/memory.rb +1 -1
  17. data/lib/sass/cache_stores/null.rb +2 -2
  18. data/lib/sass/callbacks.rb +2 -1
  19. data/lib/sass/css.rb +168 -53
  20. data/lib/sass/engine.rb +502 -174
  21. data/lib/sass/environment.rb +151 -111
  22. data/lib/sass/error.rb +7 -7
  23. data/lib/sass/exec.rb +176 -60
  24. data/lib/sass/features.rb +40 -0
  25. data/lib/sass/importers/base.rb +46 -7
  26. data/lib/sass/importers/deprecated_path.rb +51 -0
  27. data/lib/sass/importers/filesystem.rb +113 -30
  28. data/lib/sass/importers.rb +1 -0
  29. data/lib/sass/logger/base.rb +30 -0
  30. data/lib/sass/logger/log_level.rb +45 -0
  31. data/lib/sass/logger.rb +12 -0
  32. data/lib/sass/media.rb +213 -0
  33. data/lib/sass/plugin/compiler.rb +194 -104
  34. data/lib/sass/plugin/configuration.rb +18 -25
  35. data/lib/sass/plugin/merb.rb +1 -1
  36. data/lib/sass/plugin/staleness_checker.rb +37 -11
  37. data/lib/sass/plugin.rb +10 -13
  38. data/lib/sass/railtie.rb +2 -1
  39. data/lib/sass/repl.rb +5 -6
  40. data/lib/sass/script/css_lexer.rb +8 -4
  41. data/lib/sass/script/css_parser.rb +5 -2
  42. data/lib/sass/script/functions.rb +1547 -618
  43. data/lib/sass/script/lexer.rb +122 -72
  44. data/lib/sass/script/parser.rb +304 -135
  45. data/lib/sass/script/tree/funcall.rb +306 -0
  46. data/lib/sass/script/{interpolation.rb → tree/interpolation.rb} +43 -13
  47. data/lib/sass/script/tree/list_literal.rb +77 -0
  48. data/lib/sass/script/tree/literal.rb +45 -0
  49. data/lib/sass/script/tree/map_literal.rb +64 -0
  50. data/lib/sass/script/{node.rb → tree/node.rb} +30 -12
  51. data/lib/sass/script/{operation.rb → tree/operation.rb} +33 -21
  52. data/lib/sass/script/{string_interpolation.rb → tree/string_interpolation.rb} +14 -4
  53. data/lib/sass/script/{unary_operation.rb → tree/unary_operation.rb} +21 -9
  54. data/lib/sass/script/tree/variable.rb +57 -0
  55. data/lib/sass/script/tree.rb +15 -0
  56. data/lib/sass/script/value/arg_list.rb +36 -0
  57. data/lib/sass/script/value/base.rb +238 -0
  58. data/lib/sass/script/value/bool.rb +40 -0
  59. data/lib/sass/script/{color.rb → value/color.rb} +256 -74
  60. data/lib/sass/script/value/deprecated_false.rb +55 -0
  61. data/lib/sass/script/value/helpers.rb +155 -0
  62. data/lib/sass/script/value/list.rb +128 -0
  63. data/lib/sass/script/value/map.rb +70 -0
  64. data/lib/sass/script/value/null.rb +49 -0
  65. data/lib/sass/script/{number.rb → value/number.rb} +115 -62
  66. data/lib/sass/script/{string.rb → value/string.rb} +9 -11
  67. data/lib/sass/script/value.rb +12 -0
  68. data/lib/sass/script.rb +35 -9
  69. data/lib/sass/scss/css_parser.rb +2 -12
  70. data/lib/sass/scss/parser.rb +657 -230
  71. data/lib/sass/scss/rx.rb +17 -12
  72. data/lib/sass/scss/static_parser.rb +37 -6
  73. data/lib/sass/scss.rb +0 -1
  74. data/lib/sass/selector/abstract_sequence.rb +35 -3
  75. data/lib/sass/selector/comma_sequence.rb +29 -14
  76. data/lib/sass/selector/sequence.rb +371 -74
  77. data/lib/sass/selector/simple.rb +28 -13
  78. data/lib/sass/selector/simple_sequence.rb +163 -36
  79. data/lib/sass/selector.rb +138 -36
  80. data/lib/sass/shared.rb +3 -5
  81. data/lib/sass/source/map.rb +196 -0
  82. data/lib/sass/source/position.rb +39 -0
  83. data/lib/sass/source/range.rb +41 -0
  84. data/lib/sass/stack.rb +126 -0
  85. data/lib/sass/supports.rb +228 -0
  86. data/lib/sass/tree/at_root_node.rb +82 -0
  87. data/lib/sass/tree/comment_node.rb +34 -29
  88. data/lib/sass/tree/content_node.rb +9 -0
  89. data/lib/sass/tree/css_import_node.rb +60 -0
  90. data/lib/sass/tree/debug_node.rb +3 -3
  91. data/lib/sass/tree/directive_node.rb +33 -3
  92. data/lib/sass/tree/each_node.rb +9 -9
  93. data/lib/sass/tree/extend_node.rb +20 -6
  94. data/lib/sass/tree/for_node.rb +6 -6
  95. data/lib/sass/tree/function_node.rb +12 -4
  96. data/lib/sass/tree/if_node.rb +2 -15
  97. data/lib/sass/tree/import_node.rb +11 -5
  98. data/lib/sass/tree/media_node.rb +27 -11
  99. data/lib/sass/tree/mixin_def_node.rb +15 -4
  100. data/lib/sass/tree/mixin_node.rb +27 -7
  101. data/lib/sass/tree/node.rb +69 -35
  102. data/lib/sass/tree/prop_node.rb +47 -31
  103. data/lib/sass/tree/return_node.rb +4 -3
  104. data/lib/sass/tree/root_node.rb +20 -4
  105. data/lib/sass/tree/rule_node.rb +37 -26
  106. data/lib/sass/tree/supports_node.rb +38 -0
  107. data/lib/sass/tree/trace_node.rb +33 -0
  108. data/lib/sass/tree/variable_node.rb +10 -4
  109. data/lib/sass/tree/visitors/base.rb +5 -8
  110. data/lib/sass/tree/visitors/check_nesting.rb +67 -52
  111. data/lib/sass/tree/visitors/convert.rb +134 -53
  112. data/lib/sass/tree/visitors/cssize.rb +245 -51
  113. data/lib/sass/tree/visitors/deep_copy.rb +102 -0
  114. data/lib/sass/tree/visitors/extend.rb +68 -0
  115. data/lib/sass/tree/visitors/perform.rb +331 -105
  116. data/lib/sass/tree/visitors/set_options.rb +125 -0
  117. data/lib/sass/tree/visitors/to_css.rb +259 -95
  118. data/lib/sass/tree/warn_node.rb +3 -3
  119. data/lib/sass/tree/while_node.rb +3 -3
  120. data/lib/sass/util/cross_platform_random.rb +19 -0
  121. data/lib/sass/util/multibyte_string_scanner.rb +157 -0
  122. data/lib/sass/util/normalized_map.rb +130 -0
  123. data/lib/sass/util/ordered_hash.rb +192 -0
  124. data/lib/sass/util/subset_map.rb +11 -2
  125. data/lib/sass/util/test.rb +9 -0
  126. data/lib/sass/util.rb +565 -39
  127. data/lib/sass/version.rb +27 -15
  128. data/lib/sass.rb +39 -4
  129. data/test/sass/cache_test.rb +15 -0
  130. data/test/sass/compiler_test.rb +223 -0
  131. data/test/sass/conversion_test.rb +901 -107
  132. data/test/sass/css2sass_test.rb +94 -0
  133. data/test/sass/engine_test.rb +1059 -164
  134. data/test/sass/exec_test.rb +86 -0
  135. data/test/sass/extend_test.rb +933 -837
  136. data/test/sass/fixtures/test_staleness_check_across_importers.css +1 -0
  137. data/test/sass/fixtures/test_staleness_check_across_importers.scss +1 -0
  138. data/test/sass/functions_test.rb +995 -136
  139. data/test/sass/importer_test.rb +338 -18
  140. data/test/sass/logger_test.rb +58 -0
  141. data/test/sass/more_results/more_import.css +2 -2
  142. data/test/sass/plugin_test.rb +114 -30
  143. data/test/sass/results/cached_import_option.css +3 -0
  144. data/test/sass/results/filename_fn.css +3 -0
  145. data/test/sass/results/import.css +2 -2
  146. data/test/sass/results/import_charset.css +1 -0
  147. data/test/sass/results/import_charset_1_8.css +1 -0
  148. data/test/sass/results/import_charset_ibm866.css +1 -0
  149. data/test/sass/results/import_content.css +1 -0
  150. data/test/sass/results/script.css +1 -1
  151. data/test/sass/results/scss_import.css +2 -2
  152. data/test/sass/results/units.css +2 -2
  153. data/test/sass/script_conversion_test.rb +43 -1
  154. data/test/sass/script_test.rb +380 -36
  155. data/test/sass/scss/css_test.rb +257 -75
  156. data/test/sass/scss/scss_test.rb +2322 -110
  157. data/test/sass/source_map_test.rb +887 -0
  158. data/test/sass/templates/_cached_import_option_partial.scss +1 -0
  159. data/test/sass/templates/_double_import_loop2.sass +1 -0
  160. data/test/sass/templates/_filename_fn_import.scss +11 -0
  161. data/test/sass/templates/_imported_content.sass +3 -0
  162. data/test/sass/templates/_same_name_different_partiality.scss +1 -0
  163. data/test/sass/templates/bork5.sass +3 -0
  164. data/test/sass/templates/cached_import_option.scss +3 -0
  165. data/test/sass/templates/double_import_loop1.sass +1 -0
  166. data/test/sass/templates/filename_fn.scss +18 -0
  167. data/test/sass/templates/import_charset.sass +2 -0
  168. data/test/sass/templates/import_charset_1_8.sass +2 -0
  169. data/test/sass/templates/import_charset_ibm866.sass +2 -0
  170. data/test/sass/templates/import_content.sass +4 -0
  171. data/test/sass/templates/same_name_different_ext.sass +2 -0
  172. data/test/sass/templates/same_name_different_ext.scss +1 -0
  173. data/test/sass/templates/same_name_different_partiality.scss +1 -0
  174. data/test/sass/templates/single_import_loop.sass +1 -0
  175. data/test/sass/templates/subdir/import_up1.scss +1 -0
  176. data/test/sass/templates/subdir/import_up2.scss +1 -0
  177. data/test/sass/test_helper.rb +1 -1
  178. data/test/sass/util/multibyte_string_scanner_test.rb +147 -0
  179. data/test/sass/util/normalized_map_test.rb +51 -0
  180. data/test/sass/util_test.rb +183 -0
  181. data/test/sass/value_helpers_test.rb +181 -0
  182. data/test/test_helper.rb +45 -5
  183. data/vendor/listen/CHANGELOG.md +228 -0
  184. data/vendor/listen/CONTRIBUTING.md +38 -0
  185. data/vendor/listen/Gemfile +30 -0
  186. data/vendor/listen/Guardfile +8 -0
  187. data/vendor/{fssm → listen}/LICENSE +1 -1
  188. data/vendor/listen/README.md +315 -0
  189. data/vendor/listen/Rakefile +47 -0
  190. data/vendor/listen/Vagrantfile +96 -0
  191. data/vendor/listen/lib/listen/adapter.rb +214 -0
  192. data/vendor/listen/lib/listen/adapters/bsd.rb +112 -0
  193. data/vendor/listen/lib/listen/adapters/darwin.rb +85 -0
  194. data/vendor/listen/lib/listen/adapters/linux.rb +113 -0
  195. data/vendor/listen/lib/listen/adapters/polling.rb +67 -0
  196. data/vendor/listen/lib/listen/adapters/windows.rb +87 -0
  197. data/vendor/listen/lib/listen/dependency_manager.rb +126 -0
  198. data/vendor/listen/lib/listen/directory_record.rb +371 -0
  199. data/vendor/listen/lib/listen/listener.rb +225 -0
  200. data/vendor/listen/lib/listen/multi_listener.rb +143 -0
  201. data/vendor/listen/lib/listen/turnstile.rb +28 -0
  202. data/vendor/listen/lib/listen/version.rb +3 -0
  203. data/vendor/listen/lib/listen.rb +40 -0
  204. data/vendor/listen/listen.gemspec +22 -0
  205. data/vendor/listen/spec/listen/adapter_spec.rb +183 -0
  206. data/vendor/listen/spec/listen/adapters/bsd_spec.rb +36 -0
  207. data/vendor/listen/spec/listen/adapters/darwin_spec.rb +37 -0
  208. data/vendor/listen/spec/listen/adapters/linux_spec.rb +47 -0
  209. data/vendor/listen/spec/listen/adapters/polling_spec.rb +68 -0
  210. data/vendor/listen/spec/listen/adapters/windows_spec.rb +30 -0
  211. data/vendor/listen/spec/listen/dependency_manager_spec.rb +107 -0
  212. data/vendor/listen/spec/listen/directory_record_spec.rb +1225 -0
  213. data/vendor/listen/spec/listen/listener_spec.rb +169 -0
  214. data/vendor/listen/spec/listen/multi_listener_spec.rb +174 -0
  215. data/vendor/listen/spec/listen/turnstile_spec.rb +56 -0
  216. data/vendor/listen/spec/listen_spec.rb +73 -0
  217. data/vendor/listen/spec/spec_helper.rb +21 -0
  218. data/vendor/listen/spec/support/adapter_helper.rb +629 -0
  219. data/vendor/listen/spec/support/directory_record_helper.rb +55 -0
  220. data/vendor/listen/spec/support/fixtures_helper.rb +29 -0
  221. data/vendor/listen/spec/support/listeners_helper.rb +156 -0
  222. data/vendor/listen/spec/support/platform_helper.rb +15 -0
  223. metadata +344 -271
  224. data/lib/sass/less.rb +0 -382
  225. data/lib/sass/script/bool.rb +0 -18
  226. data/lib/sass/script/funcall.rb +0 -162
  227. data/lib/sass/script/list.rb +0 -76
  228. data/lib/sass/script/literal.rb +0 -245
  229. data/lib/sass/script/variable.rb +0 -54
  230. data/lib/sass/scss/sass_parser.rb +0 -11
  231. data/test/sass/less_conversion_test.rb +0 -653
  232. data/vendor/fssm/README.markdown +0 -55
  233. data/vendor/fssm/Rakefile +0 -59
  234. data/vendor/fssm/VERSION.yml +0 -5
  235. data/vendor/fssm/example.rb +0 -9
  236. data/vendor/fssm/fssm.gemspec +0 -77
  237. data/vendor/fssm/lib/fssm/backends/fsevents.rb +0 -36
  238. data/vendor/fssm/lib/fssm/backends/inotify.rb +0 -26
  239. data/vendor/fssm/lib/fssm/backends/polling.rb +0 -25
  240. data/vendor/fssm/lib/fssm/backends/rubycocoa/fsevents.rb +0 -131
  241. data/vendor/fssm/lib/fssm/monitor.rb +0 -26
  242. data/vendor/fssm/lib/fssm/path.rb +0 -91
  243. data/vendor/fssm/lib/fssm/pathname.rb +0 -502
  244. data/vendor/fssm/lib/fssm/state/directory.rb +0 -57
  245. data/vendor/fssm/lib/fssm/state/file.rb +0 -24
  246. data/vendor/fssm/lib/fssm/support.rb +0 -63
  247. data/vendor/fssm/lib/fssm/tree.rb +0 -176
  248. data/vendor/fssm/lib/fssm.rb +0 -33
  249. data/vendor/fssm/profile/prof-cache.rb +0 -40
  250. data/vendor/fssm/profile/prof-fssm-pathname.html +0 -1231
  251. data/vendor/fssm/profile/prof-pathname.rb +0 -68
  252. data/vendor/fssm/profile/prof-plain-pathname.html +0 -988
  253. data/vendor/fssm/profile/prof.html +0 -2379
  254. data/vendor/fssm/spec/path_spec.rb +0 -75
  255. data/vendor/fssm/spec/root/duck/quack.txt +0 -0
  256. data/vendor/fssm/spec/root/file.css +0 -0
  257. data/vendor/fssm/spec/root/file.rb +0 -0
  258. data/vendor/fssm/spec/root/file.yml +0 -0
  259. data/vendor/fssm/spec/root/moo/cow.txt +0 -0
  260. data/vendor/fssm/spec/spec_helper.rb +0 -14
@@ -1,245 +0,0 @@
1
- module Sass::Script
2
- # The abstract superclass for SassScript objects.
3
- #
4
- # Many of these methods, especially the ones that correspond to SassScript operations,
5
- # are designed to be overridden by subclasses which may change the semantics somewhat.
6
- # The operations listed here are just the defaults.
7
- class Literal < Node
8
- require 'sass/script/string'
9
- require 'sass/script/number'
10
- require 'sass/script/color'
11
- require 'sass/script/bool'
12
- require 'sass/script/list'
13
-
14
- # Returns the Ruby value of the literal.
15
- # The type of this value varies based on the subclass.
16
- #
17
- # @return [Object]
18
- attr_reader :value
19
-
20
- # Creates a new literal.
21
- #
22
- # @param value [Object] The object for \{#value}
23
- def initialize(value = nil)
24
- @value = value
25
- super()
26
- end
27
-
28
- # Returns an empty array.
29
- #
30
- # @return [Array<Node>] empty
31
- # @see Node#children
32
- def children
33
- []
34
- end
35
-
36
- # Returns the options hash for this node.
37
- #
38
- # @return [{Symbol => Object}]
39
- # @raise [Sass::SyntaxError] if the options hash hasn't been set.
40
- # This should only happen when the literal was created
41
- # outside of the parser and \{#to\_s} was called on it
42
- def options
43
- opts = super
44
- return opts if opts
45
- raise Sass::SyntaxError.new(<<MSG)
46
- The #options attribute is not set on this #{self.class}.
47
- This error is probably occurring because #to_s was called
48
- on this literal within a custom Sass function without first
49
- setting the #option attribute.
50
- MSG
51
- end
52
-
53
- # The SassScript `and` operation.
54
- #
55
- # @param other [Literal] The right-hand side of the operator
56
- # @return [Literal] The result of a logical and:
57
- # `other` if this literal isn't a false {Bool},
58
- # and this literal otherwise
59
- def and(other)
60
- to_bool ? other : self
61
- end
62
-
63
- # The SassScript `or` operation.
64
- #
65
- # @param other [Literal] The right-hand side of the operator
66
- # @return [Literal] The result of the logical or:
67
- # this literal if it isn't a false {Bool},
68
- # and `other` otherwise
69
- def or(other)
70
- to_bool ? self : other
71
- end
72
-
73
- # The SassScript `==` operation.
74
- # **Note that this returns a {Sass::Script::Bool} object,
75
- # not a Ruby boolean**.
76
- #
77
- # @param other [Literal] The right-hand side of the operator
78
- # @return [Bool] True if this literal is the same as the other,
79
- # false otherwise
80
- def eq(other)
81
- Sass::Script::Bool.new(self.class == other.class && self.value == other.value)
82
- end
83
-
84
- # The SassScript `!=` operation.
85
- # **Note that this returns a {Sass::Script::Bool} object,
86
- # not a Ruby boolean**.
87
- #
88
- # @param other [Literal] The right-hand side of the operator
89
- # @return [Bool] False if this literal is the same as the other,
90
- # true otherwise
91
- def neq(other)
92
- Sass::Script::Bool.new(!eq(other).to_bool)
93
- end
94
-
95
- # The SassScript `==` operation.
96
- # **Note that this returns a {Sass::Script::Bool} object,
97
- # not a Ruby boolean**.
98
- #
99
- # @param other [Literal] The right-hand side of the operator
100
- # @return [Bool] True if this literal is the same as the other,
101
- # false otherwise
102
- def unary_not
103
- Sass::Script::Bool.new(!to_bool)
104
- end
105
-
106
- # The SassScript default operation (e.g. `$a $b`, `"foo" "bar"`).
107
- #
108
- # @param other [Literal] The right-hand side of the operator
109
- # @return [Script::String] A string containing both literals
110
- # separated by a space
111
- def space(other)
112
- Sass::Script::String.new("#{self.to_s} #{other.to_s}")
113
- end
114
-
115
- # The SassScript `,` operation (e.g. `$a, $b`, `"foo", "bar"`).
116
- #
117
- # @param other [Literal] The right-hand side of the operator
118
- # @return [Script::String] A string containing both literals
119
- # separated by `", "`
120
- def comma(other)
121
- Sass::Script::String.new("#{self.to_s},#{' ' unless options[:style] == :compressed}#{other.to_s}")
122
- end
123
-
124
- # The SassScript `=` operation
125
- # (used for proprietary MS syntax like `alpha(opacity=20)`).
126
- #
127
- # @param other [Literal] The right-hand side of the operator
128
- # @return [Script::String] A string containing both literals
129
- # separated by `"="`
130
- def single_eq(other)
131
- Sass::Script::String.new("#{self.to_s}=#{other.to_s}")
132
- end
133
-
134
- # The SassScript `+` operation.
135
- #
136
- # @param other [Literal] The right-hand side of the operator
137
- # @return [Script::String] A string containing both literals
138
- # without any separation
139
- def plus(other)
140
- if other.is_a?(Sass::Script::String)
141
- return Sass::Script::String.new(self.to_s + other.value, other.type)
142
- end
143
- Sass::Script::String.new(self.to_s + other.to_s)
144
- end
145
-
146
- # The SassScript `-` operation.
147
- #
148
- # @param other [Literal] The right-hand side of the operator
149
- # @return [Script::String] A string containing both literals
150
- # separated by `"-"`
151
- def minus(other)
152
- Sass::Script::String.new("#{self.to_s}-#{other.to_s}")
153
- end
154
-
155
- # The SassScript `/` operation.
156
- #
157
- # @param other [Literal] The right-hand side of the operator
158
- # @return [Script::String] A string containing both literals
159
- # separated by `"/"`
160
- def div(other)
161
- Sass::Script::String.new("#{self.to_s}/#{other.to_s}")
162
- end
163
-
164
- # The SassScript unary `+` operation (e.g. `+$a`).
165
- #
166
- # @param other [Literal] The right-hand side of the operator
167
- # @return [Script::String] A string containing the literal
168
- # preceded by `"+"`
169
- def unary_plus
170
- Sass::Script::String.new("+#{self.to_s}")
171
- end
172
-
173
- # The SassScript unary `-` operation (e.g. `-$a`).
174
- #
175
- # @param other [Literal] The right-hand side of the operator
176
- # @return [Script::String] A string containing the literal
177
- # preceded by `"-"`
178
- def unary_minus
179
- Sass::Script::String.new("-#{self.to_s}")
180
- end
181
-
182
- # The SassScript unary `/` operation (e.g. `/$a`).
183
- #
184
- # @param other [Literal] The right-hand side of the operator
185
- # @return [Script::String] A string containing the literal
186
- # preceded by `"/"`
187
- def unary_div
188
- Sass::Script::String.new("/#{self.to_s}")
189
- end
190
-
191
- # @return [String] A readable representation of the literal
192
- def inspect
193
- value.inspect
194
- end
195
-
196
- # @return [Boolean] `true` (the Ruby boolean value)
197
- def to_bool
198
- true
199
- end
200
-
201
- # Compares this object with another.
202
- #
203
- # @param other [Object] The object to compare with
204
- # @return [Boolean] Whether or not this literal is equivalent to `other`
205
- def ==(other)
206
- eq(other).to_bool
207
- end
208
-
209
- # @return [Fixnum] The integer value of this literal
210
- # @raise [Sass::SyntaxError] if this literal isn't an integer
211
- def to_i
212
- raise Sass::SyntaxError.new("#{self.inspect} is not an integer.")
213
- end
214
-
215
- # @raise [Sass::SyntaxError] if this literal isn't an integer
216
- def assert_int!; to_i; end
217
-
218
- # Returns the value of this literal as a list.
219
- # Single literals are considered the same as single-element lists.
220
- #
221
- # @return [Array<Literal>] The of this literal as a list
222
- def to_a
223
- [self]
224
- end
225
-
226
- # Returns the string representation of this literal
227
- # as it would be output to the CSS document.
228
- #
229
- # @return [String]
230
- def to_s(opts = {})
231
- raise Sass::SyntaxError.new("[BUG] All subclasses of Sass::Literal must implement #to_s.")
232
- end
233
- alias_method :to_sass, :to_s
234
-
235
- protected
236
-
237
- # Evaluates the literal.
238
- #
239
- # @param environment [Sass::Environment] The environment in which to evaluate the SassScript
240
- # @return [Literal] This literal
241
- def _perform(environment)
242
- self
243
- end
244
- end
245
- end
@@ -1,54 +0,0 @@
1
- module Sass
2
- module Script
3
- # A SassScript parse node representing a variable.
4
- class Variable < Node
5
- # The name of the variable.
6
- #
7
- # @return [String]
8
- attr_reader :name
9
-
10
- # The underscored name of the variable.
11
- #
12
- # @return [String]
13
- attr_reader :underscored_name
14
-
15
- # @param name [String] See \{#name}
16
- def initialize(name)
17
- @name = name
18
- @underscored_name = name.gsub(/-/,"_")
19
- super()
20
- end
21
-
22
- # @return [String] A string representation of the variable
23
- def inspect(opts = {})
24
- return "!important" if name == "important"
25
- "$#{dasherize(name, opts)}"
26
- end
27
- alias_method :to_sass, :inspect
28
-
29
- # Returns an empty array.
30
- #
31
- # @return [Array<Node>] empty
32
- # @see Node#children
33
- def children
34
- []
35
- end
36
-
37
- protected
38
-
39
- # Evaluates the variable.
40
- #
41
- # @param environment [Sass::Environment] The environment in which to evaluate the SassScript
42
- # @return [Literal] The SassScript object that is the value of the variable
43
- # @raise [Sass::SyntaxError] if the variable is undefined
44
- def _perform(environment)
45
- raise SyntaxError.new("Undefined variable: \"$#{name}\".") unless val = environment.var(name)
46
- if val.is_a?(Number)
47
- val = val.dup
48
- val.original = nil
49
- end
50
- return val
51
- end
52
- end
53
- end
54
- end
@@ -1,11 +0,0 @@
1
- module Sass
2
- module SCSS
3
- # A subclass of {Parser} that parses code in Sass documents
4
- # using some SCSS constructs.
5
- # This is necessary because SassScript in Sass supports `!`-style variables,
6
- # whereas in SCSS it doesn't.
7
- class SassParser < Parser
8
- @sass_script_parser = Sass::Script::Parser
9
- end
10
- end
11
- end