diff --git a/chameleonic.p8 b/chameleonic.p8 index ea33d55..51427dd 100644 --- a/chameleonic.p8 +++ b/chameleonic.p8 @@ -44,23 +44,29 @@ end -- %! for tostring(param) -- which dumps tables function fmt(f, ...) - local out, i = "", 1 + local out, i = "", 0 for s in all(split(f,"%")) do - local m = s[1] - if m == "~" then - out ..= "%" + if i == 0 then + -- before first format directive + out ..= s + i = 1 else - local p = select(i,...) - i+=1 - if m == "v" then - out ..= p - elseif m == "!" then - out ..= tostring(p) + local m = s[1] + if m == "~" then + out ..= "%" else - out ..= "(?!:"..m..":"..tostring(p)..")" + local p = select(i,...) + i+=1 + if m == "v" then + out ..= p + elseif m == "!" then + out ..= tostring(p) + else + out ..= "(?!:"..m..":"..tostring(p)..")" + end end + out ..=sub(s,2) end - out ..=sub(s,2) end return out end