haml 2.2.24 → 3.0.0.beta.1
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.
- data/.yardopts +0 -1
- data/README.md +91 -151
- data/REMEMBER +11 -1
- data/Rakefile +73 -55
- data/VERSION +1 -1
- data/VERSION_NAME +1 -1
- data/bin/css2sass +7 -1
- data/bin/sass-convert +7 -0
- data/extra/haml-mode.el +2 -1
- data/lib/haml/buffer.rb +22 -4
- data/lib/haml/engine.rb +5 -1
- data/lib/haml/exec.rb +231 -46
- data/lib/haml/filters.rb +19 -8
- data/lib/haml/helpers.rb +47 -20
- data/lib/haml/helpers/action_view_extensions.rb +2 -4
- data/lib/haml/helpers/action_view_mods.rb +11 -8
- data/lib/haml/helpers/xss_mods.rb +13 -2
- data/lib/haml/html.rb +179 -48
- data/lib/haml/html/erb.rb +141 -0
- data/lib/haml/precompiler.rb +40 -15
- data/lib/haml/railtie.rb +1 -5
- data/lib/haml/root.rb +3 -0
- data/lib/haml/template.rb +4 -14
- data/lib/haml/util.rb +120 -30
- data/lib/haml/version.rb +25 -2
- data/lib/sass.rb +5 -1
- data/lib/sass/callbacks.rb +50 -0
- data/lib/sass/css.rb +40 -191
- data/lib/sass/engine.rb +170 -74
- data/lib/sass/environment.rb +8 -2
- data/lib/sass/error.rb +163 -25
- data/lib/sass/files.rb +31 -28
- data/lib/sass/plugin.rb +268 -87
- data/lib/sass/plugin/rails.rb +9 -4
- data/lib/sass/repl.rb +1 -1
- data/lib/sass/script.rb +31 -29
- data/lib/sass/script/bool.rb +1 -0
- data/lib/sass/script/color.rb +290 -23
- data/lib/sass/script/css_lexer.rb +22 -0
- data/lib/sass/script/css_parser.rb +28 -0
- data/lib/sass/script/funcall.rb +22 -3
- data/lib/sass/script/functions.rb +523 -33
- data/lib/sass/script/interpolation.rb +42 -0
- data/lib/sass/script/lexer.rb +169 -52
- data/lib/sass/script/literal.rb +58 -9
- data/lib/sass/script/node.rb +79 -1
- data/lib/sass/script/number.rb +20 -5
- data/lib/sass/script/operation.rb +49 -3
- data/lib/sass/script/parser.rb +162 -28
- data/lib/sass/script/string.rb +50 -2
- data/lib/sass/script/unary_operation.rb +25 -2
- data/lib/sass/script/variable.rb +21 -4
- data/lib/sass/scss.rb +14 -0
- data/lib/sass/scss/css_parser.rb +39 -0
- data/lib/sass/scss/parser.rb +683 -0
- data/lib/sass/scss/rx.rb +112 -0
- data/lib/sass/scss/script_lexer.rb +13 -0
- data/lib/sass/scss/script_parser.rb +25 -0
- data/lib/sass/tree/comment_node.rb +69 -27
- data/lib/sass/tree/debug_node.rb +7 -2
- data/lib/sass/tree/directive_node.rb +41 -35
- data/lib/sass/tree/for_node.rb +6 -0
- data/lib/sass/tree/if_node.rb +13 -1
- data/lib/sass/tree/import_node.rb +52 -27
- data/lib/sass/tree/mixin_def_node.rb +18 -0
- data/lib/sass/tree/mixin_node.rb +41 -6
- data/lib/sass/tree/node.rb +197 -70
- data/lib/sass/tree/prop_node.rb +152 -57
- data/lib/sass/tree/root_node.rb +118 -0
- data/lib/sass/tree/rule_node.rb +193 -96
- data/lib/sass/tree/variable_node.rb +9 -5
- data/lib/sass/tree/while_node.rb +4 -0
- data/test/benchmark.rb +5 -5
- data/test/haml/engine_test.rb +147 -10
- data/test/haml/{rhtml/_av_partial_1.rhtml → erb/_av_partial_1.erb} +1 -1
- data/test/haml/{rhtml/_av_partial_2.rhtml → erb/_av_partial_2.erb} +1 -1
- data/test/haml/{rhtml/action_view.rhtml → erb/action_view.erb} +1 -1
- data/test/haml/{rhtml/standard.rhtml → erb/standard.erb} +0 -0
- data/test/haml/helper_test.rb +91 -24
- data/test/haml/html2haml/erb_tests.rb +410 -0
- data/test/haml/html2haml_test.rb +210 -66
- data/test/haml/results/filters.xhtml +1 -1
- data/test/haml/results/just_stuff.xhtml +2 -0
- data/test/haml/spec_test.rb +44 -0
- data/test/haml/template_test.rb +22 -2
- data/test/haml/templates/helpers.haml +0 -13
- data/test/haml/templates/just_stuff.haml +2 -0
- data/test/haml/util_test.rb +48 -0
- data/test/sass/callbacks_test.rb +61 -0
- data/test/sass/conversion_test.rb +884 -0
- data/test/sass/css2sass_test.rb +99 -18
- data/test/sass/data/hsl-rgb.txt +319 -0
- data/test/sass/engine_test.rb +1049 -131
- data/test/sass/functions_test.rb +398 -47
- data/test/sass/more_results/more_import.css +1 -1
- data/test/sass/more_templates/more_import.sass +3 -3
- data/test/sass/plugin_test.rb +184 -10
- data/test/sass/results/compact.css +1 -1
- data/test/sass/results/complex.css +5 -5
- data/test/sass/results/compressed.css +1 -1
- data/test/sass/results/expanded.css +1 -1
- data/test/sass/results/import.css +3 -1
- data/test/sass/results/mixins.css +12 -12
- data/test/sass/results/nested.css +1 -1
- data/test/sass/results/options.css +1 -0
- data/test/sass/results/parent_ref.css +4 -4
- data/test/sass/results/script.css +3 -3
- data/test/sass/results/scss_import.css +15 -0
- data/test/sass/results/scss_importee.css +2 -0
- data/test/sass/script_conversion_test.rb +153 -0
- data/test/sass/script_test.rb +137 -70
- data/test/sass/scss/css_test.rb +811 -0
- data/test/sass/scss/rx_test.rb +156 -0
- data/test/sass/scss/scss_test.rb +871 -0
- data/test/sass/scss/test_helper.rb +37 -0
- data/test/sass/templates/alt.sass +2 -2
- data/test/sass/templates/bork1.sass +2 -0
- data/test/sass/templates/bork3.sass +2 -0
- data/test/sass/templates/bork4.sass +2 -0
- data/test/sass/templates/import.sass +4 -4
- data/test/sass/templates/importee.sass +3 -3
- data/test/sass/templates/line_numbers.sass +1 -1
- data/test/sass/templates/mixin_bork.sass +5 -0
- data/test/sass/templates/mixins.sass +2 -2
- data/test/sass/templates/nested_bork1.sass +2 -0
- data/test/sass/templates/nested_bork2.sass +2 -0
- data/test/sass/templates/nested_bork3.sass +2 -0
- data/test/sass/templates/nested_bork4.sass +2 -0
- data/test/sass/templates/nested_mixin_bork.sass +6 -0
- data/test/sass/templates/options.sass +2 -0
- data/test/sass/templates/parent_ref.sass +2 -2
- data/test/sass/templates/script.sass +69 -69
- data/test/sass/templates/scss_import.scss +10 -0
- data/test/sass/templates/scss_importee.scss +1 -0
- data/test/sass/templates/units.sass +10 -10
- data/test/test_helper.rb +20 -8
- data/vendor/fssm/LICENSE +20 -0
- data/vendor/fssm/README.markdown +55 -0
- data/vendor/fssm/Rakefile +59 -0
- data/vendor/fssm/VERSION.yml +5 -0
- data/vendor/fssm/example.rb +9 -0
- data/vendor/fssm/fssm.gemspec +77 -0
- data/vendor/fssm/lib/fssm.rb +33 -0
- data/vendor/fssm/lib/fssm/backends/fsevents.rb +36 -0
- data/vendor/fssm/lib/fssm/backends/inotify.rb +26 -0
- data/vendor/fssm/lib/fssm/backends/polling.rb +25 -0
- data/vendor/fssm/lib/fssm/backends/rubycocoa/fsevents.rb +131 -0
- data/vendor/fssm/lib/fssm/monitor.rb +26 -0
- data/vendor/fssm/lib/fssm/path.rb +91 -0
- data/vendor/fssm/lib/fssm/pathname.rb +502 -0
- data/vendor/fssm/lib/fssm/state/directory.rb +57 -0
- data/vendor/fssm/lib/fssm/state/file.rb +24 -0
- data/vendor/fssm/lib/fssm/support.rb +63 -0
- data/vendor/fssm/lib/fssm/tree.rb +176 -0
- data/vendor/fssm/profile/prof-cache.rb +40 -0
- data/vendor/fssm/profile/prof-fssm-pathname.html +1231 -0
- data/vendor/fssm/profile/prof-pathname.rb +68 -0
- data/vendor/fssm/profile/prof-plain-pathname.html +988 -0
- data/vendor/fssm/profile/prof.html +2379 -0
- data/vendor/fssm/spec/path_spec.rb +75 -0
- data/vendor/fssm/spec/root/duck/quack.txt +0 -0
- data/vendor/fssm/spec/root/file.css +0 -0
- data/vendor/fssm/spec/root/file.rb +0 -0
- data/vendor/fssm/spec/root/file.yml +0 -0
- data/vendor/fssm/spec/root/moo/cow.txt +0 -0
- data/vendor/fssm/spec/spec_helper.rb +14 -0
- metadata +94 -14
- data/test/sass/templates/bork.sass +0 -2
@@ -0,0 +1,502 @@
|
|
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
|