support Dir.chdir with block

This commit is contained in:
Akira Yumiyama
2013-11-16 14:28:40 +09:00
parent 797c1cc178
commit 12dce91db8
2 changed files with 16 additions and 1 deletions
+15
View File
@@ -40,6 +40,21 @@ class Dir
end
end
def self.chdir(path, &block)
my = self # workaround for https://github.com/mruby/mruby/issues/1579
if block
wd = self.getwd
begin
self._chdir(path)
block.call
ensure
my._chdir(wd)
end
else
self._chdir(path)
end
end
class << self
alias exists? exist?
alias pwd getwd
+1 -1
View File
@@ -237,7 +237,7 @@ mrb_mruby_dir_gem_init(mrb_state *mrb)
mrb_define_class_method(mrb, d, "exist?", mrb_dir_existp, MRB_ARGS_REQ(1));
mrb_define_class_method(mrb, d, "getwd", mrb_dir_getwd, MRB_ARGS_NONE());
mrb_define_class_method(mrb, d, "mkdir", mrb_dir_mkdir, MRB_ARGS_REQ(1)|MRB_ARGS_OPT(1));
mrb_define_class_method(mrb, d, "chdir", mrb_dir_chdir, MRB_ARGS_REQ(1));
mrb_define_class_method(mrb, d, "_chdir", mrb_dir_chdir, MRB_ARGS_REQ(1));
mrb_define_method(mrb, d, "close", mrb_dir_close, MRB_ARGS_NONE());
mrb_define_method(mrb, d, "initialize", mrb_dir_init, MRB_ARGS_REQ(1));