Class: File
- Inherits:
-
IO
show all
- Defined in:
- opal/stdlib/deno/file.rb,
opal/stdlib/nodejs/file.rb,
opal/stdlib/nashorn/file.rb,
opal/stdlib/headless_browser/file.rb
Defined Under Namespace
Classes: Stat
Constant Summary
collapse
- ALT_SEPARATOR =
`__path__.sep`
Instance Attribute Summary collapse
Attributes inherited from IO
#lineno
Class Method Summary
collapse
Instance Method Summary
collapse
Methods inherited from IO
binread, #initialize_before_node_io
Constructor Details
#initialize(path, flags = 'r') ⇒ File
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
|
# File 'opal/stdlib/deno/file.rb', line 240
def initialize(path, flags = 'r')
@binary_flag = flags.include?('b')
flags = flags.delete('b')
encoding_option_rx = /:(.*)/
if encoding_option_rx.match?(flags)
`handle_unsupported_feature("Encoding option (:encoding) is unsupported by Node.js openSync method and will be removed.")`
flags = flags.sub(encoding_option_rx, '')
end
@path = path
fd = `executeIOAction(function(){return Deno.openSync(path, flags)})`
super(fd, flags)
end
|
Instance Attribute Details
Returns the value of attribute path.
256
257
258
|
# File 'opal/stdlib/deno/file.rb', line 256
def path
@path
end
|
Class Method Details
.absolute_path(path, basedir = nil) ⇒ Object
234
235
236
|
# File 'opal/stdlib/deno/file.rb', line 234
def self.absolute_path(path, basedir = nil)
raise 'File::absolute_path is currently unsupported in Deno!'
end
|
.delete(path) ⇒ Object
Also known as:
unlink
125
126
127
|
# File 'opal/stdlib/deno/file.rb', line 125
def self.delete(path)
`executeIOAction(function(){return Deno.removeSync(#{path})})`
end
|
.directory?(path) ⇒ Boolean
168
169
170
171
172
173
174
175
176
177
178
|
# File 'opal/stdlib/deno/file.rb', line 168
def self.directory?(path)
return false unless exist? path
result = `executeIOAction(function(){return !!Deno.lstatSync(path).isDirectory})`
unless result
realpath = realpath(path)
if realpath != path
result = `executeIOAction(function(){return !!Deno.lstatSync(realpath).isDirectory})`
end
end
result
end
|
.exist?(path) ⇒ Boolean
133
134
135
136
|
# File 'opal/stdlib/deno/file.rb', line 133
def self.exist?(path)
path = path.path if path.respond_to? :path
`return executeIOAction(function(){return Deno.statSync(#{path})})`
end
|
.file?(path) ⇒ Boolean
180
181
182
183
184
185
186
187
188
189
190
|
# File 'opal/stdlib/deno/file.rb', line 180
def self.file?(path)
return false unless exist? path
result = `executeIOAction(function(){return !!Deno.lstatSync(path).isFile})`
unless result
realpath = realpath(path)
if realpath != path
result = `executeIOAction(function(){return !!Deno.lstatSync(realpath).isFile})`
end
end
result
end
|
.join(*paths) ⇒ Object
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
|
# File 'opal/stdlib/deno/file.rb', line 152
def self.join(*paths)
paths = paths.map(&:to_s)
prefix = paths.first&.start_with?('//') ? '/' : ''
path = prefix
paths.each do |pth|
path << if pth.end_with?('/') || pth.start_with?('/')
pth
else
'/' + pth
end
end
path
end
|
.mtime(path) ⇒ Object
226
227
228
|
# File 'opal/stdlib/deno/file.rb', line 226
def self.mtime(path)
`return executeIOAction(function(){return Deno.statSync(#{path}).mtime})`
end
|
.open(path, mode = 'r') ⇒ Object
208
209
210
211
212
213
214
215
216
217
218
219
|
# File 'opal/stdlib/deno/file.rb', line 208
def self.open(path, mode = 'r')
file = new(path, mode)
if block_given?
begin
yield(file)
ensure
file.close
end
else
file
end
end
|
.read(path) ⇒ Object
116
117
118
|
# File 'opal/stdlib/deno/file.rb', line 116
def self.read(path)
`return executeIOAction(function(){return Deno.readFileSync(#{path}).toString()})`
end
|
.readable?(path) ⇒ Boolean
192
193
194
195
196
197
198
199
200
201
202
|
# File 'opal/stdlib/deno/file.rb', line 192
def self.readable?(path)
return false unless exist? path
%{
try {
Deno.openSync(path, {read: true}).close();
return true;
} catch (error) {
return false;
}
}
end
|
.realpath(pathname, dir_string = nil, cache = nil, &block) ⇒ Object
138
139
140
141
142
143
144
145
146
147
148
149
150
|
# File 'opal/stdlib/deno/file.rb', line 138
def self.realpath(pathname, dir_string = nil, cache = nil, &block)
pathname = join(dir_string, pathname) if dir_string
if block_given?
`
Deno.realpath(#{pathname}, #{cache}, function(error, realpath){
if (error) Opal.IOError.$new(error.message)
else #{block.call(`realpath`)}
})
`
else
`return executeIOAction(function(){return Deno.realpathSync(#{pathname}, #{cache})})`
end
end
|
.size(path) ⇒ Object
204
205
206
|
# File 'opal/stdlib/deno/file.rb', line 204
def self.size(path)
`return executeIOAction(function(){return Deno.lstatSync(path).size})`
end
|
.stat(path) ⇒ Object
221
222
223
224
|
# File 'opal/stdlib/deno/file.rb', line 221
def self.stat(path)
path = path.path if path.respond_to? :path
File::Stat.new(path)
end
|
.symlink(path, new_path) ⇒ Object
138
139
140
141
|
# File 'opal/stdlib/nodejs/file.rb', line 138
def self.symlink(path, new_path)
`executeIOAction(function(){return __fs__.symlinkSync(#{path}, #{new_path})})`
0
end
|
.symlink?(path) ⇒ Boolean
230
231
232
|
# File 'opal/stdlib/deno/file.rb', line 230
def self.symlink?(path)
`return executeIOAction(function(){return Deno.lstatSync(#{path}).isSymLink})`
end
|
.write(path, data) ⇒ Object
120
121
122
123
|
# File 'opal/stdlib/deno/file.rb', line 120
def self.write(path, data)
`executeIOAction(function(){return Deno.writeFileSync(#{path}, __textEncoder__.encode(#{data}));})`
data.size
end
|
Instance Method Details
291
292
293
294
|
# File 'opal/stdlib/deno/file.rb', line 291
def close
`executeIOAction(function(){return #{@fd}.close()})`
super
end
|
287
288
289
|
# File 'opal/stdlib/deno/file.rb', line 287
def flush
end
|
296
297
298
|
# File 'opal/stdlib/deno/file.rb', line 296
def mtime
`return executeIOAction(function(){return Deno.statSync(#{@path}).mtime})`
end
|
#sysread(bytes) ⇒ Object
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
|
# File 'opal/stdlib/deno/file.rb', line 258
def sysread(bytes)
if @eof
raise EOFError, 'end of file reached'
else
if @binary_flag
%x{
var buf = executeIOAction(function(){return Deno.readFileSync(#{@path})})
var content
if (is_utf8(buf)) {
content = buf.toString('utf8')
} else {
// coerce to utf8
content = __utf8TextDecoder__.decode(__textEncoder__.encode(buf.toString('binary')))
}
}
res = `content`
else
res = `executeIOAction(function(){return Deno.readFileSync(#{@path}).toString('utf8')})`
end
@eof = true
@lineno = res.size
res
end
end
|
#write(string) ⇒ Object
283
284
285
|
# File 'opal/stdlib/deno/file.rb', line 283
def write(string)
`executeIOAction(function(){return #{@fd}.writeSync(__textEncoder__.encode(#{string}))})`
end
|