diff --git a/include/pocketpy/pocketpy.h b/include/pocketpy/pocketpy.h index 93e3bdf1..2a35dc85 100644 --- a/include/pocketpy/pocketpy.h +++ b/include/pocketpy/pocketpy.h @@ -316,6 +316,7 @@ const char* py_tpname(py_Type type); /// %i: py_i64 (int64_t) /// %f: py_f64 (double) /// %s: const char* +/// %q: single quoted %s /// %c: char /// %p: void* /// %t: py_Type diff --git a/src/common/sourcedata.c b/src/common/sourcedata.c index fdd1bcbb..957f90cb 100644 --- a/src/common/sourcedata.c +++ b/src/common/sourcedata.c @@ -77,17 +77,6 @@ py_Str pk_SourceData__snapshot(const struct pk_SourceData* self, pk_SStream ss; pk_SStream__ctor(&ss); - // pk_SStream__write_cstr(&ss, " File \""); - // pk_SStream__write_Str(&ss, &self->filename); - // pk_SStream__write_cstr(&ss, "\", line "); - // pk_SStream__write_int(&ss, lineno); - - // pk_SStream__write(&ss, - // " File \"{}\", line {}", - // &self->filename, - // lineno - // ); - pk_sprintf(&ss, " File \"%S\", line %d", &self->filename, lineno); if(name && *name) { diff --git a/src/common/sstream.c b/src/common/sstream.c index f6a66bc0..d5eb6bda 100644 --- a/src/common/sstream.c +++ b/src/common/sstream.c @@ -163,6 +163,16 @@ void pk_vsprintf(pk_SStream* ss, const char* fmt, va_list args) { pk_SStream__write_cstr(ss, s); break; } + case 'q': { + const char* s = va_arg(args, const char*); + py_Str tmp, tmp2; + py_Str__ctor(&tmp, s); + tmp2 = py_Str__escape(&tmp, '\''); + pk_SStream__write_Str(ss, &tmp2); + py_Str__dtor(&tmp); + py_Str__dtor(&tmp2); + break; + } case 'S': { const py_Str* s = va_arg(args, const py_Str*); pk_SStream__write_Str(ss, s);