sass 3.2.7 → 3.3.0.rc.1

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 (184) hide show
  1. data/MIT-LICENSE +2 -2
  2. data/README.md +14 -2
  3. data/Rakefile +25 -1
  4. data/VERSION +1 -1
  5. data/VERSION_DATE +1 -1
  6. data/VERSION_NAME +1 -1
  7. data/lib/sass/cache_stores/base.rb +4 -2
  8. data/lib/sass/cache_stores/chain.rb +2 -1
  9. data/lib/sass/cache_stores/filesystem.rb +2 -6
  10. data/lib/sass/cache_stores/memory.rb +1 -1
  11. data/lib/sass/cache_stores/null.rb +2 -2
  12. data/lib/sass/callbacks.rb +1 -0
  13. data/lib/sass/css.rb +10 -10
  14. data/lib/sass/engine.rb +403 -150
  15. data/lib/sass/environment.rb +136 -57
  16. data/lib/sass/error.rb +7 -7
  17. data/lib/sass/exec.rb +123 -39
  18. data/lib/sass/features.rb +41 -0
  19. data/lib/sass/importers/base.rb +33 -2
  20. data/lib/sass/importers/deprecated_path.rb +45 -0
  21. data/lib/sass/importers/filesystem.rb +25 -14
  22. data/lib/sass/importers.rb +1 -0
  23. data/lib/sass/logger/base.rb +3 -3
  24. data/lib/sass/logger/log_level.rb +4 -6
  25. data/lib/sass/media.rb +19 -19
  26. data/lib/sass/plugin/compiler.rb +141 -101
  27. data/lib/sass/plugin/configuration.rb +18 -22
  28. data/lib/sass/plugin/merb.rb +1 -1
  29. data/lib/sass/plugin/staleness_checker.rb +24 -8
  30. data/lib/sass/plugin.rb +4 -2
  31. data/lib/sass/repl.rb +3 -3
  32. data/lib/sass/script/css_lexer.rb +9 -4
  33. data/lib/sass/script/css_parser.rb +6 -2
  34. data/lib/sass/script/functions.rb +1343 -590
  35. data/lib/sass/script/lexer.rb +84 -52
  36. data/lib/sass/script/parser.rb +217 -97
  37. data/lib/sass/script/tree/funcall.rb +290 -0
  38. data/lib/sass/script/{interpolation.rb → tree/interpolation.rb} +34 -13
  39. data/lib/sass/script/tree/list_literal.rb +80 -0
  40. data/lib/sass/script/tree/literal.rb +47 -0
  41. data/lib/sass/script/tree/map_literal.rb +64 -0
  42. data/lib/sass/script/{node.rb → tree/node.rb} +22 -12
  43. data/lib/sass/script/{operation.rb → tree/operation.rb} +17 -25
  44. data/lib/sass/script/tree/selector.rb +30 -0
  45. data/lib/sass/script/{string_interpolation.rb → tree/string_interpolation.rb} +5 -4
  46. data/lib/sass/script/{unary_operation.rb → tree/unary_operation.rb} +14 -9
  47. data/lib/sass/script/tree/variable.rb +57 -0
  48. data/lib/sass/script/tree.rb +16 -0
  49. data/lib/sass/script/{arg_list.rb → value/arg_list.rb} +4 -24
  50. data/lib/sass/script/value/base.rb +248 -0
  51. data/lib/sass/script/value/bool.rb +36 -0
  52. data/lib/sass/script/{color.rb → value/color.rb} +239 -195
  53. data/lib/sass/script/value/helpers.rb +155 -0
  54. data/lib/sass/script/value/list.rb +119 -0
  55. data/lib/sass/script/value/map.rb +70 -0
  56. data/lib/sass/script/value/null.rb +45 -0
  57. data/lib/sass/script/{number.rb → value/number.rb} +91 -65
  58. data/lib/sass/script/{string.rb → value/string.rb} +9 -11
  59. data/lib/sass/script/value.rb +11 -0
  60. data/lib/sass/script.rb +35 -8
  61. data/lib/sass/scss/css_parser.rb +2 -1
  62. data/lib/sass/scss/parser.rb +338 -170
  63. data/lib/sass/scss/rx.rb +5 -6
  64. data/lib/sass/scss/script_lexer.rb +1 -0
  65. data/lib/sass/scss/script_parser.rb +1 -0
  66. data/lib/sass/scss/static_parser.rb +23 -6
  67. data/lib/sass/selector/abstract_sequence.rb +2 -2
  68. data/lib/sass/selector/comma_sequence.rb +21 -16
  69. data/lib/sass/selector/sequence.rb +60 -34
  70. data/lib/sass/selector/simple.rb +11 -12
  71. data/lib/sass/selector/simple_sequence.rb +55 -33
  72. data/lib/sass/selector.rb +52 -48
  73. data/lib/sass/source/map.rb +211 -0
  74. data/lib/sass/source/position.rb +39 -0
  75. data/lib/sass/source/range.rb +41 -0
  76. data/lib/sass/stack.rb +120 -0
  77. data/lib/sass/supports.rb +12 -13
  78. data/lib/sass/tree/at_root_node.rb +82 -0
  79. data/lib/sass/tree/comment_node.rb +3 -3
  80. data/lib/sass/tree/css_import_node.rb +11 -11
  81. data/lib/sass/tree/debug_node.rb +2 -2
  82. data/lib/sass/tree/directive_node.rb +13 -2
  83. data/lib/sass/tree/each_node.rb +8 -8
  84. data/lib/sass/tree/extend_node.rb +13 -6
  85. data/lib/sass/tree/for_node.rb +4 -4
  86. data/lib/sass/tree/function_node.rb +5 -4
  87. data/lib/sass/tree/if_node.rb +1 -1
  88. data/lib/sass/tree/import_node.rb +4 -5
  89. data/lib/sass/tree/media_node.rb +4 -14
  90. data/lib/sass/tree/mixin_def_node.rb +4 -4
  91. data/lib/sass/tree/mixin_node.rb +21 -8
  92. data/lib/sass/tree/node.rb +29 -12
  93. data/lib/sass/tree/prop_node.rb +38 -18
  94. data/lib/sass/tree/return_node.rb +3 -2
  95. data/lib/sass/tree/root_node.rb +19 -3
  96. data/lib/sass/tree/rule_node.rb +25 -17
  97. data/lib/sass/tree/supports_node.rb +0 -13
  98. data/lib/sass/tree/trace_node.rb +2 -1
  99. data/lib/sass/tree/variable_node.rb +9 -3
  100. data/lib/sass/tree/visitors/base.rb +6 -6
  101. data/lib/sass/tree/visitors/check_nesting.rb +12 -9
  102. data/lib/sass/tree/visitors/convert.rb +63 -38
  103. data/lib/sass/tree/visitors/cssize.rb +63 -23
  104. data/lib/sass/tree/visitors/deep_copy.rb +6 -5
  105. data/lib/sass/tree/visitors/extend.rb +7 -7
  106. data/lib/sass/tree/visitors/perform.rb +256 -151
  107. data/lib/sass/tree/visitors/set_options.rb +6 -6
  108. data/lib/sass/tree/visitors/to_css.rb +231 -81
  109. data/lib/sass/tree/warn_node.rb +2 -2
  110. data/lib/sass/tree/while_node.rb +2 -2
  111. data/lib/sass/util/multibyte_string_scanner.rb +2 -0
  112. data/lib/sass/util/normalized_map.rb +65 -0
  113. data/lib/sass/util/ordered_hash.rb +188 -0
  114. data/lib/sass/util/subset_map.rb +3 -2
  115. data/lib/sass/util/test.rb +9 -0
  116. data/lib/sass/util.rb +220 -34
  117. data/lib/sass/version.rb +9 -9
  118. data/lib/sass.rb +14 -7
  119. data/test/sass/compiler_test.rb +213 -0
  120. data/test/sass/conversion_test.rb +235 -9
  121. data/test/sass/engine_test.rb +230 -60
  122. data/test/sass/exec_test.rb +86 -0
  123. data/test/sass/extend_test.rb +215 -147
  124. data/test/sass/functions_test.rb +584 -99
  125. data/test/sass/importer_test.rb +165 -17
  126. data/test/sass/plugin_test.rb +19 -13
  127. data/test/sass/script_conversion_test.rb +40 -0
  128. data/test/sass/script_test.rb +231 -21
  129. data/test/sass/scss/css_test.rb +14 -5
  130. data/test/sass/scss/scss_test.rb +1266 -66
  131. data/test/sass/source_map_test.rb +879 -0
  132. data/test/sass/templates/bork5.sass +3 -0
  133. data/test/sass/util/normalized_map_test.rb +30 -0
  134. data/test/sass/util_test.rb +90 -0
  135. data/test/sass/value_helpers_test.rb +181 -0
  136. data/test/test_helper.rb +7 -2
  137. metadata +316 -291
  138. data/lib/sass/script/bool.rb +0 -18
  139. data/lib/sass/script/funcall.rb +0 -231
  140. data/lib/sass/script/list.rb +0 -84
  141. data/lib/sass/script/literal.rb +0 -239
  142. data/lib/sass/script/null.rb +0 -34
  143. data/lib/sass/script/variable.rb +0 -58
  144. data/test/Gemfile +0 -3
  145. data/vendor/listen/CHANGELOG.md +0 -221
  146. data/vendor/listen/CONTRIBUTING.md +0 -38
  147. data/vendor/listen/Gemfile +0 -30
  148. data/vendor/listen/Guardfile +0 -8
  149. data/vendor/listen/LICENSE +0 -20
  150. data/vendor/listen/README.md +0 -315
  151. data/vendor/listen/Rakefile +0 -47
  152. data/vendor/listen/Vagrantfile +0 -96
  153. data/vendor/listen/lib/listen/adapter.rb +0 -214
  154. data/vendor/listen/lib/listen/adapters/bsd.rb +0 -112
  155. data/vendor/listen/lib/listen/adapters/darwin.rb +0 -85
  156. data/vendor/listen/lib/listen/adapters/linux.rb +0 -113
  157. data/vendor/listen/lib/listen/adapters/polling.rb +0 -67
  158. data/vendor/listen/lib/listen/adapters/windows.rb +0 -87
  159. data/vendor/listen/lib/listen/dependency_manager.rb +0 -126
  160. data/vendor/listen/lib/listen/directory_record.rb +0 -371
  161. data/vendor/listen/lib/listen/listener.rb +0 -225
  162. data/vendor/listen/lib/listen/multi_listener.rb +0 -143
  163. data/vendor/listen/lib/listen/turnstile.rb +0 -28
  164. data/vendor/listen/lib/listen/version.rb +0 -3
  165. data/vendor/listen/lib/listen.rb +0 -40
  166. data/vendor/listen/listen.gemspec +0 -22
  167. data/vendor/listen/spec/listen/adapter_spec.rb +0 -183
  168. data/vendor/listen/spec/listen/adapters/bsd_spec.rb +0 -36
  169. data/vendor/listen/spec/listen/adapters/darwin_spec.rb +0 -37
  170. data/vendor/listen/spec/listen/adapters/linux_spec.rb +0 -47
  171. data/vendor/listen/spec/listen/adapters/polling_spec.rb +0 -68
  172. data/vendor/listen/spec/listen/adapters/windows_spec.rb +0 -30
  173. data/vendor/listen/spec/listen/dependency_manager_spec.rb +0 -107
  174. data/vendor/listen/spec/listen/directory_record_spec.rb +0 -1225
  175. data/vendor/listen/spec/listen/listener_spec.rb +0 -169
  176. data/vendor/listen/spec/listen/multi_listener_spec.rb +0 -174
  177. data/vendor/listen/spec/listen/turnstile_spec.rb +0 -56
  178. data/vendor/listen/spec/listen_spec.rb +0 -73
  179. data/vendor/listen/spec/spec_helper.rb +0 -21
  180. data/vendor/listen/spec/support/adapter_helper.rb +0 -629
  181. data/vendor/listen/spec/support/directory_record_helper.rb +0 -55
  182. data/vendor/listen/spec/support/fixtures_helper.rb +0 -29
  183. data/vendor/listen/spec/support/listeners_helper.rb +0 -156
  184. data/vendor/listen/spec/support/platform_helper.rb +0 -15
