haml 3.0.25 → 3.1.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 (212) hide show
  1. data/.yardopts +1 -1
  2. data/CONTRIBUTING +0 -1
  3. data/EDGE_GEM_VERSION +1 -0
  4. data/MIT-LICENSE +1 -1
  5. data/README.md +10 -175
  6. data/Rakefile +56 -84
  7. data/VERSION +1 -1
  8. data/VERSION_NAME +1 -1
  9. data/init.rb +1 -1
  10. data/lib/haml.rb +14 -12
  11. data/lib/haml/engine.rb +1 -1
  12. data/lib/haml/exec.rb +19 -316
  13. data/lib/haml/helpers/action_view_extensions.rb +1 -1
  14. data/lib/haml/html.rb +69 -76
  15. data/lib/haml/precompiler.rb +34 -41
  16. data/lib/haml/railtie.rb +4 -6
  17. data/lib/haml/template/plugin.rb +6 -16
  18. data/lib/haml/util.rb +91 -107
  19. data/lib/haml/version.rb +7 -0
  20. data/test/benchmark.rb +2 -9
  21. data/test/haml/engine_test.rb +195 -92
  22. data/test/haml/html2haml/erb_tests.rb +0 -14
  23. data/test/haml/util_test.rb +32 -0
  24. data/test/test_helper.rb +0 -39
  25. metadata +96 -324
  26. data/bin/css2sass +0 -13
  27. data/bin/sass +0 -8
  28. data/bin/sass-convert +0 -7
  29. data/extra/haml-mode.el +0 -753
  30. data/extra/sass-mode.el +0 -207
  31. data/lib/haml/util/subset_map.rb +0 -101
  32. data/lib/sass.rb +0 -29
  33. data/lib/sass/callbacks.rb +0 -52
  34. data/lib/sass/css.rb +0 -294
  35. data/lib/sass/engine.rb +0 -720
  36. data/lib/sass/environment.rb +0 -143
  37. data/lib/sass/error.rb +0 -198
  38. data/lib/sass/files.rb +0 -160
  39. data/lib/sass/less.rb +0 -382
  40. data/lib/sass/plugin.rb +0 -279
  41. data/lib/sass/plugin/configuration.rb +0 -221
  42. data/lib/sass/plugin/generic.rb +0 -15
  43. data/lib/sass/plugin/merb.rb +0 -37
  44. data/lib/sass/plugin/rack.rb +0 -47
  45. data/lib/sass/plugin/rails.rb +0 -32
  46. data/lib/sass/plugin/staleness_checker.rb +0 -123
  47. data/lib/sass/repl.rb +0 -58
  48. data/lib/sass/script.rb +0 -63
  49. data/lib/sass/script/bool.rb +0 -18
  50. data/lib/sass/script/color.rb +0 -491
  51. data/lib/sass/script/css_lexer.rb +0 -29
  52. data/lib/sass/script/css_parser.rb +0 -31
  53. data/lib/sass/script/funcall.rb +0 -77
  54. data/lib/sass/script/functions.rb +0 -861
  55. data/lib/sass/script/interpolation.rb +0 -70
  56. data/lib/sass/script/lexer.rb +0 -337
  57. data/lib/sass/script/literal.rb +0 -236
  58. data/lib/sass/script/node.rb +0 -112
  59. data/lib/sass/script/number.rb +0 -423
  60. data/lib/sass/script/operation.rb +0 -95
  61. data/lib/sass/script/parser.rb +0 -401
  62. data/lib/sass/script/string.rb +0 -67
  63. data/lib/sass/script/string_interpolation.rb +0 -93
  64. data/lib/sass/script/unary_operation.rb +0 -57
  65. data/lib/sass/script/variable.rb +0 -48
  66. data/lib/sass/scss.rb +0 -17
  67. data/lib/sass/scss/css_parser.rb +0 -46
  68. data/lib/sass/scss/parser.rb +0 -855
  69. data/lib/sass/scss/rx.rb +0 -126
  70. data/lib/sass/scss/sass_parser.rb +0 -11
  71. data/lib/sass/scss/script_lexer.rb +0 -15
  72. data/lib/sass/scss/script_parser.rb +0 -25
  73. data/lib/sass/scss/static_parser.rb +0 -40
  74. data/lib/sass/selector.rb +0 -361
  75. data/lib/sass/selector/abstract_sequence.rb +0 -62
  76. data/lib/sass/selector/comma_sequence.rb +0 -82
  77. data/lib/sass/selector/sequence.rb +0 -237
  78. data/lib/sass/selector/simple.rb +0 -113
  79. data/lib/sass/selector/simple_sequence.rb +0 -136
  80. data/lib/sass/tree/charset_node.rb +0 -37
  81. data/lib/sass/tree/comment_node.rb +0 -128
  82. data/lib/sass/tree/debug_node.rb +0 -36
  83. data/lib/sass/tree/directive_node.rb +0 -75
  84. data/lib/sass/tree/extend_node.rb +0 -65
  85. data/lib/sass/tree/for_node.rb +0 -55
  86. data/lib/sass/tree/if_node.rb +0 -69
  87. data/lib/sass/tree/import_node.rb +0 -102
  88. data/lib/sass/tree/mixin_def_node.rb +0 -48
  89. data/lib/sass/tree/mixin_node.rb +0 -111
  90. data/lib/sass/tree/node.rb +0 -464
  91. data/lib/sass/tree/prop_node.rb +0 -220
  92. data/lib/sass/tree/root_node.rb +0 -163
  93. data/lib/sass/tree/rule_node.rb +0 -261
  94. data/lib/sass/tree/variable_node.rb +0 -39
  95. data/lib/sass/tree/warn_node.rb +0 -42
  96. data/lib/sass/tree/while_node.rb +0 -36
  97. data/test/haml/util/subset_map_test.rb +0 -91
  98. data/test/sass/callbacks_test.rb +0 -61
  99. data/test/sass/conversion_test.rb +0 -1218
  100. data/test/sass/css2sass_test.rb +0 -364
  101. data/test/sass/data/hsl-rgb.txt +0 -319
  102. data/test/sass/engine_test.rb +0 -2267
  103. data/test/sass/extend_test.rb +0 -1348
  104. data/test/sass/functions_test.rb +0 -556
  105. data/test/sass/less_conversion_test.rb +0 -653
  106. data/test/sass/more_results/more1.css +0 -9
  107. data/test/sass/more_results/more1_with_line_comments.css +0 -26
  108. data/test/sass/more_results/more_import.css +0 -29
  109. data/test/sass/more_templates/_more_partial.sass +0 -2
  110. data/test/sass/more_templates/more1.sass +0 -23
  111. data/test/sass/more_templates/more_import.sass +0 -11
  112. data/test/sass/plugin_test.rb +0 -433
  113. data/test/sass/results/alt.css +0 -4
  114. data/test/sass/results/basic.css +0 -9
  115. data/test/sass/results/compact.css +0 -5
  116. data/test/sass/results/complex.css +0 -86
  117. data/test/sass/results/compressed.css +0 -1
  118. data/test/sass/results/expanded.css +0 -19
  119. data/test/sass/results/import.css +0 -31
  120. data/test/sass/results/import_charset.css +0 -4
  121. data/test/sass/results/import_charset_1_8.css +0 -4
  122. data/test/sass/results/import_charset_ibm866.css +0 -4
  123. data/test/sass/results/line_numbers.css +0 -49
  124. data/test/sass/results/mixins.css +0 -95
  125. data/test/sass/results/multiline.css +0 -24
  126. data/test/sass/results/nested.css +0 -22
  127. data/test/sass/results/options.css +0 -1
  128. data/test/sass/results/parent_ref.css +0 -13
  129. data/test/sass/results/script.css +0 -16
  130. data/test/sass/results/scss_import.css +0 -31
  131. data/test/sass/results/scss_importee.css +0 -2
  132. data/test/sass/results/subdir/nested_subdir/nested_subdir.css +0 -1
  133. data/test/sass/results/subdir/subdir.css +0 -3
  134. data/test/sass/results/units.css +0 -11
  135. data/test/sass/results/warn.css +0 -0
  136. data/test/sass/results/warn_imported.css +0 -0
  137. data/test/sass/script_conversion_test.rb +0 -314
  138. data/test/sass/script_test.rb +0 -470
  139. data/test/sass/scss/css_test.rb +0 -916
  140. data/test/sass/scss/rx_test.rb +0 -156
  141. data/test/sass/scss/scss_test.rb +0 -1122
  142. data/test/sass/scss/test_helper.rb +0 -37
  143. data/test/sass/templates/_imported_charset_ibm866.sass +0 -4
  144. data/test/sass/templates/_imported_charset_utf8.sass +0 -4
  145. data/test/sass/templates/_partial.sass +0 -2
  146. data/test/sass/templates/alt.sass +0 -16
  147. data/test/sass/templates/basic.sass +0 -23
  148. data/test/sass/templates/bork1.sass +0 -2
  149. data/test/sass/templates/bork2.sass +0 -2
  150. data/test/sass/templates/bork3.sass +0 -2
  151. data/test/sass/templates/bork4.sass +0 -2
  152. data/test/sass/templates/compact.sass +0 -17
  153. data/test/sass/templates/complex.sass +0 -305
  154. data/test/sass/templates/compressed.sass +0 -15
  155. data/test/sass/templates/expanded.sass +0 -17
  156. data/test/sass/templates/import.sass +0 -12
  157. data/test/sass/templates/import_charset.sass +0 -7
  158. data/test/sass/templates/import_charset_1_8.sass +0 -4
  159. data/test/sass/templates/import_charset_ibm866.sass +0 -9
  160. data/test/sass/templates/importee.less +0 -2
  161. data/test/sass/templates/importee.sass +0 -19
  162. data/test/sass/templates/line_numbers.sass +0 -13
  163. data/test/sass/templates/mixin_bork.sass +0 -5
  164. data/test/sass/templates/mixins.sass +0 -76
  165. data/test/sass/templates/multiline.sass +0 -20
  166. data/test/sass/templates/nested.sass +0 -25
  167. data/test/sass/templates/nested_bork1.sass +0 -2
  168. data/test/sass/templates/nested_bork2.sass +0 -2
  169. data/test/sass/templates/nested_bork3.sass +0 -2
  170. data/test/sass/templates/nested_bork4.sass +0 -2
  171. data/test/sass/templates/nested_mixin_bork.sass +0 -6
  172. data/test/sass/templates/options.sass +0 -2
  173. data/test/sass/templates/parent_ref.sass +0 -25
  174. data/test/sass/templates/script.sass +0 -101
  175. data/test/sass/templates/scss_import.scss +0 -11
  176. data/test/sass/templates/scss_importee.scss +0 -1
  177. data/test/sass/templates/subdir/nested_subdir/_nested_partial.sass +0 -2
  178. data/test/sass/templates/subdir/nested_subdir/nested_subdir.sass +0 -3
  179. data/test/sass/templates/subdir/subdir.sass +0 -6
  180. data/test/sass/templates/units.sass +0 -11
  181. data/test/sass/templates/warn.sass +0 -3
  182. data/test/sass/templates/warn_imported.sass +0 -4
  183. data/vendor/fssm/LICENSE +0 -20
  184. data/vendor/fssm/README.markdown +0 -55
  185. data/vendor/fssm/Rakefile +0 -59
  186. data/vendor/fssm/VERSION.yml +0 -5
  187. data/vendor/fssm/example.rb +0 -9
  188. data/vendor/fssm/fssm.gemspec +0 -77
  189. data/vendor/fssm/lib/fssm.rb +0 -33
  190. data/vendor/fssm/lib/fssm/backends/fsevents.rb +0 -36
  191. data/vendor/fssm/lib/fssm/backends/inotify.rb +0 -26
  192. data/vendor/fssm/lib/fssm/backends/polling.rb +0 -25
  193. data/vendor/fssm/lib/fssm/backends/rubycocoa/fsevents.rb +0 -131
  194. data/vendor/fssm/lib/fssm/monitor.rb +0 -26
  195. data/vendor/fssm/lib/fssm/path.rb +0 -91
  196. data/vendor/fssm/lib/fssm/pathname.rb +0 -502
  197. data/vendor/fssm/lib/fssm/state/directory.rb +0 -57
  198. data/vendor/fssm/lib/fssm/state/file.rb +0 -24
  199. data/vendor/fssm/lib/fssm/support.rb +0 -63
  200. data/vendor/fssm/lib/fssm/tree.rb +0 -176
  201. data/vendor/fssm/profile/prof-cache.rb +0 -40
  202. data/vendor/fssm/profile/prof-fssm-pathname.html +0 -1231
  203. data/vendor/fssm/profile/prof-pathname.rb +0 -68
  204. data/vendor/fssm/profile/prof-plain-pathname.html +0 -988
  205. data/vendor/fssm/profile/prof.html +0 -2379
  206. data/vendor/fssm/spec/path_spec.rb +0 -75
  207. data/vendor/fssm/spec/root/duck/quack.txt +0 -0
  208. data/vendor/fssm/spec/root/file.css +0 -0
  209. data/vendor/fssm/spec/root/file.rb +0 -0
  210. data/vendor/fssm/spec/root/file.yml +0 -0
  211. data/vendor/fssm/spec/root/moo/cow.txt +0 -0
  212. data/vendor/fssm/spec/spec_helper.rb +0 -14
