public override object Calln(Class last_class, object recv, Frame caller, ArgList args) { object idx, rest = null; Array argv = args.ToRubyArray(); if (Class.rb_scan_args(caller, argv, 1, 1, false) == 2) rest = args[1]; idx = args[0]; if (rest != null || !(idx is int) || ((int)idx) < 0) { return rb_ary_aref.singleton.Call(last_class, match_to_a.singleton.Call0(last_class, recv, caller, null), caller, null, argv); } return Regexp.rb_reg_nth_match((int)idx, (Match)recv); }
public override object Calln(Class last_class, object recv, Frame caller, ArgList args) { object str; int flags; if (Class.rb_scan_args(caller, args.ToRubyArray(), 1, 1, false) == 2) flags = Numeric.rb_num2long(args[1], caller); else flags = 0; str = args[0]; return Dir.rb_push_glob(caller, args.block, str, flags); }
public override object Calln(Class last_class, object recv, Frame caller, ArgList args) { int flags; if (Class.rb_scan_args(caller, args.ToRubyArray(), 2, 1, false) == 3) flags = Numeric.rb_num2long(args[2], caller); else flags = 0; string pattern = String.StringValue(args[0], caller); string path = String.StringValue(args[1], caller); return (File.fnmatch(pattern, path, flags) == 0); }
public override object Calln(Class last_class, object recv, Frame caller, ArgList args) { string fname; int argc = Class.rb_scan_args(caller, args.ToRubyArray(), 1, 1, false); fname = String.StringValue(args[0], caller); IO io = IO.rb_io_open(fname, "r", caller); if (io == null) return null; object result = null; try { if (argc == 2) result = rb_io_readlines.singleton.Call1(last_class, io, caller, args.block, args[1]); else result = rb_io_readlines.singleton.Call0(last_class, io, caller, args.block); } finally { IO.rb_io_close(io); } return result; }
public override object Calln(Class last_class, object recv, Frame caller, ArgList args) { string fname; int offset = -1; object sep = null; Class.rb_scan_args(caller, args.ToRubyArray(), 1, 2, false); if (args.Length > 1) sep = args[1]; if (args.Length > 2) offset = Numeric.rb_num2long(args[2], caller); fname = String.StringValue(args[0], caller); IO io = IO.rb_io_open(fname, "r", caller); if (io == null) return null; if (offset > -1) { IO.rb_io_seek(caller, io, offset, IO.SEEK_SET); } object result = null; try { result = io_read.singleton.Call(last_class, io, caller, args.block, new Array(new object[] { null, sep })); } finally { IO.rb_io_close(io); } return result; }
public override object Calln(Class last_class, object recv, Frame caller, ArgList args) { string fname; foreach_arg arg = new foreach_arg(); if (Class.rb_scan_args(caller, args.ToRubyArray(), 1, 1, false) == 2) arg.sep = String.StringValue(args[1], caller); fname = String.StringValue(args[0], caller); if (args.Length == 1) { arg.sep = String.StringValue(IO.rb_default_rs.value, caller); } arg.io = IO.rb_io_open(fname, "r", caller); if (arg.io == null) return null; object result = null; try { result = io_s_foreach(caller, args.block, arg); } finally { IO.rb_io_close(arg.io); } return result; }
public override object Calln(Class last_class, object recv, Frame caller, ArgList args) { string mode, pname; object port; if (Class.rb_scan_args(caller, args.ToRubyArray(), 1, 1, false) == 1) mode = "r"; else { if (args[1] is int) mode = IO.rb_io_modenum_mode(caller, (int)args[1]); else mode = IO.rb_io_flags_mode(caller, IO.rb_io_mode_flags(caller, String.StringValue(args[1], caller))); } pname = String.StringValue(args[0], caller); port = IO.pipe_open(null, pname, mode, caller); if (port == null) { /* child */ if (args.block != null) { Proc.rb_yield(args.block, caller, new object[] { null }); ((System.IO.Stream)IO.rb_stdout.value).Flush(); ((System.IO.Stream)IO.rb_stderr.value).Flush(); try { System.Diagnostics.Process.GetCurrentProcess().Kill(); } catch { } } return null; } ((Basic)port).my_class = ((Basic)recv).my_class; if (args.block != null) { object result; try { result = Proc.rb_yield(args.block, caller, new object[] { port }); } finally { IO.io_close(port, caller); } return result; } return port; }
public override object Calln(Class last_class, object recv, Frame caller, ArgList args) { object str; object rs; if (args.Length == 0) { rs = IO.rb_rs.value; } else { Class.rb_scan_args(caller, args.ToRubyArray(), 1, 0, false); rs = args[0]; } while ((str = IO.rb_io_getline(rs, recv, caller)) != null) { Proc.rb_yield(args.block, caller, new object[] { str }); } return recv; }
public override object Calln(Class last_class, object recv, Frame caller, ArgList args) { IO file = (IO)recv; string fname, nmode = null; string mode; IO fptr; Eval.rb_secure(4, caller); if (Class.rb_scan_args(caller, args.ToRubyArray(), 1, 1, false) == 1) { object tmp = IO.rb_io_check_io(args[0], caller); if (tmp != null) { return IO.io_reopen(recv, tmp, caller); } } fname = String.StringValue(args[0], caller); IO.rb_io_taint_check(caller, recv); fptr = file; if (nmode != null) { fptr.mode = IO.rb_io_mode_flags(caller, nmode); } if (fptr._path != null) { fptr._path = null; } fptr._path = fname; mode = IO.rb_io_flags_mode(caller, fptr.mode); if (fptr.f == null) { fptr.f = new FileStream(fptr._path, IO.modenumToFileMode(fptr.mode), IO.modenumToFileAccess(fptr.mode)); if (fptr.f2 != null) { fptr.f2.Close(); } return recv; } try { fptr.f.Close(); fptr.f = new FileStream(fptr._path, IO.modenumToFileMode(fptr.mode), IO.modenumToFileAccess(fptr.mode)); } catch (System.IO.IOException ioe) { throw SystemCallError.rb_sys_fail(fptr._path, ioe, caller).raise(caller); } if (fptr.f2 != null) { try { fptr.f2.Close(); fptr.f2 = new FileStream(fptr._path, IO.modenumToFileMode(fptr.mode), FileAccess.Write); } catch (System.IO.IOException ioe) { throw SystemCallError.rb_sys_fail(fptr._path, ioe, caller).raise(caller); } } return recv; }
public override object Calln(Class last_class, object recv, Frame caller, ArgList args) { Class.rb_scan_args(caller, args.ToRubyArray(), 1, 1, false); Class klass0 = (Class)recv; bool write = false; if (args.Length == 2) write = Eval.Test(args[1]); klass0.attr(Symbol.rb_to_id(caller, args[0]), true, write, caller); return null; }