summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-string-utf8
diff options
context:
space:
mode:
authorTomoyuki Sahara <[email protected]>2014-12-05 13:42:58 +0900
committerTomoyuki Sahara <[email protected]>2014-12-05 13:42:58 +0900
commit5f68be7190d17c553981359d5056db6fbfea11c8 (patch)
tree0cb78eb7154752d146678296b76bfb2699c32da9 /mrbgems/mruby-string-utf8
parentea828944eff14b0cc3be88c432499602bd454c75 (diff)
downloadmruby-5f68be7190d17c553981359d5056db6fbfea11c8.tar.gz
mruby-5f68be7190d17c553981359d5056db6fbfea11c8.zip
String#[] accepts float.
Diffstat (limited to 'mrbgems/mruby-string-utf8')
-rw-r--r--mrbgems/mruby-string-utf8/src/string.c3
-rw-r--r--mrbgems/mruby-string-utf8/test/string.rb1
2 files changed, 4 insertions, 0 deletions
diff --git a/mrbgems/mruby-string-utf8/src/string.c b/mrbgems/mruby-string-utf8/src/string.c
index b232df1c5..ef9457195 100644
--- a/mrbgems/mruby-string-utf8/src/string.c
+++ b/mrbgems/mruby-string-utf8/src/string.c
@@ -3,6 +3,7 @@
#include "mruby/class.h"
#include "mruby/string.h"
#include "mruby/range.h"
+#include "mruby/numeric.h"
#include "mruby/re.h"
#include <ctype.h>
#include <string.h>
@@ -257,6 +258,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);
diff --git a/mrbgems/mruby-string-utf8/test/string.rb b/mrbgems/mruby-string-utf8/test/string.rb
index 5b4180037..551273106 100644
--- a/mrbgems/mruby-string-utf8/test/string.rb
+++ b/mrbgems/mruby-string-utf8/test/string.rb
@@ -9,6 +9,7 @@ assert('String#[]') do
assert_equal "世界", "こんにちは世界"[-2..-1]
assert_equal "んに", "こんにちは世界"[1,2]
assert_equal "世", "こんにちは世界"["世"]
+ assert_equal 'b', 'abc'[1.1]
end
assert('String#reverse', '15.2.10.5.29') do