diff options
Diffstat (limited to 'src/lib/GetOpts.rs')
| -rw-r--r-- | src/lib/GetOpts.rs | 80 |
1 files changed, 40 insertions, 40 deletions
diff --git a/src/lib/GetOpts.rs b/src/lib/GetOpts.rs index f85ce85c..0cacf3ff 100644 --- a/src/lib/GetOpts.rs +++ b/src/lib/GetOpts.rs @@ -7,8 +7,8 @@ * argument values out of the match object. */ -import option.some; -import option.none; +import Option.some; +import Option.none; tag name { long(str); short(char); } tag hasarg { yes; no; maybe; } @@ -17,7 +17,7 @@ tag occur { req; optional; multi; } type opt = rec(name name, hasarg hasarg, occur occur); fn mkname(str nm) -> name { - if (_str.char_len(nm) == 1u) { ret short(_str.char_at(nm, 0u)); } + if (Str.char_len(nm) == 1u) { ret short(Str.char_at(nm, 0u)); } else { ret long(nm); } } fn reqopt(str name) -> opt { @@ -41,11 +41,11 @@ tag optval { type match = rec(vec[opt] opts, vec[mutable vec[optval]] vals, vec[str] free); fn is_arg(str arg) -> bool { - ret _str.byte_len(arg) > 1u && arg.(0) == '-' as u8; + ret Str.byte_len(arg) > 1u && arg.(0) == '-' as u8; } fn name_str(name nm) -> str { alt (nm) { - case (short(?ch)) {ret _str.from_char(ch);} + case (short(?ch)) {ret Str.from_char(ch);} case (long(?s)) {ret s;} } } @@ -55,16 +55,16 @@ fn name_eq(name a, name b) -> bool { alt (a) { case (long(?a)) { alt (b) { - case (long(?b)) { ret _str.eq(a, b); } + case (long(?b)) { ret Str.eq(a, b); } case (_) { ret false; } } } case (_) { if (a == b) { ret true; } else {ret false; } } } } -fn find_opt(vec[opt] opts, name nm) -> option.t[uint] { +fn find_opt(vec[opt] opts, name nm) -> Option.t[uint] { auto i = 0u; - auto l = _vec.len[opt](opts); + auto l = Vec.len[opt](opts); while (i < l) { if (name_eq(opts.(i).name, nm)) { ret some[uint](i); } i += 1u; @@ -102,41 +102,41 @@ tag result { } fn getopts(vec[str] args, vec[opt] opts) -> result { - auto n_opts = _vec.len[opt](opts); - fn empty_(uint x) -> vec[optval]{ret _vec.empty[optval]();} + auto n_opts = Vec.len[opt](opts); + fn empty_(uint x) -> vec[optval]{ret Vec.empty[optval]();} auto f = empty_; - auto vals = _vec.init_fn_mut[vec[optval]](f, n_opts); + auto vals = Vec.init_fn_mut[vec[optval]](f, n_opts); let vec[str] free = vec(); - auto l = _vec.len[str](args); + auto l = Vec.len[str](args); auto i = 0u; while (i < l) { auto cur = args.(i); - auto curlen = _str.byte_len(cur); + auto curlen = Str.byte_len(cur); if (!is_arg(cur)) { - _vec.push[str](free, cur); - } else if (_str.eq(cur, "--")) { - free += _vec.slice[str](args, i + 1u, l); + Vec.push[str](free, cur); + } else if (Str.eq(cur, "--")) { + free += Vec.slice[str](args, i + 1u, l); break; } else { auto names; - auto i_arg = option.none[str]; + auto i_arg = Option.none[str]; if (cur.(1) == '-' as u8) { - auto tail = _str.slice(cur, 2u, curlen); - auto eq = _str.index(tail, '=' as u8); + auto tail = Str.slice(cur, 2u, curlen); + auto eq = Str.index(tail, '=' as u8); if (eq == -1) { names = vec(long(tail)); } else { - names = vec(long(_str.slice(tail, 0u, eq as uint))); - i_arg = option.some[str] - (_str.slice(tail, (eq as uint) + 1u, curlen - 2u)); + names = vec(long(Str.slice(tail, 0u, eq as uint))); + i_arg = Option.some[str] + (Str.slice(tail, (eq as uint) + 1u, curlen - 2u)); } } else { auto j = 1u; names = vec(); while (j < curlen) { - auto range = _str.char_range_at(cur, j); - _vec.push[name](names, short(range._0)); + auto range = Str.char_range_at(cur, j); + Vec.push[name](names, short(range._0)); j = range._1; } } @@ -152,29 +152,29 @@ fn getopts(vec[str] args, vec[opt] opts) -> result { } alt (opts.(optid).hasarg) { case (no) { - _vec.push[optval](vals.(optid), given); + Vec.push[optval](vals.(optid), given); } case (maybe) { - if (!option.is_none[str](i_arg)) { - _vec.push[optval](vals.(optid), - val(option.get[str](i_arg))); - } else if (name_pos < _vec.len[name](names) || + if (!Option.is_none[str](i_arg)) { + Vec.push[optval](vals.(optid), + val(Option.get[str](i_arg))); + } else if (name_pos < Vec.len[name](names) || i + 1u == l || is_arg(args.(i + 1u))) { - _vec.push[optval](vals.(optid), given); + Vec.push[optval](vals.(optid), given); } else { i += 1u; - _vec.push[optval](vals.(optid), val(args.(i))); + Vec.push[optval](vals.(optid), val(args.(i))); } } case (yes) { - if (!option.is_none[str](i_arg)) { - _vec.push[optval](vals.(optid), - val(option.get[str](i_arg))); + if (!Option.is_none[str](i_arg)) { + Vec.push[optval](vals.(optid), + val(Option.get[str](i_arg))); } else if (i + 1u == l) { ret failure(argument_missing(name_str(nm))); } else { i += 1u; - _vec.push[optval](vals.(optid), val(args.(i))); + Vec.push[optval](vals.(optid), val(args.(i))); } } } @@ -185,7 +185,7 @@ fn getopts(vec[str] args, vec[opt] opts) -> result { i = 0u; while (i < n_opts) { - auto n = _vec.len[optval](vals.(i)); + auto n = Vec.len[optval](vals.(i)); auto occ = opts.(i).occur; if (occ == req) {if (n == 0u) { ret failure(option_missing(name_str(opts.(i).name))); @@ -212,7 +212,7 @@ fn opt_val(match m, str nm) -> optval { ret opt_vals(m, nm).(0); } fn opt_present(match m, str nm) -> bool { - ret _vec.len[optval](opt_vals(m, nm)) > 0u; + ret Vec.len[optval](opt_vals(m, nm)) > 0u; } fn opt_str(match m, str nm) -> str { alt (opt_val(m, nm)) { @@ -224,15 +224,15 @@ fn opt_strs(match m, str nm) -> vec[str] { let vec[str] acc = vec(); for (optval v in opt_vals(m, nm)) { alt (v) { - case (val(?s)) { _vec.push[str](acc, s); } + case (val(?s)) { Vec.push[str](acc, s); } case (_) {} } } ret acc; } -fn opt_maybe_str(match m, str nm) -> option.t[str] { +fn opt_maybe_str(match m, str nm) -> Option.t[str] { auto vals = opt_vals(m, nm); - if (_vec.len[optval](vals) == 0u) { ret none[str]; } + if (Vec.len[optval](vals) == 0u) { ret none[str]; } alt (vals.(0)) { case (val(?s)) { ret some[str](s); } case (_) { ret none[str]; } |