lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


Let's see the documented example:

        string.format('%q', 'a string with "quotes" and \n new line')

Well, if there's a new user of lua, he who doesn't really consumed the documents,  maybe, he is going to believe the result string is:

        "a string with \"quotes\" and \n new line"

probably.  but, very soon,  he will realize that he was sadly wrong,  because lua just ate half of the '\n'  -  eat 'n', left '\' :

        "a string with \"quotes\" and \
        new line"

lua: hotdog? I hate the taste of sausage mixing with bread ... lol

but that's ok,  and the result string could be used as source string with calls like "load" and "lua_load" etc.

however,  under some special cases (e.g. debugging output), I usually need to print the result on a limited screen area and hope not to make mess of other outputs.
so, I usually changed the lua source code to serve my need, like this: (lua 5.2b, file: "lstrlib.c",  function: "addquoted")
        static void addquoted (lua_State *L, luaL_Buffer *b, int arg) {
        ...
       
luaL_addchar(b, '"');
        while (l--) {
            if (*s == '"' || *s == '\\' /*|| *s == '\n'*/) { // I just comment this...
                luaL_addchar(b, '\\');
                luaL_addchar(b, *s);
            }
            else if ...
            ...
        }
        ...
    }

Hope this could be an offical change