haml 3.1.8 → 3.2.0.alpha.2

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of haml might be problematic. Click here for more details.

Files changed (148) hide show
  1. data/CONTRIBUTING +1 -1
  2. data/README.md +2 -2
  3. data/REVISION +1 -1
  4. data/Rakefile +16 -41
  5. data/VERSION +1 -1
  6. data/VERSION_NAME +1 -1
  7. data/lib/haml/buffer.rb +1 -5
  8. data/lib/haml/compiler.rb +7 -8
  9. data/lib/haml/exec.rb +1 -1
  10. data/lib/haml/helpers.rb +3 -5
  11. data/lib/haml/helpers/action_view_mods.rb +5 -21
  12. data/lib/haml/parser.rb +1 -1
  13. data/lib/haml/template.rb +1 -3
  14. data/lib/haml/util.rb +1 -1
  15. data/test/haml/engine_test.rb +12 -51
  16. data/test/haml/helper_test.rb +8 -25
  17. data/test/haml/html2haml_test.rb +1 -1
  18. data/test/haml/results/whitespace_handling.xhtml +50 -46
  19. data/test/haml/template_test.rb +2 -28
  20. data/test/haml/templates/partial_layout.haml +1 -4
  21. data/test/linked_rails.rb +4 -4
  22. data/vendor/sass/VERSION +1 -1
  23. data/vendor/sass/doc-src/SASS_CHANGELOG.md +2 -115
  24. data/vendor/sass/doc-src/SASS_REFERENCE.md +4 -12
  25. data/vendor/sass/lib/sass.rb +0 -1
  26. data/vendor/sass/lib/sass/cache_stores/base.rb +1 -3
  27. data/vendor/sass/lib/sass/cache_stores/filesystem.rb +0 -2
  28. data/vendor/sass/lib/sass/css.rb +1 -2
  29. data/vendor/sass/lib/sass/engine.rb +23 -39
  30. data/vendor/sass/lib/sass/environment.rb +0 -11
  31. data/vendor/sass/lib/sass/exec.rb +1 -14
  32. data/vendor/sass/lib/sass/importers/base.rb +1 -2
  33. data/vendor/sass/lib/sass/importers/filesystem.rb +13 -18
  34. data/vendor/sass/lib/sass/less.rb +2 -2
  35. data/vendor/sass/lib/sass/plugin.rb +8 -4
  36. data/vendor/sass/lib/sass/plugin/compiler.rb +17 -42
  37. data/vendor/sass/lib/sass/plugin/configuration.rb +2 -0
  38. data/vendor/sass/lib/sass/railtie.rb +1 -1
  39. data/vendor/sass/lib/sass/script/funcall.rb +1 -14
  40. data/vendor/sass/lib/sass/script/functions.rb +1 -44
  41. data/vendor/sass/lib/sass/script/interpolation.rb +0 -9
  42. data/vendor/sass/lib/sass/script/lexer.rb +1 -6
  43. data/vendor/sass/lib/sass/script/list.rb +0 -7
  44. data/vendor/sass/lib/sass/script/literal.rb +0 -5
  45. data/vendor/sass/lib/sass/script/node.rb +0 -8
  46. data/vendor/sass/lib/sass/script/number.rb +5 -28
  47. data/vendor/sass/lib/sass/script/operation.rb +0 -8
  48. data/vendor/sass/lib/sass/script/parser.rb +5 -12
  49. data/vendor/sass/lib/sass/script/string_interpolation.rb +0 -9
  50. data/vendor/sass/lib/sass/script/unary_operation.rb +0 -7
  51. data/vendor/sass/lib/sass/script/variable.rb +0 -5
  52. data/vendor/sass/lib/sass/scss/parser.rb +38 -78
  53. data/vendor/sass/lib/sass/scss/rx.rb +1 -2
  54. data/vendor/sass/lib/sass/scss/static_parser.rb +2 -2
  55. data/vendor/sass/lib/sass/shared.rb +1 -1
  56. data/vendor/sass/lib/sass/tree/comment_node.rb +11 -24
  57. data/vendor/sass/lib/sass/tree/debug_node.rb +1 -1
  58. data/vendor/sass/lib/sass/tree/each_node.rb +1 -1
  59. data/vendor/sass/lib/sass/tree/extend_node.rb +1 -1
  60. data/vendor/sass/lib/sass/tree/for_node.rb +2 -2
  61. data/vendor/sass/lib/sass/tree/function_node.rb +1 -1
  62. data/vendor/sass/lib/sass/tree/if_node.rb +14 -1
  63. data/vendor/sass/lib/sass/tree/mixin_def_node.rb +1 -1
  64. data/vendor/sass/lib/sass/tree/mixin_node.rb +2 -2
  65. data/vendor/sass/lib/sass/tree/node.rb +5 -2
  66. data/vendor/sass/lib/sass/tree/prop_node.rb +9 -2
  67. data/vendor/sass/lib/sass/tree/return_node.rb +1 -1
  68. data/vendor/sass/lib/sass/tree/rule_node.rb +2 -9
  69. data/vendor/sass/lib/sass/tree/variable_node.rb +1 -1
  70. data/vendor/sass/lib/sass/tree/visitors/check_nesting.rb +18 -17
  71. data/vendor/sass/lib/sass/tree/visitors/convert.rb +5 -10
  72. data/vendor/sass/lib/sass/tree/visitors/perform.rb +19 -50
  73. data/vendor/sass/lib/sass/tree/visitors/to_css.rb +15 -9
  74. data/vendor/sass/lib/sass/tree/warn_node.rb +1 -1
  75. data/vendor/sass/lib/sass/tree/while_node.rb +1 -1
  76. data/vendor/sass/lib/sass/util.rb +6 -58
  77. data/vendor/sass/sass.gemspec +1 -2
  78. data/vendor/sass/test/sass/cache_test.rb +0 -15
  79. data/vendor/sass/test/sass/conversion_test.rb +6 -2
  80. data/vendor/sass/test/sass/css2sass_test.rb +0 -9
  81. data/vendor/sass/test/sass/engine_test.rb +26 -124
  82. data/vendor/sass/test/sass/functions_test.rb +0 -13
  83. data/vendor/sass/test/sass/importer_test.rb +0 -110
  84. data/vendor/sass/test/sass/plugin_test.rb +13 -16
  85. data/vendor/sass/test/sass/script_conversion_test.rb +0 -2
  86. data/vendor/sass/test/sass/script_test.rb +0 -18
  87. data/vendor/sass/test/sass/scss/css_test.rb +1 -7
  88. data/vendor/sass/test/sass/scss/scss_test.rb +13 -37
  89. data/vendor/sass/test/sass/test_helper.rb +1 -1
  90. data/vendor/sass/test/sass/util_test.rb +0 -12
  91. data/vendor/sass/vendor/fssm/LICENSE +1 -1
  92. data/vendor/sass/vendor/fssm/README.markdown +27 -55
  93. data/vendor/sass/vendor/fssm/Rakefile +54 -6
  94. data/vendor/sass/vendor/fssm/VERSION.yml +5 -0
  95. data/vendor/sass/vendor/fssm/example.rb +3 -6
  96. data/vendor/sass/vendor/fssm/fssm.gemspec +70 -17
  97. data/vendor/sass/vendor/fssm/lib/fssm.rb +3 -7
  98. data/vendor/sass/vendor/fssm/lib/fssm/backends/fsevents.rb +1 -1
  99. data/vendor/sass/vendor/fssm/lib/fssm/backends/inotify.rb +2 -2
  100. data/vendor/sass/vendor/fssm/lib/fssm/backends/polling.rb +2 -2
  101. data/vendor/sass/vendor/fssm/lib/fssm/backends/rubycocoa/fsevents.rb +10 -10
  102. data/vendor/sass/vendor/fssm/lib/fssm/monitor.rb +9 -19
  103. data/vendor/sass/vendor/fssm/lib/fssm/path.rb +21 -24
  104. data/vendor/sass/vendor/fssm/lib/fssm/pathname.rb +479 -13
  105. data/vendor/sass/vendor/fssm/lib/fssm/state/directory.rb +11 -29
  106. data/vendor/sass/vendor/fssm/lib/fssm/state/file.rb +1 -1
  107. data/vendor/sass/vendor/fssm/lib/fssm/support.rb +12 -41
  108. data/vendor/sass/vendor/fssm/lib/fssm/tree.rb +6 -6
  109. data/vendor/sass/vendor/fssm/profile/prof-cache.rb +3 -3
  110. data/vendor/sass/vendor/fssm/profile/prof-pathname.rb +7 -7
  111. data/vendor/sass/vendor/fssm/spec/path_spec.rb +15 -36
  112. data/vendor/sass/vendor/fssm/spec/spec_helper.rb +6 -6
  113. metadata +78 -125
  114. data/lib/haml/helpers/rails_323_textarea_fix.rb +0 -41
  115. data/test/gemfiles/Gemfile.rails-2.0.x +0 -8
  116. data/test/gemfiles/Gemfile.rails-2.0.x.lock +0 -38
  117. data/test/gemfiles/Gemfile.rails-2.1.x +0 -8
  118. data/test/gemfiles/Gemfile.rails-2.1.x.lock +0 -38
  119. data/test/gemfiles/Gemfile.rails-2.2.x +0 -8
  120. data/test/gemfiles/Gemfile.rails-2.2.x.lock +0 -38
  121. data/test/gemfiles/Gemfile.rails-2.3.x +0 -8
  122. data/test/gemfiles/Gemfile.rails-2.3.x.lock +0 -40
  123. data/test/gemfiles/Gemfile.rails-3.0.x +0 -8
  124. data/test/gemfiles/Gemfile.rails-3.0.x.lock +0 -85
  125. data/test/gemfiles/Gemfile.rails-3.1.x +0 -8
  126. data/test/gemfiles/Gemfile.rails-3.1.x.lock +0 -97
  127. data/test/gemfiles/Gemfile.rails-3.2.x +0 -8
  128. data/test/gemfiles/Gemfile.rails-3.2.x.lock +0 -95
  129. data/test/gemfiles/Gemfile.rails-xss-2.3.x +0 -9
  130. data/test/gemfiles/Gemfile.rails-xss-2.3.x.lock +0 -42
  131. data/vendor/sass/lib/sass/logger.rb +0 -15
  132. data/vendor/sass/lib/sass/logger/base.rb +0 -32
  133. data/vendor/sass/lib/sass/logger/log_level.rb +0 -49
  134. data/vendor/sass/lib/sass/tree/visitors/deep_copy.rb +0 -87
  135. data/vendor/sass/lib/sass/tree/visitors/set_options.rb +0 -97
  136. data/vendor/sass/test/Gemfile +0 -4
  137. data/vendor/sass/test/Gemfile.lock +0 -19
  138. data/vendor/sass/test/sass/fixtures/test_staleness_check_across_importers.css +0 -1
  139. data/vendor/sass/test/sass/fixtures/test_staleness_check_across_importers.scss +0 -1
  140. data/vendor/sass/test/sass/logger_test.rb +0 -58
  141. data/vendor/sass/test/sass/templates/bork5.sass +0 -3
  142. data/vendor/sass/test/sass/templates/nested_bork5.sass +0 -2
  143. data/vendor/sass/vendor/fssm/Gemfile +0 -3
  144. data/vendor/sass/vendor/fssm/lib/fssm/backends/rbfsevent.rb +0 -42
  145. data/vendor/sass/vendor/fssm/lib/fssm/version.rb +0 -3
  146. data/vendor/sass/vendor/fssm/profile/prof-pathname-rubinius.rb +0 -35
  147. data/vendor/sass/vendor/fssm/spec/count_down_latch.rb +0 -151
  148. data/vendor/sass/vendor/fssm/spec/monitor_spec.rb +0 -202