@@ -0,0 +1,3 @@
1
+ bork
2
+ /* foo */
3
+ :bork $bork
@@ -0,0 +1,30 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../../test_helper'
3
+ require 'sass/util/normalized_map'
4
+
5
+ class NormalizedMapTest < Test::Unit::TestCase
6
+ def test_basic_lifecycle
7
+ m = Sass::Util::NormalizedMap.new
8
+ m["a-b"] = 1
9
+ assert_equal ["a_b"], m.keys
10
+ assert_equal 1, m["a_b"]
11
+ assert_equal 1, m["a-b"]
12
+ assert m.has_key?("a_b")
13
+ assert m.has_key?("a-b")
14
+ assert_equal({"a-b" => 1}, m.as_stored)
15
+ assert_equal 1, m.delete("a-b")
16
+ assert !m.has_key?("a-b")
17
+ m["a_b"] = 2
18
+ assert_equal({"a_b" => 2}, m.as_stored)
19
+ end
20
+
21
+ def test_dup
22
+ m = Sass::Util::NormalizedMap.new
23
+ m["a-b"] = 1
24
+ m2 = m.dup
25
+ m.delete("a-b")
26
+ assert !m.has_key?("a-b")
27
+ assert m2.has_key?("a-b")
28
+ end
29
+
30
+ end
@@ -1,6 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
  require File.dirname(__FILE__) + '/../test_helper'
