Actions
Feature #227
closedrb_scan_args() for keyword arguments
Feature #227:
rb_scan_args() for keyword arguments
Description
=begin
なかだです。
rb_scan_args()でキーワード引数に対応するパッチを発掘しました。
rb_scan_args(argc, argv, "11:foo", &mandatory, &optional, &foo)
とか
rb_scan_args(argc, argv, "11::", &mandatory, &optional, rb_intern("foo"), &foo, (ID)0)
とか書けるようになるはずだったと思います。
Index: class.c¶
--- class.c (revision 17903)
+++ class.c (working copy)
@@ -871,4 +871,5 @@ rb_scan_args(int argc, const VALUE *argv
const char *p = fmt;
VALUE *var;
- VALUE opt = 0;
va_list vargs;
@@ -876,4 +877,13 @@ rb_scan_args(int argc, const VALUE *argv
-
if (strchr(fmt, ':')) {
-
if (argc > 0 && TYPE(opt = argv[argc-1]) == T_HASH) {
-
}
-
else {
-
}
-
if (*p == ':') goto keyword;
-
}
if (ISDIGIT(*p)) {
@@ -895,9 +905,6 @@ rb_scan_args(int argc, const VALUE argv
for (; i<n; i++) {
var = va_arg(vargs, VALUE);
-
}
@@ -905,5 +912,32 @@ rb_scan_args(int argc, const VALUE *argv
}
- if(p == '') {
- keyword:
- if (*p == ':') {
- if (p[1] == ':') {
- }
- else {
- }
- }
- if (p == '') {
rest_arg:
var = va_arg(vargs, VALUE*);
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦
=end
Actions