@@ -965,19 +965,6 @@ MSG
965
965
  assert_error_message("Separator name must be space, comma, or auto for `append'", "append(1, 2, baboon)")
966
966
  end
967
967
 
968
- def test_zip
969
- assert_equal("1 3 5, 2 4 6", evaluate("zip(1 2, 3 4, 5 6)"))
970
- assert_equal("1 4 7, 2 5 8", evaluate("zip(1 2 3, 4 5 6, 7 8)"))
971
- end
972
-
973
- def test_index
974
- assert_equal("1", evaluate("index(1px solid blue, 1px)"))
975
- assert_equal("2", evaluate("index(1px solid blue, solid)"))
976
- assert_equal("3", evaluate("index(1px solid blue, #00f)"))
977
- assert_equal("false", evaluate("index(1px solid blue, 1em)"))
978
- assert_equal("false", evaluate("index(1px solid blue, notfound)"))
979
- end
980
-
981
968
  def test_if
982
969
  assert_equal("1px", evaluate("if(true, 1px, 2px)"))
983
970
  assert_equal("2px", evaluate("if(false, 1px, 2px)"))
@@ -2,8 +2,6 @@
2
2
  require File.dirname(__FILE__) + '/../test_helper'
3
3
  require File.dirname(__FILE__) + '/test_helper'