3
3
  require 'pathname'
4
+ require 'tmpdir'
4
5
 
5
6
  class UtilTest < Test::Unit::TestCase
6
7
  include Sass::Util
@@ -310,4 +311,93 @@ class UtilTest < Test::Unit::TestCase
310
311
  "UtilTest::FooBar must implement #foo") {FooBar.new.foo}
311
312
  end
312
313
 
314
+ def test_json_escape_string
315
+ assert_json_string "", ""
316
+ alphanum = (("0".."9").to_a).concat(("a".."z").to_a).concat(("A".."Z").to_a).join
317
+ assert_json_string alphanum, alphanum
318
+ assert_json_string "'\"\\'", "'\\\"\\\\'"
319
+ assert_json_string "\b\f\n\r\t", "\\b\\f\\n\\r\\t"
320
+ end
321
+
322
+ def assert_json_string(source, target)
323
+ assert_equal target, json_escape_string(source)
324
+ end
325
+
326
+ def test_json_value_of
327
+ assert_json_value 0, "0"
328
+ assert_json_value(-42, "-42")
329
+ assert_json_value 42, "42"
330
+ assert_json_value true, "true"
331
+ assert_json_value false, "false"
332
+ assert_json_value "", "\"\""
333
+ assert_json_value "\"\"", "\"\\\"\\\"\""
334
+ assert_json_value "Multi\nLine\rString", "\"Multi\\nLine\\rString\""
335
+ assert_json_value [1, "some\nstr,ing", false, nil], "[1,\"some\\nstr,ing\",false,null]"
336
+ end
337
+
338
+ def assert_json_value(source, target)
339
+ assert_equal target, json_value_of(source)
340
+ end
341
+
342
+ def test_vlq
343
+ assert_equal "A", encode_vlq(0)
344
+ assert_equal "e", encode_vlq(15)
345
+ assert_equal "gB", encode_vlq(16)
346
+ assert_equal "wH", encode_vlq(120)
347
+ end
348
+
349
+ def assert_vlq_encodes(int, vlq)
350
+ vlq_from_decimal_array = decimal_array.map {|d| encode_vlq(d)}.join
351
+ decimal_array_from_vlq = decode_vlq(vlq)
352
+ assert_equal vlq, vlq_from_decimal_array
353
+ assert_equal decimal_array, decimal_array_from_vlq
354
+ end
355
+
356
+ def test_atomic_writes
357
+ # when using normal writes, this test fails about 90% of the time.
358
+ filename = File.join(Dir.tmpdir, "test_atomic")
359
+ 5.times do
360
+ writes_to_perform = %w(1 2 3 4 5 6 7 8 9).map {|i| "#{i}\n" * 100_000}
361
+ threads = writes_to_perform.map do |to_write|
362
+ Thread.new do
363
+ # To see this test fail with a normal write,
364
+ # change to the standard file open mechanism:
365
+ # open(filename, "w") do |f|
366
+ atomic_create_and_write_file(filename) do |f|
367
+ f.write(to_write)
368
+ end
369
+ end
370
+ end
371
+ loop do
372
+ contents = File.exist?(filename) ? File.read(filename) : nil
373
+ next if contents.nil? || contents.size == 0
374
+ unless writes_to_perform.include?(contents)
375
+ if contents.size != writes_to_perform.first.size
376
+ fail "Incomplete write detected: was #{contents.size} characters, " +
377
+ "should have been #{writes_to_perform.first.size}"
378
+ else
379
+ fail "Corrupted read/write detected"
380
+ end
381
+ end
382
+ break if threads.all? {|t| !t.alive?}
383
+ end
384
+ threads.each {|t| t.join}
385
+ end
386
+ end
387
+
388
+ class FakeError < RuntimeError; end
389
+
390
+ def test_atomic_writes_handles_exceptions
391
+ filename = File.join(Dir.tmpdir, "test_atomic_exception")
392
+ FileUtils.rm_f(filename)
393
+ tmp_filename = nil
394
+ assert_raises FakeError do
395
+ atomic_create_and_write_file(filename) do |f|
396
+ tmp_filename = f.path
397
+ raise FakeError.new "Borken"
398
+ end
399
+ end
400
+ assert !File.exist?(filename)
401
+ assert !File.exist?(tmp_filename)
402
+ end
313
403
  end
