summaryrefslogtreecommitdiffhomepage
path: root/src/symbol.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/symbol.c')
-rw-r--r--src/symbol.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/symbol.c b/src/symbol.c
index 37090111a..2612e0d15 100644
--- a/src/symbol.c
+++ b/src/symbol.c
@@ -348,6 +348,21 @@ sym_inspect(mrb_state *mrb, mrb_value sym)
return str;
}
+mrb_value
+mrb_sym2str(mrb_state *mrb, mrb_sym sym)
+{
+ size_t len;
+ const char *name = mrb_sym2name_len(mrb, sym, &len);
+
+ if (!name) return mrb_undef_value(); /* can't happen */
+ if (symname_p(name) && strlen(name) == len) {
+ return mrb_str_new(mrb, name, len);
+ }
+ else {
+ return mrb_str_dump(mrb, mrb_str_new(mrb, name, len));
+ }
+}
+
const char*
mrb_sym2name(mrb_state *mrb, mrb_sym sym)
{