4
4
 
5
- require 'sass/plugin'
6
-
7
5
  class ImporterTest < Test::Unit::TestCase
8
6
 
9
7
  class FruitImporter < Sass::Importers::Base
@@ -40,72 +38,6 @@ class ImporterTest < Test::Unit::TestCase
40
38
  end
41
39
  end
42
40
 
43
- # This importer maps one import to another import
44
- # based on the mappings passed to importer's constructor.
45
- class IndirectImporter < Sass::Importers::Base
46
- def initialize(mappings, mtimes)
47
- @mappings = mappings
48
- @mtimes = mtimes
49
- end
50
- def find_relative(uri, base, options)
51
- nil
52
- end
53
- def find(name, options)
54
- if @mappings.has_key?(name)
55
- Sass::Engine.new(
56
- %Q[@import "#{@mappings[name]}";],
57
- options.merge(
58
- :filename => name,
59
- :syntax => :scss,
60
- :importer => self
61
- )
62
- )
63
- end
64
- end
65
- def mtime(uri, options)
66
- @mtimes.fetch(uri, @mtimes.has_key?(uri) ? Time.now : nil)
67
- end
68
- def key(uri, options)
69
- [self.class.name, uri]
70
- end
71
- def to_s
72
- "IndirectImporter(#{@mappings.keys.join(", ")})"
73
- end
74
- end
75
-
76
- # This importer maps the import to single class
77
- # based on the mappings passed to importer's constructor.
78
- class ClassImporter < Sass::Importers::Base
79
- def initialize(mappings, mtimes)
80
- @mappings = mappings
81
- @mtimes = mtimes
82
- end
83
- def find_relative(uri, base, options)
84
- nil
85
- end
86
- def find(name, options)
87
- if @mappings.has_key?(name)
88
- Sass::Engine.new(
89
- %Q[.#{name}{#{@mappings[name]}}],
90
- options.merge(
91
- :filename => name,
92
- :syntax => :scss,
93
- :importer => self
94
- )
95
- )
96
- end
97
- end
98
- def mtime(uri, options)
99
- @mtimes.fetch(uri, @mtimes.has_key?(uri) ? Time.now : nil)
100
- end
101
- def key(uri, options)
102
- [self.class.name, uri]
103
- end
104
- def to_s
105
- "ClassImporter(#{@mappings.keys.join(", ")})"
106
- end
107
- end
108
-
109
41
  def test_can_resolve_generated_imports
110
42
  scss_file = %Q{
111
43
  $pear-color: green;
@@ -147,46 +79,4 @@ CSS
147
79
  ensure
148
80
  FileUtils.rm_rf(absolutize("tmp"))
149
81
  end
150
-
151
- def test_staleness_check_across_importers
152
- file_system_importer = Sass::Importers::Filesystem.new(fixture_dir)
153
- # Make sure the first import is older
154
- indirect_importer = IndirectImporter.new({"apple" => "pear"}, {"apple" => Time.now - 1})
155
- # Make css file is newer so the dependencies are the only way for the css file to be out of date.
156
- FileUtils.touch(fixture_file("test_staleness_check_across_importers.css"))
157
- # Make sure the first import is older
158
- class_importer = ClassImporter.new({"pear" => %Q{color: green;}}, {"pear" => Time.now + 1})
159
-
160
- options = {
161
- :style => :compact,
162
- :filename => fixture_file("test_staleness_check_across_importers.scss"),
163
- :importer => file_system_importer,
164
- :load_paths => [file_system_importer, indirect_importer, class_importer],
165
- :syntax => :scss
166
- }
167
-
168
- assert_equal File.read(fixture_file("test_staleness_check_across_importers.css")),
169
- Sass::Engine.new(File.read(fixture_file("test_staleness_check_across_importers.scss")), options).render
170
-
171
- checker = Sass::Plugin::StalenessChecker.new(options)
172
-
173
- assert checker.stylesheet_needs_update?(
174
- fixture_file("test_staleness_check_across_importers.css"),
175
- fixture_file("test_staleness_check_across_importers.scss"),
176
- file_system_importer
177
- )
178
- end
179
-
180
- def fixture_dir
181
- File.join(File.dirname(__FILE__), "fixtures")
182
- end
183
-
184
- def fixture_file(path)
185
- File.join(fixture_dir, path)
186
- end
187
-
188
- def test_absolute_files_across_template_locations
189
- importer = Sass::Importers::Filesystem.new(absolutize 'templates')
190
- assert_not_nil importer.mtime(absolutize('more_templates/more1.sass'), {})
191
- end
192
82
  end
@@ -183,7 +183,6 @@ CSS
183
183
 
184
184
  def test_updating_stylesheets_callback
185
185
  # Should run even when there's nothing to update
186
- Sass::Plugin.options[:template_location] = nil
187
186
  assert_callback :updating_stylesheets, []
188
187
  end
189
188
 
@@ -197,25 +196,25 @@ CSS
197
196
  assert_no_callback :updating_stylesheets
198
197
  end
199
198
 
200
- def test_updated_stylesheet_callback_for_updated_template
199
+ def test_updating_stylesheet_callback_for_updated_template
201
200
  Sass::Plugin.options[:always_update] = false
202
201
  touch 'basic'
203
- assert_no_callback :updated_stylesheet, template_loc("complex"), tempfile_loc("complex") do
202
+ assert_no_callback :updating_stylesheet, template_loc("complex"), tempfile_loc("complex") do
204
203
  assert_callbacks(
205
- [:updated_stylesheet, template_loc("basic"), tempfile_loc("basic")],
206
- [:updated_stylesheet, template_loc("import"), tempfile_loc("import")])
204
+ [:updating_stylesheet, template_loc("basic"), tempfile_loc("basic")],
205
+ [:updating_stylesheet, template_loc("import"), tempfile_loc("import")])
207
206
  end
208
207
  end
209
208
 
210
- def test_updated_stylesheet_callback_for_fresh_template
209
+ def test_updating_stylesheet_callback_for_fresh_template
211
210
  Sass::Plugin.options[:always_update] = false
212
- assert_no_callback :updated_stylesheet
211
+ assert_no_callback :updating_stylesheet
213
212
  end
214
213
 
215
- def test_updated_stylesheet_callback_for_error_template
214
+ def test_updating_stylesheet_callback_for_error_template
216
215
  Sass::Plugin.options[:always_update] = false
217
216
  touch 'bork1'
218
- assert_no_callback :updated_stylesheet
217
+ assert_no_callback :updating_stylesheet
219
218
  end
220
219
 
221
220
  def test_not_updating_stylesheet_callback_for_fresh_template
@@ -227,8 +226,8 @@ CSS
227
226
  Sass::Plugin.options[:always_update] = false
228
227
  assert_callback :not_updating_stylesheet, template_loc("complex"), tempfile_loc("complex") do
229
228
  assert_no_callbacks(
230
- [:updated_stylesheet, template_loc("basic"), tempfile_loc("basic")],
231
- [:updated_stylesheet, template_loc("import"), tempfile_loc("import")])
229
+ [:updating_stylesheet, template_loc("basic"), tempfile_loc("basic")],
230
+ [:updating_stylesheet, template_loc("import"), tempfile_loc("import")])
232
231
  end
