sass 3.1.21 → 3.2.0.alpha.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (180) hide show
  1. data/README.md +5 -4
  2. data/REVISION +1 -1
  3. data/Rakefile +6 -15
  4. data/VERSION +1 -1
  5. data/VERSION_NAME +1 -1
  6. data/lib/sass.rb +0 -1
  7. data/lib/sass/cache_stores/base.rb +1 -3
  8. data/lib/sass/cache_stores/filesystem.rb +0 -3
  9. data/lib/sass/css.rb +49 -145
  10. data/lib/sass/engine.rb +23 -47
  11. data/lib/sass/environment.rb +5 -30
  12. data/lib/sass/exec.rb +7 -30
  13. data/lib/sass/importers/base.rb +1 -2
  14. data/lib/sass/importers/filesystem.rb +13 -18
  15. data/lib/sass/less.rb +1 -1
  16. data/lib/sass/plugin.rb +8 -4
  17. data/lib/sass/plugin/compiler.rb +67 -93
  18. data/lib/sass/plugin/configuration.rb +2 -0
  19. data/lib/sass/plugin/staleness_checker.rb +4 -14
  20. data/lib/sass/repl.rb +3 -2
  21. data/lib/sass/script.rb +1 -0
  22. data/lib/sass/script/color.rb +9 -4
  23. data/lib/sass/script/funcall.rb +3 -16
  24. data/lib/sass/script/functions.rb +55 -98
  25. data/lib/sass/script/interpolation.rb +0 -9
  26. data/lib/sass/script/lexer.rb +4 -2
  27. data/lib/sass/script/list.rb +0 -8
  28. data/lib/sass/script/literal.rb +20 -5
  29. data/lib/sass/script/node.rb +0 -8
  30. data/lib/sass/script/number.rb +11 -35
  31. data/lib/sass/script/operation.rb +0 -16
  32. data/lib/sass/script/parser.rb +5 -12
  33. data/lib/sass/script/string_interpolation.rb +0 -9
  34. data/lib/sass/script/unary_operation.rb +0 -7
  35. data/lib/sass/script/variable.rb +1 -5
  36. data/lib/sass/scss/parser.rb +54 -191
  37. data/lib/sass/scss/rx.rb +3 -15
  38. data/lib/sass/scss/static_parser.rb +3 -3
  39. data/lib/sass/selector.rb +3 -15
  40. data/lib/sass/selector/abstract_sequence.rb +2 -11
  41. data/lib/sass/selector/comma_sequence.rb +3 -8
  42. data/lib/sass/selector/sequence.rb +11 -74
  43. data/lib/sass/selector/simple.rb +1 -7
  44. data/lib/sass/selector/simple_sequence.rb +8 -28
  45. data/lib/sass/shared.rb +5 -3
  46. data/lib/sass/tree/comment_node.rb +12 -25
  47. data/lib/sass/tree/debug_node.rb +1 -1
  48. data/lib/sass/tree/directive_node.rb +0 -5
  49. data/lib/sass/tree/each_node.rb +1 -1
  50. data/lib/sass/tree/extend_node.rb +1 -1
  51. data/lib/sass/tree/for_node.rb +2 -2
  52. data/lib/sass/tree/function_node.rb +1 -1
  53. data/lib/sass/tree/if_node.rb +14 -1
  54. data/lib/sass/tree/media_node.rb +4 -4
  55. data/lib/sass/tree/mixin_def_node.rb +1 -1
  56. data/lib/sass/tree/mixin_node.rb +2 -2
  57. data/lib/sass/tree/node.rb +26 -10
  58. data/lib/sass/tree/return_node.rb +1 -1
  59. data/lib/sass/tree/root_node.rb +1 -1
  60. data/lib/sass/tree/rule_node.rb +11 -9
  61. data/lib/sass/tree/variable_node.rb +1 -1
  62. data/lib/sass/tree/visitors/base.rb +1 -1
  63. data/lib/sass/tree/visitors/check_nesting.rb +36 -29
  64. data/lib/sass/tree/visitors/convert.rb +9 -16
  65. data/lib/sass/tree/visitors/cssize.rb +9 -40
  66. data/lib/sass/tree/visitors/perform.rb +23 -79
  67. data/lib/sass/tree/visitors/to_css.rb +21 -23
  68. data/lib/sass/tree/warn_node.rb +1 -1
  69. data/lib/sass/tree/while_node.rb +1 -1
  70. data/lib/sass/util.rb +9 -147
  71. data/lib/sass/version.rb +0 -14
  72. data/test/sass/cache_test.rb +0 -15
  73. data/test/sass/conversion_test.rb +8 -50
  74. data/test/sass/css2sass_test.rb +0 -33
  75. data/test/sass/engine_test.rb +32 -283
  76. data/test/sass/extend_test.rb +0 -315
  77. data/test/sass/functions_test.rb +23 -60
  78. data/test/sass/importer_test.rb +0 -110
  79. data/test/sass/more_results/more_import.css +2 -2
  80. data/test/sass/plugin_test.rb +13 -40
  81. data/test/sass/results/import.css +2 -2
  82. data/test/sass/results/import_charset.css +0 -1
  83. data/test/sass/results/import_charset_1_8.css +0 -1
  84. data/test/sass/results/import_charset_ibm866.css +0 -1
  85. data/test/sass/results/scss_import.css +2 -2
  86. data/test/sass/results/units.css +1 -1
  87. data/test/sass/script_conversion_test.rb +0 -2
  88. data/test/sass/script_test.rb +4 -28
  89. data/test/sass/scss/css_test.rb +1 -79
  90. data/test/sass/scss/scss_test.rb +16 -96
  91. data/test/sass/templates/import_charset.sass +0 -2
  92. data/test/sass/templates/import_charset_1_8.sass +0 -2
  93. data/test/sass/templates/import_charset_ibm866.sass +0 -2
  94. data/test/sass/test_helper.rb +1 -1
  95. data/test/sass/util_test.rb +0 -28
  96. data/test/test_helper.rb +0 -2
  97. data/vendor/{listen → fssm}/LICENSE +1 -1
  98. data/vendor/fssm/README.markdown +55 -0
  99. data/vendor/fssm/Rakefile +59 -0
  100. data/vendor/fssm/VERSION.yml +5 -0
  101. data/vendor/fssm/example.rb +9 -0
  102. data/vendor/fssm/fssm.gemspec +77 -0
  103. data/vendor/fssm/lib/fssm.rb +33 -0
  104. data/vendor/fssm/lib/fssm/backends/fsevents.rb +36 -0
  105. data/vendor/fssm/lib/fssm/backends/inotify.rb +26 -0
  106. data/vendor/fssm/lib/fssm/backends/polling.rb +25 -0
  107. data/vendor/fssm/lib/fssm/backends/rubycocoa/fsevents.rb +131 -0
  108. data/vendor/fssm/lib/fssm/monitor.rb +26 -0
  109. data/vendor/fssm/lib/fssm/path.rb +91 -0
  110. data/vendor/fssm/lib/fssm/pathname.rb +502 -0
  111. data/vendor/fssm/lib/fssm/state/directory.rb +57 -0
  112. data/vendor/fssm/lib/fssm/state/file.rb +24 -0
  113. data/vendor/fssm/lib/fssm/support.rb +63 -0
  114. data/vendor/fssm/lib/fssm/tree.rb +176 -0
  115. data/vendor/fssm/profile/prof-cache.rb +40 -0
  116. data/vendor/fssm/profile/prof-fssm-pathname.html +1231 -0
  117. data/vendor/fssm/profile/prof-pathname.rb +68 -0
  118. data/vendor/fssm/profile/prof-plain-pathname.html +988 -0
  119. data/vendor/fssm/profile/prof.html +2379 -0
  120. data/vendor/fssm/spec/path_spec.rb +75 -0
  121. data/vendor/fssm/spec/root/duck/quack.txt +0 -0
  122. data/vendor/fssm/spec/root/file.css +0 -0
  123. data/vendor/fssm/spec/root/file.rb +0 -0
  124. data/vendor/fssm/spec/root/file.yml +0 -0
  125. data/vendor/fssm/spec/root/moo/cow.txt +0 -0
  126. data/vendor/fssm/spec/spec_helper.rb +14 -0
  127. metadata +246 -281
  128. data/VERSION_DATE +0 -1
  129. data/lib/sass/logger.rb +0 -15
  130. data/lib/sass/logger/base.rb +0 -32
  131. data/lib/sass/logger/log_level.rb +0 -49
  132. data/lib/sass/tree/visitors/deep_copy.rb +0 -87
  133. data/lib/sass/tree/visitors/extend.rb +0 -42
  134. data/lib/sass/tree/visitors/set_options.rb +0 -97
  135. data/lib/sass/util/multibyte_string_scanner.rb +0 -134
  136. data/test/Gemfile +0 -4
  137. data/test/Gemfile.lock +0 -19
  138. data/test/sass/fixtures/test_staleness_check_across_importers.css +0 -1
  139. data/test/sass/fixtures/test_staleness_check_across_importers.scss +0 -1
  140. data/test/sass/logger_test.rb +0 -58
  141. data/test/sass/templates/_double_import_loop2.sass +0 -1
  142. data/test/sass/templates/bork5.sass +0 -3
  143. data/test/sass/templates/double_import_loop1.sass +0 -1
  144. data/test/sass/templates/nested_bork5.sass +0 -2
  145. data/test/sass/templates/single_import_loop.sass +0 -1
  146. data/test/sass/util/multibyte_string_scanner_test.rb +0 -147
  147. data/vendor/listen/CHANGELOG.md +0 -147
  148. data/vendor/listen/Gemfile +0 -23
  149. data/vendor/listen/Guardfile +0 -8
  150. data/vendor/listen/README.md +0 -312
  151. data/vendor/listen/Rakefile +0 -47
  152. data/vendor/listen/Vagrantfile +0 -96
  153. data/vendor/listen/lib/listen.rb +0 -38
  154. data/vendor/listen/lib/listen/adapter.rb +0 -167
  155. data/vendor/listen/lib/listen/adapters/darwin.rb +0 -84
  156. data/vendor/listen/lib/listen/adapters/linux.rb +0 -110
  157. data/vendor/listen/lib/listen/adapters/polling.rb +0 -66
  158. data/vendor/listen/lib/listen/adapters/windows.rb +0 -81
  159. data/vendor/listen/lib/listen/directory_record.rb +0 -318
  160. data/vendor/listen/lib/listen/listener.rb +0 -203
  161. data/vendor/listen/lib/listen/multi_listener.rb +0 -121
  162. data/vendor/listen/lib/listen/turnstile.rb +0 -28
  163. data/vendor/listen/lib/listen/version.rb +0 -3
  164. data/vendor/listen/listen.gemspec +0 -26
  165. data/vendor/listen/spec/listen/adapter_spec.rb +0 -142
  166. data/vendor/listen/spec/listen/adapters/darwin_spec.rb +0 -31
  167. data/vendor/listen/spec/listen/adapters/linux_spec.rb +0 -41
  168. data/vendor/listen/spec/listen/adapters/polling_spec.rb +0 -68
  169. data/vendor/listen/spec/listen/adapters/windows_spec.rb +0 -24
  170. data/vendor/listen/spec/listen/directory_record_spec.rb +0 -1138
  171. data/vendor/listen/spec/listen/listener_spec.rb +0 -155
  172. data/vendor/listen/spec/listen/multi_listener_spec.rb +0 -156
  173. data/vendor/listen/spec/listen/turnstile_spec.rb +0 -56
  174. data/vendor/listen/spec/listen_spec.rb +0 -73
  175. data/vendor/listen/spec/spec_helper.rb +0 -18
  176. data/vendor/listen/spec/support/adapter_helper.rb +0 -716
  177. data/vendor/listen/spec/support/directory_record_helper.rb +0 -55
  178. data/vendor/listen/spec/support/fixtures_helper.rb +0 -29
  179. data/vendor/listen/spec/support/listeners_helper.rb +0 -144
  180. data/vendor/listen/spec/support/platform_helper.rb +0 -11
