From 78ab979ef9f86cfcc91bf08db31eab716ee19933 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Tue, 7 Jan 2014 16:24:09 +0900 Subject: mruby-string-utf8: redefine String#size for UTF-8 string; #1646 --- mrbgems/mruby-string-utf8/src/string.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'mrbgems/mruby-string-utf8/src') diff --git a/mrbgems/mruby-string-utf8/src/string.c b/mrbgems/mruby-string-utf8/src/string.c index fd1296d3f..5379dd3aa 100644 --- a/mrbgems/mruby-string-utf8/src/string.c +++ b/mrbgems/mruby-string-utf8/src/string.c @@ -47,6 +47,14 @@ mrb_utf8_strlen(mrb_value str) return total; } +static mrb_value +mrb_str_size(mrb_state *mrb, mrb_value str) +{ + size_t size = mrb_utf8_strlen(str); + + return mrb_fixnum_value(size); +} + #define RSTRING_LEN_UTF8(s) mrb_utf8_strlen(s) static mrb_value @@ -244,6 +252,7 @@ mrb_mruby_string_utf8_gem_init(mrb_state* mrb) { struct RClass * s = mrb->string_class; + mrb_define_method(mrb, s, "size", mrb_str_size, MRB_ARGS_NONE()); mrb_define_method(mrb, s, "[]", mrb_str_aref_m, MRB_ARGS_ANY()); mrb_define_method(mrb, s, "slice", mrb_str_aref_m, MRB_ARGS_ANY()); } -- cgit v1.2.3