233
232
  end
234
233
 
@@ -348,11 +347,9 @@ CSS
348
347
 
349
348
  def assert_callback(name, *expected_args)
350
349
  run = false
351
- received_args = nil
352
350
  Sass::Plugin.send("on_#{name}") do |*args|
353
- received_args = args
354
- run ||= expected_args.zip(received_args).all? do |ea, ra|
355
- ea.respond_to?(:call) ? ea.call(ra) : ea == ra
351
+ run ||= expected_args.zip(args).all? do |ea, a|
352
+ ea.respond_to?(:call) ? ea.call(a) : ea == a
356
353
  end
357
354
  end
358
355
 
@@ -362,7 +359,7 @@ CSS
362
359
  check_for_updates!
363
360
  end
364
361
 
365
- assert run, "Expected #{name} callback to be run with arguments:\n #{expected_args.inspect}\nHowever, it got:\n #{received_args.inspect}"
362
+ assert run, "Expected #{name} callback to be run with arguments:\n #{expected_args.inspect}"
366
363
  end
367
364
 
368
365
  def assert_no_callback(name, *unexpected_args)
@@ -223,8 +223,6 @@ RUBY
223
223
  assert_renders '#{1 + 2}, #{3 + 4}'
224
224
  assert_renders '#{1 + 2} ,#{3 + 4}'