@@ -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)
@@ -830,16 +830,6 @@ $zzz: zzz;
830
830
  SCSS
831
831
  end
832
832
 
833
- def test_selector_interpolation_at_attr_end
834
- assert_equal <<CSS, render(<<SCSS)
835
- [foo=zzz] {
836
- a: b; }
837
- CSS
838
- $zzz: zzz;
839
- [foo=\#{$zzz}] { a: b; }
840
- SCSS
841
- end
842
-
843
833
  def test_selector_interpolation_at_dashes
844
834
  assert_equal <<CSS, render(<<SCSS)
845
835
  div {
@@ -902,8 +892,7 @@ SCSS
902
892
  end
903
893
 
904
894
  def test_uses_property_exception_with_star_hack
905
- # Silence the "beginning of selector" warning
906
- Sass::Util.silence_warnings {render <<SCSS}
895
+ render <<SCSS
907
896
  foo {
908
897
  *bar:baz [fail]; }
909
898
  SCSS
@@ -1040,10 +1029,11 @@ SCSS
1040
1029
  end
1041
1030
 
1042
1031
  def test_parent_in_mid_selector_error
1043
- assert_raise_message(Sass::SyntaxError, <<MESSAGE.rstrip) {render <<SCSS}
1032
+ assert_raise_message(Sass::SyntaxError, <<MESSAGE) {render <<SCSS}
1044
1033
  Invalid CSS after ".foo": expected "{", was "&.bar"
1045
1034
 
1046
- "&" 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.
1047
1037
  MESSAGE
1048
1038
  flim {
1049
1039
  .foo&.bar {a: b}
@@ -1052,10 +1042,11 @@ SCSS
1052
1042
  end
1053
1043
 
1054
1044
  def test_parent_in_mid_selector_error
1055
- assert_raise_message(Sass::SyntaxError, <<MESSAGE.rstrip) {render <<SCSS}
1045
+ assert_raise_message(Sass::SyntaxError, <<MESSAGE) {render <<SCSS}
1056
1046
  Invalid CSS after " .foo.bar": expected "{", was "& {a: b}"
1057
1047
 
1058
- "&" 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.
1059
1050
  MESSAGE
1060
1051
  flim {
1061
1052
  .foo.bar& {a: b}
@@ -1064,10 +1055,11 @@ SCSS
1064
1055
  end
1065
1056
 
1066
1057
  def test_double_parent_selector_error
1067
- assert_raise_message(Sass::SyntaxError, <<MESSAGE.rstrip) {render <<SCSS}
1058
+ assert_raise_message(Sass::SyntaxError, <<MESSAGE) {render <<SCSS}
1068
1059
  Invalid CSS after " &": expected "{", was "& {a: b}"
1069
1060
 
1070
- "&" 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.
1071
1063
  MESSAGE
1072
1064
  flim {
1073
1065
  && {a: b}
@@ -1105,45 +1097,6 @@ SCSS
1105
1097
 
1106
1098
  # Regression
1107
1099
 
1108
- def test_newline_selector_rendered_multiple_times
1109
- assert_equal <<CSS, render(<<SCSS)
1110
- form input,
1111
- form select {
1112
- color: white; }
1113
-
1114
- form input,
1115
- form select {
1116
- color: white; }
1117
- CSS
1118
- @for $i from 1 through 2 {
1119
- form {
1120
- input,
1121
- select {
1122
- color: white;
1123
- }
1124
- }
1125
- }
1126
- SCSS
1127
- end
1128
-
1129
- def test_prop_name_interpolation_after_hyphen
1130
- assert_equal <<CSS, render(<<SCSS)
1131
- a {
1132
- -foo-bar: b; }
1133
- CSS
1134
- a { -\#{"foo"}-bar: b; }
1135
- SCSS
1136
- end
1137
-
1138
- def test_star_plus_and_parent
1139
- assert_equal <<CSS, render(<<SCSS)
1140
- * + html foo {
1141
- a: b; }
1142
- CSS
1143
- foo {*+html & {a: b}}
1144
- SCSS
1145
- end
1146
-
1147
1100
  def test_weird_added_space
1148
1101
  assert_equal <<CSS, render(<<SCSS)
1149
1102
  foo {
@@ -1255,11 +1208,11 @@ SCSS
1255
1208
 
1256
1209
 
1257
1210
  def test_newlines_removed_from_selectors_when_compressed
1258
- assert_equal <<CSS, render(<<SCSS, :style => :compressed)
1211
+ assert_equal <<CSS, render(<<SCSS, :style=>:compressed)
1259
1212
  z a,z b{display:block}
1260
1213
  CSS
1261
- a
1262
- , b {
1214
+ a,
1215
+ b {
1263
1216
  z & {
1264
1217
  display: block;
1265
1218
  }
@@ -1293,37 +1246,4 @@ foo {
1293
1246
  c: $var3; }
1294
1247
  SCSS
1295
1248
  end
1296
-
1297
- def test_options_passed_to_script
1298
- assert_equal <<CSS, render(<<SCSS, :style => :compressed)
1299
- foo{color:#000}
1300
- CSS
1301
- foo {color: darken(black, 10%)}
1302
- SCSS
1303
- end
1304
-
1305
- # ref: https://github.com/nex3/sass/issues/104
1306
- def test_no_buffer_overflow
1307
- template = render <<SCSS
1308
- .aaa {
1309
- background-color: white;
1310
- }
1311
- .aaa .aaa .aaa {
1312
- background-color: black;
1313
- }
1314
- .bbb {
1315
- @extend .aaa;
1316
- }
1317
- .xxx {
1318
- @extend .bbb;
1319
- }
1320
- .yyy {
1321
- @extend .bbb;
1322
- }
1323
- .zzz {
1324
- @extend .bbb;
1325
- }
1326
- SCSS
1327
- Sass::SCSS::Parser.new(template, "test.scss").parse
1328
- end
1329
1249
  end
@@ -1,8 +1,6 @@
1
1
  .foo
2
2
  a: b
3
3
 
4
- @import "foo.css"
5
-
6
4
  // Even though the imported file is in IBM866,
7
5
  // since the root file is in UTF-8/ASCII
8
6
  // the output will end up being UTF-8.
@@ -1,6 +1,4 @@
1
1
  .foo
2
2
  a: b
3
3
 
4
- @import "foo.css"
5
-
6
4
  @import "imported_charset_ibm866"
@@ -3,8 +3,6 @@
3
3
  .foo
4
4
  a: b
5
5
 
6
- @import "foo.css"
7
-
8
6
  // Even though the imported file is in UTF-8,
9
7
  // since the root file is in IBM866
10
8
  // the output will end up being IBM866.
@@ -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
@@ -120,16 +120,6 @@ class UtilTest < Test::Unit::TestCase
120
120
  lcs([-5, 3, 2, 8], [-4, 1, 8]) {|a, b| (a - b).abs <= 1 && [a, b].max})
121
121
  end
122
122
 
123
- def test_subsequence
124
- assert(subsequence?([1, 2, 3], [1, 2, 3]))
125
- assert(subsequence?([1, 2, 3], [1, :a, 2, :b, 3]))
126
- assert(subsequence?([1, 2, 3], [:a, 1, :b, :c, 2, :d, 3, :e, :f]))
127
-
128
- assert(!subsequence?([1, 2, 3], [1, 2]))
129
- assert(!subsequence?([1, 2, 3], [1, 3, 2]))
130
- assert(!subsequence?([1, 2, 3], [3, 2, 1]))
131
- end
132
-
133
123
  def test_silence_warnings
134
124
  old_stderr, $stderr = $stderr, StringIO.new
135
125
  warn "Out"
@@ -169,12 +159,6 @@ class UtilTest < Test::Unit::TestCase
169
159
  enum_cons(%w[foo bar baz], 2).map {|s1, s2| "#{s1}#{s2}"})
170
160
  end
171
161
 
172
- def test_extract
173
- arr = [1, 2, 3, 4, 5]
174
- assert_equal([1, 3, 5], extract!(arr) {|e| e % 2 == 1})
175
- assert_equal([2, 4], arr)
176
- end
177
-
178
162
  def test_ord
179
163
  assert_equal(102, ord("f"))
180
164
  assert_equal(98, ord("bar"))
@@ -224,18 +208,6 @@ class UtilTest < Test::Unit::TestCase
224
208
  assert(set_eql?(s1, s2))
225
209
  end
226
210
 
227
- def test_extract_and_inject_values
228
- test = lambda {|arr| assert_equal(arr, with_extracted_values(arr) {|str| str})}
229
-
230
- test[['foo bar']]
231
- test[['foo {12} bar']]
232
- test[['foo {{12} bar']]
233
- test[['foo {{1', 12, '2} bar']]
234
- test[['foo 1', 2, '{3', 4, 5, 6, '{7}', 8]]
235
- test[['foo 1', [2, 3, 4], ' bar']]
236
- test[['foo ', 1, "\n bar\n", [2, 3, 4], "\n baz"]]
237
- end
238
-
239
211
  def test_caller_info
240
212
  assert_equal(["/tmp/foo.rb", 12, "fizzle"], caller_info("/tmp/foo.rb:12: in `fizzle'"))
241
213
  assert_equal(["/tmp/foo.rb", 12, nil], caller_info("/tmp/foo.rb:12"))
@@ -4,10 +4,8 @@ require 'test/unit'
4
4
  require 'fileutils'
5
5
  $:.unshift lib_dir unless $:.include?(lib_dir)
6
6
  require 'sass'
7
- require 'mathn' if ENV['MATHN'] == 'true'
8
7
 
9
8
  Sass::RAILS_LOADED = true unless defined?(Sass::RAILS_LOADED)
10
- Encoding.default_external = 'UTF-8' if defined?(Encoding)
11
9
 
12
10
  module Sass::Script::Functions
13
11
  def option(name)
@@ -1,4 +1,4 @@
1
- Copyright (c) 2012 Thibaud Guillaume-Gentil
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
@@ -0,0 +1,55 @@
1
+ Monitor API
2
+ ===========
3
+
4
+ There are three ways you can run the monitor.
5
+
6
+ 1. call monitor with a path parameter, and define callbacks in a block
7
+ 2. call monitor with a block to configure multiple paths and callbacks
8
+ 3. create a monitor object and run each step manually
9
+
10
+ Monitor with path
11
+ -----------------
12
+
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 `'**/*'`.
14
+
15
+ FSSM.monitor('/some/directory/', '**/*') do
16
+ update {|base, relative|}
17
+ delete {|base, relative|}
18
+ create {|base, relative|}
19
+ end
20
+
21
+ Monitor with block
22
+ ------------------
23
+
24
+ This form watches one or more paths, and enters the run loop automatically. The glob configuration call can be ommitted, and defaults to `'**/*'`.
25
+
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
41
+
42
+ Monitor object
43
+ --------------
44
+
45
+ This form doesn't enter the run loop automatically.
46
+
47
+ monitor = FSSM::Monitor.new
48
+
49
+ monitor.path '/some/directory/' do
50
+ update {|base, relative|}
51
+ delete {|base, relative|}
52
+ create {|base, relative|}
53
+ end
54
+
55
+ monitor.run
@@ -0,0 +1,59 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+
4
+ begin
5
+ require 'jeweler'
6
+ Jeweler::Tasks.new do |gem|
7
+ gem.name = "fssm"
8
+ gem.summary = %Q{file system state monitor}
9
+ gem.description = %Q{file system state monitor}
10
+ gem.email = "ttilley@gmail.com"
11
+ gem.homepage = "http://github.com/ttilley/fssm"
12
+ gem.authors = ["Travis Tilley"]
13
+ gem.add_development_dependency "rspec"
14
+ # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
15
+ end
16
+ rescue LoadError
17
+ puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
18
+ end
19
+
20
+ require 'spec/rake/spectask'
21
+ Spec::Rake::SpecTask.new(:spec) do |spec|
22
+ spec.libs << 'lib' << 'spec'
23
+ spec.spec_files = FileList['spec/**/*_spec.rb']
24
+ end
25
+
26
+ Spec::Rake::SpecTask.new(:rcov) do |spec|
27
+ spec.libs << 'lib' << 'spec'
28
+ spec.pattern = 'spec/**/*_spec.rb'
29
+ spec.rcov = true
30
+ end
31
+
32
+ task :spec => :check_dependencies
33
+
34
+ begin
35
+ require 'reek/rake_task'
36
+ Reek::RakeTask.new do |t|
37
+ t.fail_on_error = true
38
+ t.verbose = false
39
+ t.source_files = 'lib/**/*.rb'
40
+ end
41
+ rescue LoadError
42
+ task :reek do
43
+ abort "Reek is not available. In order to run reek, you must: sudo gem install reek"
44
+ end
45
+ end
46
+
47
+ begin
48
+ require 'roodi'
49
+ require 'roodi_task'
50
+ RoodiTask.new do |t|
51
+ t.verbose = false
52
+ end
53
+ rescue LoadError
54
+ task :roodi do
55
+ abort "Roodi is not available. In order to run roodi, you must: sudo gem install roodi"
56
+ end
57
+ end
58
+
59
+ task :default => :spec
@@ -0,0 +1,5 @@
1
+ ---
2
+ :major: 0
3
+ :minor: 1
4
+ :patch: 4
5
+ :build:
@@ -0,0 +1,9 @@
1
+ $:.unshift(File.join(File.dirname(__FILE__), 'lib'))
2
+
3
+ require 'fssm'
4
+
5
+ FSSM.monitor('.', '**/*') do
6
+ update {|b, r| puts "Update in #{b} to #{r}"}
7
+ delete {|b, r| puts "Delete in #{b} to #{r}"}
8
+ create {|b, r| puts "Create in #{b} to #{r}"}
9
+ end
@@ -0,0 +1,77 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{fssm}
8
+ s.version = "0.1.4"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Travis Tilley"]
12
+ s.date = %q{2010-03-10}
13
+ s.description = %q{file system state monitor}
14
+ s.email = %q{ttilley@gmail.com}
15
+ s.extra_rdoc_files = [
16
+ "LICENSE",
17
+ "README.markdown"
18
+ ]
19
+ s.files = [
20
+ ".document",
21
+ ".gitignore",
22
+ "LICENSE",
23
+ "README.markdown",
24
+ "Rakefile",
25
+ "VERSION.yml",
26
+ "example.rb",
27
+ "fssm.gemspec",
28
+ "lib/fssm.rb",
29
+ "lib/fssm/backends/fsevents.rb",
30
+ "lib/fssm/backends/inotify.rb",
31
+ "lib/fssm/backends/polling.rb",
32
+ "lib/fssm/backends/rubycocoa/fsevents.rb",
33
+ "lib/fssm/monitor.rb",
34
+ "lib/fssm/path.rb",
35
+ "lib/fssm/pathname.rb",
36
+ "lib/fssm/state/directory.rb",
37
+ "lib/fssm/state/file.rb",
38
+ "lib/fssm/support.rb",
39
+ "lib/fssm/tree.rb",
40
+ "profile/prof-cache.rb",
41
+ "profile/prof-fssm-pathname.html",
42
+ "profile/prof-pathname.rb",
43
+ "profile/prof-plain-pathname.html",
44
+ "profile/prof.html",
45
+ "spec/path_spec.rb",
46
+ "spec/root/duck/quack.txt",
47
+ "spec/root/file.css",
48
+ "spec/root/file.rb",
49
+ "spec/root/file.yml",
50
+ "spec/root/moo/cow.txt",
51
+ "spec/spec_helper.rb"
52
+ ]
53
+ s.homepage = %q{http://github.com/ttilley/fssm}
54
+ s.rdoc_options = ["--charset=UTF-8"]
55
+ s.require_paths = ["lib"]
56
+ s.rubygems_version = %q{1.3.6}
57
+ s.summary = %q{file system state monitor}
58
+ s.test_files = [
59
+ "spec/path_spec.rb",
60
+ "spec/spec_helper.rb",
61
+ "spec/root/file.rb"
62
+ ]
63
+
64
+ if s.respond_to? :specification_version then
65
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
66
+ s.specification_version = 3
67
+
68
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
69
+ s.add_development_dependency(%q<rspec>, [">= 0"])
70
+ else
71
+ s.add_dependency(%q<rspec>, [">= 0"])
72
+ end
73
+ else
74
+ s.add_dependency(%q<rspec>, [">= 0"])
75
+ end
76
+ end
77
+