From 6c7b0d88e87a41b6e2c908e0a9dcbc722b7553dc Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Tue, 2 Sep 2014 16:37:40 +0900 Subject: refactor valid instance variable name check --- src/variable.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'src/variable.c') diff --git a/src/variable.c b/src/variable.c index 6318d97fc..948bd1871 100644 --- a/src/variable.c +++ b/src/variable.c @@ -542,6 +542,35 @@ mrb_iv_defined(mrb_state *mrb, mrb_value obj, mrb_sym sym) return mrb_obj_iv_defined(mrb, mrb_obj_ptr(obj), sym); } +MRB_API mrb_bool +mrb_iv_p(mrb_state *mrb, mrb_sym iv_name) +{ + const char *s; + mrb_int i, len; + size_t j; + const char *invalid = "@$!? "; + + s = mrb_sym2name_len(mrb, iv_name, &len); + if (len < 2) return FALSE; + if (s[0] != '@') return FALSE; + if (s[1] == '@') return FALSE; + for (i=1; i