225
225
  assert_renders '#{1 + 2},#{3 + 4}'
226
- assert_renders '#{1 + 2}, #{3 + 4}, #{5 + 6}'
227
- assert_renders '3, #{3 + 4}, 11'
228
226
 
229
227
  assert_renders '3 / #{3 + 4}'
230
228
  assert_renders '3 /#{3 + 4}'
@@ -7,14 +7,6 @@ module Sass::Script::Functions::UserFunctions
7
7
  val.options[:foo]
8
8
  Sass::Script::String.new("Options defined!")
9
9
  end
10
-
11
- def arg_error
12
- assert_options
13
- end
14
- end
15
-
16
- module Sass::Script::Functions
17
- include Sass::Script::Functions::UserFunctions
18
10
  end
19
11
 
20
12
  class SassScriptTest < Test::Unit::TestCase
@@ -138,8 +130,6 @@ class SassScriptTest < Test::Unit::TestCase
138
130
  assert_equal '3, 7', resolve('#{1 + 2}, #{3 + 4}')
139
131
  assert_equal '3 ,7', resolve('#{1 + 2} ,#{3 + 4}')
140
132
  assert_equal '3,7', resolve('#{1 + 2},#{3 + 4}')
141
- assert_equal '3, 7, 11', resolve('#{1 + 2}, #{3 + 4}, #{5 + 6}')
142
- assert_equal '3, 7, 11', resolve('3, #{3 + 4}, 11')
143
133
 
