diff options
Diffstat (limited to 'src/lj_strfmt.c')
-rw-r--r-- | src/lj_strfmt.c | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/src/lj_strfmt.c b/src/lj_strfmt.c index 1fe9308d..e8fe2538 100644 --- a/src/lj_strfmt.c +++ b/src/lj_strfmt.c | |||
@@ -86,7 +86,7 @@ retlit: | |||
86 | return fs->len ? STRFMT_LIT : STRFMT_EOF; | 86 | return fs->len ? STRFMT_LIT : STRFMT_EOF; |
87 | } | 87 | } |
88 | 88 | ||
89 | /* -- Format conversions -------------------------------------------------- */ | 89 | /* -- Formatted conversions to buffer ------------------------------------- */ |
90 | 90 | ||
91 | /* Add formatted char to buffer. */ | 91 | /* Add formatted char to buffer. */ |
92 | SBuf *lj_strfmt_putchar(SBuf *sb, SFormat sf, int32_t c) | 92 | SBuf *lj_strfmt_putchar(SBuf *sb, SFormat sf, int32_t c) |
@@ -294,6 +294,35 @@ SBuf *lj_strfmt_putnum(SBuf *sb, SFormat sf, lua_Number n) | |||
294 | return sb; | 294 | return sb; |
295 | } | 295 | } |
296 | 296 | ||
297 | /* -- Conversions to strings ---------------------------------------------- */ | ||
298 | |||
299 | /* Raw conversion of object to string. */ | ||
300 | GCstr *lj_strfmt_obj(lua_State *L, cTValue *o) | ||
301 | { | ||
302 | if (tvisstr(o)) { | ||
303 | return strV(o); | ||
304 | } else if (tvisnumber(o)) { | ||
305 | return lj_str_fromnumber(L, o); | ||
306 | } else if (tvisnil(o)) { | ||
307 | return lj_str_newlit(L, "nil"); | ||
308 | } else if (tvisfalse(o)) { | ||
309 | return lj_str_newlit(L, "false"); | ||
310 | } else if (tvistrue(o)) { | ||
311 | return lj_str_newlit(L, "true"); | ||
312 | } else { | ||
313 | char buf[8+2+2+16], *p = buf; | ||
314 | p = lj_buf_wmem(p, lj_typename(o), strlen(lj_typename(o))); | ||
315 | *p++ = ':'; *p++ = ' '; | ||
316 | if (tvisfunc(o) && isffunc(funcV(o))) { | ||
317 | p = lj_buf_wmem(p, "builtin#", 8); | ||
318 | p = lj_str_bufint(p, funcV(o)->c.ffid); | ||
319 | } else { | ||
320 | p = lj_str_bufptr(p, lj_obj_ptr(o)); | ||
321 | } | ||
322 | return lj_str_new(L, buf, (size_t)(p - buf)); | ||
323 | } | ||
324 | } | ||
325 | |||
297 | /* -- Internal string formatting ------------------------------------------ */ | 326 | /* -- Internal string formatting ------------------------------------------ */ |
298 | 327 | ||
299 | /* | 328 | /* |