summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-kernel-ext/src
diff options
context:
space:
mode:
authorJun Hiroe <[email protected]>2014-10-24 01:55:55 +0900
committerJun Hiroe <[email protected]>2014-10-24 01:55:55 +0900
commit140e9bbf4bc3aa55971f2ddd5e319c3cb80d9296 (patch)
treed3a3e89db5d3aa4c9d84a9af401e4ee1f44b1c1d /mrbgems/mruby-kernel-ext/src
parentd3c7e117ef38b4b0e6386dff5acf54b08f3e23a7 (diff)
downloadmruby-140e9bbf4bc3aa55971f2ddd5e319c3cb80d9296.tar.gz
mruby-140e9bbf4bc3aa55971f2ddd5e319c3cb80d9296.zip
Add Kernel.Float
Diffstat (limited to 'mrbgems/mruby-kernel-ext/src')
-rw-r--r--mrbgems/mruby-kernel-ext/src/kernel.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/mrbgems/mruby-kernel-ext/src/kernel.c b/mrbgems/mruby-kernel-ext/src/kernel.c
index 10b0bc1ce..63a671aa9 100644
--- a/mrbgems/mruby-kernel-ext/src/kernel.c
+++ b/mrbgems/mruby-kernel-ext/src/kernel.c
@@ -25,6 +25,27 @@ mrb_f_method(mrb_state *mrb, mrb_value self)
/*
* call-seq:
+ * Float(arg) -> float
+ *
+ * Returns <i>arg</i> converted to a float. Numeric types are converted
+ * directly, the rest are converted using <i>arg</i>.to_f.
+ *
+ * Float(1) #=> 1.0
+ * Float(123.456) #=> 123.456
+ * Float("123.456") #=> 123.456
+ * Float(nil) #=> TypeError
+ */
+static mrb_value
+mrb_f_float(mrb_state *mrb, mrb_value self)
+{
+ mrb_value arg;
+
+ mrb_get_args(mrb, "o", &arg);
+ return mrb_Float(mrb, arg);
+}
+
+/*
+ * call-seq:
* String(arg) -> string
*
* Returns <i>arg</i> as an <code>String</code>.
@@ -116,6 +137,7 @@ mrb_mruby_kernel_ext_gem_init(mrb_state *mrb)
mrb_define_module_function(mrb, krn, "fail", mrb_f_raise, MRB_ARGS_OPT(2));
mrb_define_method(mrb, krn, "__method__", mrb_f_method, MRB_ARGS_NONE());
+ mrb_define_module_function(mrb, krn, "Float", mrb_f_float, MRB_ARGS_REQ(1));
mrb_define_module_function(mrb, krn, "String", mrb_f_string, MRB_ARGS_REQ(1));
mrb_define_module_function(mrb, krn, "Array", mrb_f_array, MRB_ARGS_REQ(1));
mrb_define_module_function(mrb, krn, "Hash", mrb_f_hash, MRB_ARGS_REQ(1));