144
134
  assert_equal '3 / 7', resolve('3 / #{3 + 4}')
145
135
  assert_equal '3 /7', resolve('3 /#{3 + 4}')
@@ -424,14 +414,6 @@ SASS
424
414
  assert_raise_message(Sass::SyntaxError, "() isn't a valid CSS value.") {resolve("nth(append((), ()), 1)")}
425
415
  end
426
416
 
427
- def test_deep_argument_error_not_unwrapped
428
- assert_raise_message(ArgumentError, 'wrong number of arguments (0 for 1)') {resolve("arg-error()")}
429
- end
430
-
431
- def test_shallow_argument_error_unwrapped
432
- assert_raise_message(Sass::SyntaxError, "wrong number of arguments (1 for 0) for `arg-error'") {resolve("arg-error(1)")}
433
- end
434
-
435
417
  # Regression Tests
436
418
 
437
419
  def test_funcall_has_higher_precedence_than_color_name
@@ -800,12 +800,6 @@ SCSS
800
800
  assert_selector_parses('E*:hover')
801
801
  end
802
802
 
803
- def test_spaceless_combo_selectors
804
- assert_equal "E > F {\n a: b; }\n", render("E>F { a: b;} ")
805
- assert_equal "E ~ F {\n a: b; }\n", render("E~F { a: b;} ")
806
- assert_equal "E + F {\n a: b; }\n", render("E+F { a: b;} ")
807
- end
808
-
809
803
  ## Errors
810
804
 
811
805
  def test_invalid_directives
@@ -915,7 +909,7 @@ SCSS
915
909
  end
916
910
 
917
911
  def render(scss, options = {})
918
- tree = Sass::SCSS::CssParser.new(scss, options[:filename]).parse
912
+ tree = Sass::SCSS::CssParser.new(scss).parse
919
913
  tree.options = Sass::Engine::DEFAULT_OPTIONS.merge(options)
920
914
  tree.render
921
915
  end
@@ -118,11 +118,11 @@ SCSS
118
118
  def test_warn_directive
119
119
  expected_warning = <<EXPECTATION
120
120
  WARNING: this is a warning
121
- on line 2 of test_warn_directive_inline.scss
121
+ on line 2 of test_warn_directive_inline.scss
122
122
 
123
123
  WARNING: this is a mixin
124
- on line 1 of test_warn_directive_inline.scss, in `foo'
125
- from line 3 of test_warn_directive_inline.scss
124
+ on line 1 of test_warn_directive_inline.scss, in `foo'
125
+ from line 3 of test_warn_directive_inline.scss
126
126
  EXPECTATION
127
127
  assert_warning expected_warning do
128
128
  assert_equal <<CSS, render(<<SCSS)
@@ -892,8 +892,7 @@ SCSS
892
892
  end
893
893
 
894
894
  def test_uses_property_exception_with_star_hack
895
- # Silence the "beginning of selector" warning
896
- Sass::Util.silence_warnings {render <<SCSS}
895
+ render <<SCSS
897
896
  foo {
898
897
  *bar:baz [fail]; }
899
898
  SCSS
@@ -1030,10 +1029,11 @@ SCSS
1030
1029
  end
1031
1030
 