@@ -1,26 +0,0 @@
1
- class FSSM::Monitor
2
- def initialize(options={})
3
- @options = options
4
- @backend = FSSM::Backends::Default.new
5
- end
6
-
7
- def path(*args, &block)
8
- path = FSSM::Path.new(*args)
9
- FSSM::Support.use_block(path, block)
10
-
11
- @backend.add_handler(FSSM::State::Directory.new(path))
12
- path
13
- end
14
-
15
- def file(*args, &block)
16
- path = FSSM::Path.new(*args)
17
- FSSM::Support.use_block(path, block)
18
-
19
- @backend.add_handler(FSSM::State::File.new(path))
20
- path
21
- end
22
-
23
- def run
24
- @backend.run
25
- end
26
- end
@@ -1,91 +0,0 @@
1
- class FSSM::Path
2
- def initialize(path=nil, glob=nil, &block)
3
- set_path(path || '.')
4
- set_glob(glob || '**/*')
5
- init_callbacks
6
-
7
- if block_given?
8
- if block.arity == 1
9
- block.call(self)
10
- else
11
- self.instance_eval(&block)
12
- end
13
- end
14
- end
15
-
16
- def to_s
17
- @path.to_s
18
- end
19
-
20
- def to_pathname
21
- @path
22
- end
23
-
24
- def glob(value=nil)
25
- return @glob if value.nil?
26
- set_glob(value)
27
- end
28
-
29
- def create(callback_or_path=nil, &block)
30
- callback_action(:create, (block_given? ? block : callback_or_path))
31
- end
32
-
33
- def update(callback_or_path=nil, &block)
34
- callback_action(:update, (block_given? ? block : callback_or_path))
35
- end
36
-
37
- def delete(callback_or_path=nil, &block)
38
- callback_action(:delete, (block_given? ? block : callback_or_path))
39
- end
40
-
41
- private
42
-
43
- def init_callbacks
44
- do_nothing = lambda {|base, relative|}
45
- @callbacks = Hash.new(do_nothing)
46
- end
47
-
48
- def callback_action(type, arg=nil)
49
- if arg.is_a?(Proc)
50
- set_callback(type, arg)
51
- elsif arg.nil?
52
- get_callback(type)
53
- else
54
- run_callback(type, arg)
55
- end
56
- end
57
-
58
- def set_callback(type, arg)
59
- raise ArgumentError, "Proc expected" unless arg.is_a?(Proc)
60
- @callbacks[type] = arg
61
- end
62
-
63
- def get_callback(type)
64
- @callbacks[type]
65
- end
66
-
67
- def run_callback(type, arg)
68
- base, relative = split_path(arg)
69
-
70
- begin
71
- @callbacks[type].call(base, relative)
72
- rescue Exception => e
73
- raise FSSM::CallbackError, "#{type} - #{base.join(relative)}: #{e.message}", e.backtrace
74
- end
75
- end
76
-
77
- def split_path(path)
78
- path = FSSM::Pathname.for(path)
79
- [@path, (path.relative? ? path : path.relative_path_from(@path))]
80
- end
81
-
82
- def set_path(path)
83
- path = FSSM::Pathname.for(path)
84
- raise FSSM::FileNotFoundError, "No such file or directory - #{path}" unless path.exist?
85
- @path = path.expand_path
86
- end
87
-
88
- def set_glob(glob)
89
- @glob = glob.is_a?(Array) ? glob : [glob]
90
- end
91
- end
@@ -1,502 +0,0 @@
1
- require 'fileutils'
2
- require 'find'
3
-
4
- module FSSM
5
- class Pathname < String
6
- SYMLOOP_MAX = 8
7
-
8
- ROOT = '/'.freeze
9
- DOT = '.'.freeze
10
- DOT_DOT = '..'.freeze
11
-
12
- class << self
13
- def for(path)
14
- path.is_a?(::FSSM::Pathname) ? path : new("#{path}")
15
- end
16
- end
17
-
18
- def initialize(path)
19
- raise ArgumentError, "path cannot contain ASCII NULLs" if path =~ %r{\0}
20
- super(path)
21
- end
22
-
23
- def <=>(other)
24
- self.tr('/', "\0").to_s <=> other.to_str.tr('/', "\0")
25
- rescue NoMethodError
26
- nil
27
- end
28
-
29
- def ==(other)
30
- left = self.cleanpath.tr('/', "\0").to_s
31
- right = self.class.for(other).cleanpath.tr('/', "\0").to_s
32
-
33
- left == right
34
- rescue NoMethodError
35
- false
36
- end
37
-
38
- def +(path)
39
- dup << path
40
- end
41
-
42
- def <<(path)
43
- replace( join(path).cleanpath! )
44
- end
45
-
46
- def absolute?
47
- self[0, 1].to_s == ROOT
48
- end
49
-
50
- def ascend
51
- parts = to_a
52
- parts.length.downto(1) do |i|
53
- yield self.class.join(parts[0, i])
54
- end
55
- end
56
-
57
- def children
58
- entries[2..-1]
59
- end
60
-
61
- def cleanpath!
62
- parts = to_a
63
- final = []
64
-
65
- parts.each do |part|
66
- case part
67
- when DOT then
68
- next
69
- when DOT_DOT then
70
- case final.last
71
- when ROOT then
72
- next
73
- when DOT_DOT then
74
- final.push(DOT_DOT)
75
- when nil then
76
- final.push(DOT_DOT)
77
- else
78
- final.pop
79
- end
80
- else
81
- final.push(part)
82
- end
83
- end
84
-
85
- replace(final.empty? ? DOT : self.class.join(*final))
86
- end
87
-
88
- def cleanpath
89
- dup.cleanpath!
90
- end
91
-
92
- def descend
93
- parts = to_a
94
- 1.upto(parts.length) { |i| yield self.class.join(parts[0, i]) }
95
- end
96
-
97
- def dot?
98
- self == DOT
99
- end
100
-
101
- def dot_dot?
102
- self == DOT_DOT
103
- end
104
-
105
- def each_filename(&blk)
106
- to_a.each(&blk)
107
- end
108
-
109
- def mountpoint?
110
- stat1 = self.lstat
111
- stat2 = self.parent.lstat
112
-
113
- stat1.dev != stat2.dev || stat1.ino == stat2.ino
114
- rescue Errno::ENOENT
115
- false
116
- end
117
-
118
- def parent
119
- self + '..'
120
- end
121
-
122
- def realpath
123
- path = self
124
-
125
- SYMLOOP_MAX.times do
126
- link = path.readlink
127
- link = path.dirname + link if link.relative?
128
- path = link
129
- end
130
-
131
- raise Errno::ELOOP, self
132
- rescue Errno::EINVAL
133
- path.expand_path
134
- end
135
-
136
- def relative?
137
- !absolute?
138
- end
139
-
140
- def relative_path_from(base)
141
- base = self.class.for(base)
142
-
143
- raise ArgumentError, 'no relative path between a relative and absolute' if self.absolute? != base.absolute?
144
-
145
- return self if base.dot?
146
- return self.class.new(DOT) if self == base
147
-
148
- base = base.cleanpath.to_a
149
- dest = self.cleanpath.to_a
150
-
151
- while !dest.empty? && !base.empty? && dest[0] == base[0]
152
- base.shift
153
- dest.shift
154
- end
155
-
156
- base.shift if base[0] == DOT
157
- dest.shift if dest[0] == DOT
158
-
159
- raise ArgumentError, "base directory may not contain '#{DOT_DOT}'" if base.include?(DOT_DOT)
160
-
161
- path = base.fill(DOT_DOT) + dest
162
- path = self.class.join(*path)
163
- path = self.class.new(DOT) if path.empty?
164
-
165
- path
166
- end
167
-
168
- def root?
169
- !!(self =~ %r{^#{ROOT}+$})
170
- end
171
-
172
- def to_a
173
- array = to_s.split(File::SEPARATOR)
174
- array.delete('')
175
- array.insert(0, ROOT) if absolute?
176
- array
177
- end
178
-
179
- alias segments to_a
180
-
181
- def to_path
182
- self
183
- end
184
-
185
- def to_s
186
- "#{self}"
187
- end
188
-
189
- alias to_str to_s
190
-
191
- def unlink
192
- Dir.unlink(self)
193
- true
194
- rescue Errno::ENOTDIR
195
- File.unlink(self)
196
- true
197
- end
198
- end
199
-
200
- class Pathname
201
- def self.[](pattern)
202
- Dir[pattern].map! {|d| FSSM::Pathname.new(d) }
203
- end
204
-
205
- def self.pwd
206
- FSSM::Pathname.new(Dir.pwd)
207
- end
208
-
209
- def entries
210
- Dir.entries(self).map! {|e| FSSM::Pathname.new(e) }
211
- end
212
-
213
- def mkdir(mode = 0777)
214
- Dir.mkdir(self, mode)
215
- end
216
-
217
- def opendir(&blk)
218
- Dir.open(self, &blk)
219
- end
220
-
221
- def rmdir
222
- Dir.rmdir(self)
223
- end
224
-
225
- def self.glob(pattern, flags = 0)
226
- dirs = Dir.glob(pattern, flags)
227
- dirs.map! {|path| FSSM::Pathname.new(path) }
228
-
229
- if block_given?
230
- dirs.each {|dir| yield dir }
231
- nil
232
- else
233
- dirs
234
- end
235
- end
236
-
237
- def glob(pattern, flags = 0, &block)
238
- patterns = [pattern].flatten
239
- patterns.map! {|p| self.class.glob(self.to_s + p, flags, &block) }
240
- patterns.flatten
241
- end
242
-
243
- def chdir
244
- blk = lambda { yield self } if block_given?
245
- Dir.chdir(self, &blk)
246
- end
247
- end
248
-
249
- class Pathname
250
- def blockdev?
251
- FileTest.blockdev?(self)
252
- end
253
-
254
- def chardev?
255
- FileTest.chardev?(self)
256
- end
257
-
258
- def directory?
259
- FileTest.directory?(self)
260
- end
261
-
262
- def executable?
263
- FileTest.executable?(self)
264
- end
265
-
266
- def executable_real?
267
- FileTest.executable_real?(self)
268
- end
269
-
270
- def exists?
271
- FileTest.exists?(self)
272
- end
273
-
274
- def file?
275
- FileTest.file?(self)
276
- end
277
-
278
- def grpowned?
279
- FileTest.grpowned?(self)
280
- end
281
-
282
- def owned?
283
- FileTest.owned?(self)
284
- end
285
-
286
- def pipe?
287
- FileTest.pipe?(self)
288
- end
289
-
290
- def readable?
291
- FileTest.readable?(self)
292
- end
293
-
294
- def readable_real?
295
- FileTest.readable_real?(self)
296
- end
297
-
298
- def setgid?
299
- FileTest.setgit?(self)
300
- end
301
-
302
- def setuid?
303
- FileTest.setuid?(self)
304
- end
305
-
306
- def socket?
307
- FileTest.socket?(self)
308
- end
309
-
310
- def sticky?
311
- FileTest.sticky?(self)
312
- end
313
-
314
- def symlink?
315
- FileTest.symlink?(self)
316
- end
317
-
318
- def world_readable?
319
- FileTest.world_readable?(self)
320
- end
321
-
322
- def world_writable?
323
- FileTest.world_writable?(self)
324
- end
325
-
326
- def writable?
327
- FileTest.writable?(self)
328
- end
329
-
330
- def writable_real?
331
- FileTest.writable_real?(self)
332
- end
333
-
334
- def zero?
335
- FileTest.zero?(self)
336
- end
337
- end
338
-
339
- class Pathname
340
- def atime
341
- File.atime(self)
342
- end
343
-
344
- def ctime
345
- File.ctime(self)
346
- end
347
-
348
- def ftype
349
- File.ftype(self)
350
- end
351
-
352
- def lstat
353
- File.lstat(self)
354
- end
355
-
356
- def mtime
357
- File.mtime(self)
358
- end
359
-
360
- def stat
361
- File.stat(self)
362
- end
363
-
364
- def utime(atime, mtime)
365
- File.utime(self, atime, mtime)
366
- end
367
- end
368
-
369
- class Pathname
370
- def self.join(*parts)
371
- last_part = FSSM::Pathname.new(parts.last)
372
- return last_part if last_part.absolute?
373
- FSSM::Pathname.new(File.join(*parts.reject {|p| p.empty? }))
374
- end
375
-
376
- def basename
377
- self.class.new(File.basename(self))
378
- end
379
-
380
- def chmod(mode)
381
- File.chmod(mode, self)
382
- end
383
-
384
- def chown(owner, group)
385
- File.chown(owner, group, self)
386
- end
387
-
388
- def dirname
389
- self.class.new(File.dirname(self))
390
- end
391
-
392
- def expand_path(from = nil)
393
- self.class.new(File.expand_path(self, from))
394
- end
395
-
396
- def extname
397
- File.extname(self)
398
- end
399
-
400
- def fnmatch?(pat, flags = 0)
401
- File.fnmatch(pat, self, flags)
402
- end
403
-
404
- def join(*parts)
405
- self.class.join(self, *parts)
406
- end
407
-
408
- def lchmod(mode)
409
- File.lchmod(mode, self)
410
- end
411
-
412
- def lchown(owner, group)
413
- File.lchown(owner, group, self)
414
- end
415
-
416
- def link(to)
417
- File.link(self, to)
418
- end
419
-
420
- def open(mode = 'r', perm = nil, &blk)
421
- File.open(self, mode, perm, &blk)
422
- end
423
-
424
- def readlink
425
- self.class.new(File.readlink(self))
426
- end
427
-
428
- def rename(to)
429
- File.rename(self, to)
430
- replace(to)
431
- end
432
-
433
- def size
434
- File.size(self)
435
- end
436
-
437
- def size?
438
- File.size?(self)
439
- end
440
-
441
- def split
442
- File.split(self).map {|part| FSSM::Pathname.new(part) }
443
- end
444
-
445
- def symlink(to)
446
- File.symlink(self, to)
447
- end
448
-
449
- def truncate
450
- File.truncate(self)
451
- end
452
- end
453
-
454
- class Pathname
455
- def mkpath
456
- self.class.new(FileUtils.mkpath(self))
457
- end
458
-
459
- def rmtree
460
- self.class.new(FileUtils.rmtree(self).first)
461
- end
462
-
463
- def touch
464
- self.class.new(FileUtils.touch(self).first)
465
- end
466
- end
467
-
468
- class Pathname
469
- def each_line(sep = $/, &blk)
470
- IO.foreach(self, sep, &blk)
471
- end
472
-
473
- def read(len = nil, off = 0)
474
- IO.read(self, len, off)
475
- end
476
-
477
- def readlines(sep = $/)
478
- IO.readlines(self, sep)
479
- end
480
-
481
- def sysopen(mode = 'r', perm = nil)
482
- IO.sysopen(self, mode, perm)
483
- end
484
- end
485
-
486
- class Pathname
487
- def find
488
- Find.find(self) {|path| yield FSSM::Pathname.new(path) }
489
- end
490
- end
491
-
492
- class Pathname
493
- class << self
494
- alias getwd pwd
495
- end
496
-
497
- alias absolute expand_path
498
- alias delete unlink
499
- alias exist? exists?
500
- alias fnmatch fnmatch?
501
- end
502
- end