@@ -0,0 +1,181 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../test_helper'
3
+
4
+ class ValueHelpersTest < Test::Unit::TestCase
5
+ include Sass::Script
6
+ include Sass::Script::Value::Helpers
7
+
8
+ def test_bool
9
+ assert_same Value::Bool::TRUE, bool(true)
10
+ assert_same Value::Bool::FALSE, bool(false)
11
+ assert_same Value::Bool::FALSE, bool(nil)
12
+ assert_same Value::Bool::TRUE, bool(Object.new)
13
+ end
14
+
15
+ def test_hex_color_with_three_digits
16
+ color = hex_color("F07")
17
+ assert_equal 255, color.red
18
+ assert_equal 0, color.green
19
+ assert_equal 119, color.blue
20
+ assert_equal 1, color.alpha
21
+ end
22
+
23
+ def test_hex_color_without_hash
24
+ color_without_hash = hex_color("FF007F")
25
+ assert_equal 255, color_without_hash.red
26
+ assert_equal 0, color_without_hash.green
27
+ assert_equal 127, color_without_hash.blue
28
+ assert_equal 1, color_without_hash.alpha
29
+ end
30
+
31
+ def test_hex_color_with_hash
32
+ color_with_hash = hex_color("#FF007F")
33
+ assert_equal 255, color_with_hash.red
34
+ assert_equal 0, color_with_hash.green
35
+ assert_equal 127, color_with_hash.blue
36
+ assert_equal 1, color_with_hash.alpha
37
+ end
38
+
39
+ def test_malformed_hex_color
40
+ assert_raises ArgumentError do
41
+ hex_color("green")
42
+ end
43
+ assert_raises ArgumentError do
44
+ hex_color("#abcd")
45
+ end
46
+ end
47
+
48
+
49
+ def test_hex_color_with_alpha
50
+ color_with_alpha = hex_color("FF007F", 0.5)
51
+ assert_equal 0.5, color_with_alpha.alpha
52
+ end
53
+
54
+ def test_hex_color_alpha_enforces_0_to_1
55
+ assert_raises ArgumentError do
56
+ hex_color("FF007F", 50)
57
+ end
58
+ end
59
+
60
+ def test_hsl_color_without_alpha
61
+ no_alpha = hsl_color(1, 0.5, 1)
62
+ assert_equal 1, no_alpha.hue
63
+ assert_equal 0.5, no_alpha.saturation
64
+ assert_equal 1, no_alpha.lightness
65
+ assert_equal 1, no_alpha.alpha
66
+ end
67
+
68
+ def test_hsl_color_with_alpha
69
+ has_alpha = hsl_color(1, 0.5, 1, 0.5)
70
+ assert_equal 1, has_alpha.hue
71
+ assert_equal 0.5, has_alpha.saturation
72
+ assert_equal 1, has_alpha.lightness
73
+ assert_equal 0.5, has_alpha.alpha
74
+ end
75
+
76
+ def test_rgb_color_without_alpha
77
+ no_alpha = rgb_color(255, 0, 0)
78
+ assert_equal 255, no_alpha.red
79
+ assert_equal 0, no_alpha.green
80
+ assert_equal 0, no_alpha.blue
81
+ assert_equal 1, no_alpha.alpha
82
+ end
83
+
84
+ def test_rgb_color_with_alpha
85
+ has_alpha = rgb_color(255, 255, 255, 0.5)
86
+ assert_equal 255, has_alpha.red
87
+ assert_equal 255, has_alpha.green
88
+ assert_equal 255, has_alpha.blue
89
+ assert_equal 0.5, has_alpha.alpha
90
+ end
91
+
92
+ def test_number
93
+ n = number(1)
94
+ assert_equal 1, n.value
95
+ assert_equal "1", n.to_sass
96
+ end
97
+
98
+ def test_number_with_single_unit
99
+ n = number(1, "px")
100
+ assert_equal 1, n.value
101
+ assert_equal "1px", n.to_sass
102
+ end
103
+
104
+ def test_number_with_singal_numerator_and_denominator
105
+ ratio = number(1, "px/em")
106
+ assert_equal "1px/em", ratio.to_sass
107
+ end
108
+
109
+ def test_number_with_many_numerator_and_denominator_units
110
+ complex = number(1, "px*in/em*%")
111
+ assert_equal "1in*px/%*em", complex.to_sass
112
+ end
113
+
114
+ def test_number_with_many_numerator_and_denominator_units_with_spaces
115
+ complex = number(1, "px * in / em * %")
116
+ assert_equal "1in*px/%*em", complex.to_sass
117
+ end
118
+
119
+ def test_number_with_malformed_units
120
+ assert_raises ArgumentError do
121
+ number(1, "px/em/%")
122
+ end
123
+ assert_raises ArgumentError do
124
+ number(1, "/")
125
+ end
126
+ assert_raises ArgumentError do
127
+ number(1, "px/")
128
+ end
129
+ end
130
+
131
+ def test_space_list
132
+ l = list(number(1, "px"), hex_color("#f71"), :space)
133
+ l.options = {}
134
+ assert_kind_of Sass::Script::Value::List, l
135
+ assert_equal "1px #ff7711", l.to_sass
136
+ end
137
+
138
+ def test_comma_list
139
+ l = list(number(1, "px"), hex_color("#f71"), :comma)
140
+ l.options = {}
141
+ assert_kind_of Sass::Script::Value::List, l
142
+ assert_equal "1px, #ff7711", l.to_sass
143
+ end
144
+
145
+ def test_missing_list_type
146
+ assert_raises ArgumentError do
147
+ list(number(1, "px"), hex_color("#f71"))
148
+ end
149
+ end
150
+
151
+ def test_null
152
+ assert_kind_of Sass::Script::Value::Null, null
153
+ end
154
+
155
+ def test_quoted_string
156
+ s = quoted_string("sassy string")
157
+ s.options = {}
158
+ assert_kind_of Sass::Script::Value::String, s
159
+ assert_equal "sassy string", s.value
160
+ assert_equal :string, s.type
161
+ assert_equal '"sassy string"', s.to_sass
162
+ end
163
+
164
+ def test_identifier
165
+ s = identifier("a-sass-ident")
166
+ s.options = {}
167
+ assert_kind_of Sass::Script::Value::String, s
168
+ assert_equal "a-sass-ident", s.value
169
+ assert_equal :identifier, s.type
170
+ assert_equal "a-sass-ident", s.to_sass
171
+ end
172
+
173
+ def test_unquoted_string
174
+ s = unquoted_string("a-sass-ident")
175
+ s.options = {}
176
+ assert_kind_of Sass::Script::Value::String, s
177
+ assert_equal "a-sass-ident", s.value
178
+ assert_equal :identifier, s.type
179
+ assert_equal "a-sass-ident", s.to_sass
180
+ end
181
+ end
data/test/test_helper.rb CHANGED
@@ -7,11 +7,16 @@ require 'sass'
7
7
  require 'mathn' if ENV['MATHN'] == 'true'
8
8
 
9
9
  Sass::RAILS_LOADED = true unless defined?(Sass::RAILS_LOADED)
10
- Encoding.default_external = 'UTF-8' if defined?(Encoding)
10
+
11
+ if defined?(Encoding)
12
+ $-w, w = false, $-w
13
+ Encoding.default_external = 'UTF-8'
14
+ $-w = w
15
+ end
11
16
 
12
17
  module Sass::Script::Functions
13
18
  def option(name)
14
- Sass::Script::String.new(@options[name.value.to_sym].to_s)
19
+ Sass::Script::Value::String.new(@options[name.value.to_sym].to_s)
15
20
  end
16
21
  end
17
22