From 0133d9ac70fd8d3ebe873e29c12cabfd3ff3f1a1 Mon Sep 17 00:00:00 2001 From: Robert Mosolgo Date: Mon, 24 Nov 2014 09:30:45 -0800 Subject: fix(String) String#[] accepts float; close #2650 #2651 --- src/string.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/string.c') diff --git a/src/string.c b/src/string.c index 5eaed533a..20f371aa2 100644 --- a/src/string.c +++ b/src/string.c @@ -15,6 +15,7 @@ #include "mruby/class.h" #include "mruby/range.h" #include "mruby/string.h" +#include "mruby/numeric.h" #include "mruby/re.h" const char mrb_digitmap[] = "0123456789abcdefghijklmnopqrstuvwxyz"; @@ -750,6 +751,8 @@ mrb_str_aref(mrb_state *mrb, mrb_value str, mrb_value indx) mrb_regexp_check(mrb, indx); switch (mrb_type(indx)) { + case MRB_TT_FLOAT: + indx = mrb_flo_to_fixnum(mrb, indx); case MRB_TT_FIXNUM: idx = mrb_fixnum(indx); @@ -813,6 +816,7 @@ num_index: * * a = "hello there" * a[1] #=> 101(1.8.7) "e"(1.9.2) + * a[1.1] #=> "e"(1.9.2) * a[1,3] #=> "ell" * a[1..3] #=> "ell" * a[-3,2] #=> "er" -- cgit v1.2.3