1032
1031
  def test_parent_in_mid_selector_error
1033
- assert_raise_message(Sass::SyntaxError, <<MESSAGE.rstrip) {render <<SCSS}
1032
+ assert_raise_message(Sass::SyntaxError, <<MESSAGE) {render <<SCSS}
1034
1033
  Invalid CSS after ".foo": expected "{", was "&.bar"
1035
1034
 
1036
- "&" may only be used at the beginning of a selector.
1035
+ In Sass 3, the parent selector & can only be used where element names are valid,
1036
+ since it could potentially be replaced by an element name.
1037
1037
  MESSAGE
1038
1038
  flim {
1039
1039
  .foo&.bar {a: b}
@@ -1042,10 +1042,11 @@ SCSS
1042
1042
  end
1043
1043
 
1044
1044
  def test_parent_in_mid_selector_error
1045
- assert_raise_message(Sass::SyntaxError, <<MESSAGE.rstrip) {render <<SCSS}
1045
+ assert_raise_message(Sass::SyntaxError, <<MESSAGE) {render <<SCSS}
1046
1046
  Invalid CSS after " .foo.bar": expected "{", was "& {a: b}"
1047
1047
 
1048
- "&" may only be used at the beginning of a selector.
1048
+ In Sass 3, the parent selector & can only be used where element names are valid,
1049
+ since it could potentially be replaced by an element name.
1049
1050
  MESSAGE
1050
1051
  flim {
1051
1052
  .foo.bar& {a: b}
@@ -1054,10 +1055,11 @@ SCSS
1054
1055
  end
1055
1056
 
1056
1057
  def test_double_parent_selector_error
1057
- assert_raise_message(Sass::SyntaxError, <<MESSAGE.rstrip) {render <<SCSS}
1058
+ assert_raise_message(Sass::SyntaxError, <<MESSAGE) {render <<SCSS}
1058
1059
  Invalid CSS after " &": expected "{", was "& {a: b}"
1059
1060
 
1060
- "&" may only be used at the beginning of a selector.
1061
+ In Sass 3, the parent selector & can only be used where element names are valid,
1062
+ since it could potentially be replaced by an element name.
1061
1063
  MESSAGE
1062
1064
  flim {
1063
1065
  && {a: b}
@@ -1095,24 +1097,6 @@ SCSS
1095
1097
 
1096
1098
  # Regression
1097
1099
 
1098
- def test_prop_name_interpolation_after_hyphen
1099
- assert_equal <<CSS, render(<<SCSS)
1100
- a {
1101
- -foo-bar: b; }
1102
- CSS
1103
- a { -\#{"foo"}-bar: b; }
1104
- SCSS
1105
- end
1106
-
1107
- def test_star_plus_and_parent
1108
- assert_equal <<CSS, render(<<SCSS)
1109
- * + html foo {
1110
- a: b; }
1111
- CSS
1112
- foo {*+html & {a: b}}
1113
- SCSS
1114
- end
1115
-
1116
1100
  def test_weird_added_space
1117
1101
  assert_equal <<CSS, render(<<SCSS)
1118
1102
  foo {
@@ -1260,14 +1244,6 @@ foo {
1260
1244
  a: $var1;
1261
1245
  b: $var2;
1262
1246
  c: $var3; }
1263
- SCSS
1264
- end
1265
-
1266
- def test_options_passed_to_script
1267
- assert_equal <<CSS, render(<<SCSS, :style => :compressed)
1268
- foo{color:#000}
1269
- CSS
1270
- foo {color: darken(black, 10%)}
1271
1247
  SCSS
1272
1248
  end
1273
1249
  end
@@ -3,6 +3,6 @@ $:.unshift test_dir unless $:.include?(test_dir)
3
3
 
4
4
  class Test::Unit::TestCase
5
5
  def absolutize(file)
6
- File.expand_path("#{File.dirname(__FILE__)}/#{file}")
6
+ "#{File.dirname(__FILE__)}/#{file}"
7
7
  end
8
8
  end
@@ -208,18 +208,6 @@ class UtilTest < Test::Unit::TestCase
208
208
  assert(set_eql?(s1, s2))
209
209
  end
210
210
 
211
- def test_extract_and_inject_values
212
- test = lambda {|arr| assert_equal(arr, with_extracted_values(arr) {|str| str})}
213
-
214
- test[['foo bar']]
215
- test[['foo {12} bar']]
216
- test[['foo {{12} bar']]
217
- test[['foo {{1', 12, '2} bar']]
218
- test[['foo 1', 2, '{3', 4, 5, 6, '{7}', 8]]
219
- test[['foo 1', [2, 3, 4], ' bar']]
220
- test[['foo ', 1, "\n bar\n", [2, 3, 4], "\n baz"]]
221
- end
222
-
223
211
  def test_caller_info
224
212
  assert_equal(["/tmp/foo.rb", 12, "fizzle"], caller_info("/tmp/foo.rb:12: in `fizzle'"))
225
213
  assert_equal(["/tmp/foo.rb", 12, nil], caller_info("/tmp/foo.rb:12"))
@@ -1,4 +1,4 @@
1
- Copyright (c) 2011 Travis Tilley
1
+ Copyright (c) 2009 Travis Tilley
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
@@ -1,5 +1,3 @@
1
- # FSSM ![project status](http://stillmaintained.com/ttilley/fssm.png) #
2
-
3
1
  Monitor API
4
2
  ===========
5
3
 
@@ -14,70 +12,44 @@ Monitor with path
14
12
 
15
13
  This form watches one path, and enters the run loop automatically. The first parameter is the path to watch, and the second parameter is an optional glob pattern or array of glob patterns that a file must match in order to trigger a callback. The default glob, if ommitted, is `'**/*'`.
16
14
 
17
- FSSM.monitor('/some/directory/', '**/*') do
18
- update {|base, relative|}
19
- delete {|base, relative|}
20
- create {|base, relative|}
21
- end
15
+ FSSM.monitor('/some/directory/', '**/*') do
16
+ update {|base, relative|}
17
+ delete {|base, relative|}
18
+ create {|base, relative|}
19
+ end
22
20
 
23
21
  Monitor with block
24
22
  ------------------
25
23
 
26
24
  This form watches one or more paths, and enters the run loop automatically. The glob configuration call can be ommitted, and defaults to `'**/*'`.
27
25
 
28
- FSSM.monitor do
29
- path '/some/directory/' do
30
- glob '**/*.yml'
31
-
32
- update {|base, relative|}
33
- delete {|base, relative|}
34
- create {|base, relative|}
35
- end
36
-
37
- path '/some/other/directory/' do
38
- update {|base, relative|}
39
- delete {|base, relative|}
40
- create {|base, relative|}
41
- end
42
- end
26
+ FSSM.monitor do
27
+ path '/some/directory/' do
28
+ glob '**/*.yml'
29
+
30
+ update {|base, relative|}
31
+ delete {|base, relative|}
32
+ create {|base, relative|}
33
+ end
34
+
35
+ path '/some/other/directory/' do
36
+ update {|base, relative|}
37
+ delete {|base, relative|}
38
+ create {|base, relative|}
39
+ end
40
+ end
43
41
 
44
42
  Monitor object
45
43
  --------------
46
44
 
47
45
  This form doesn't enter the run loop automatically.
48
46
 
49
- monitor = FSSM::Monitor.new
50
-
51
- monitor.path '/some/directory/' do
52
- update {|base, relative|}
53
- delete {|base, relative|}
54
- create {|base, relative|}
55
- end
56
-
57
- monitor.run
58
-
59
- Monitoring directories
60
- ----------------------
61
-
62
- By default, FSSM monitors changes in files only. To enable monitoring of files and directories, pass option `directories => true` in a hash to the monitor. Please note that this may not work as expected in all backends. For example:
63
-
64
- FSSM::Monitor.new(:directories => true)
65
- FSSM.monitor(dir, file_glob, :directories => true)
66
-
67
- When directories are monitored, there's an additional third argument to the callbacks. Instead of
68
-
69
- FSSM.monitor('/some/directory/', '**/*') do
70
- update {|base, relative|}
71
- delete {|base, relative|}
72
- create {|base, relative|}
73
- end
74
-
75
- you get this:
47
+ monitor = FSSM::Monitor.new
76
48
 
77
- FSSM.monitor('/some/directory/', '**/*', :directories => true) do
78
- update {|base, relative, type|}
79
- delete {|base, relative, type|}
80
- create {|base, relative, type|}
81
- end
49
+ monitor.path '/some/directory/' do
50
+ update {|base, relative|}
51
+ delete {|base, relative|}
52
+ create {|base, relative|}
53
+ end
82
54
 
83
- The value of `type` argument is either `:file` or `:directory`.
55
+ monitor.run