diff options
| author | Yukihiro Matz Matsumoto <[email protected]> | 2013-03-27 23:41:23 +0900 |
|---|---|---|
| committer | Yukihiro Matz Matsumoto <[email protected]> | 2013-03-27 23:41:23 +0900 |
| commit | 18b2683b97ae54d4f2f15c19076f33aa29eaf2b7 (patch) | |
| tree | f6afd41abfd7b0ad8b76bb5e618e6ee0fbdc6723 /src/symbol.c | |
| parent | 8ce842a5d978132c5733cacb7c15bb3d0f5ce66d (diff) | |
| download | mruby-18b2683b97ae54d4f2f15c19076f33aa29eaf2b7.tar.gz mruby-18b2683b97ae54d4f2f15c19076f33aa29eaf2b7.zip | |
use new mrb_format API from mrb_raisef; its only format specifier is "%S" (stringify) and takes mrb_value; close #1062
Diffstat (limited to 'src/symbol.c')
| -rw-r--r-- | src/symbol.c | 15 |
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) { |
