diff options
Diffstat (limited to 'core/src/xmake/string/trim.c')
| -rw-r--r-- | core/src/xmake/string/trim.c | 79 |
1 files changed, 41 insertions, 38 deletions
diff --git a/core/src/xmake/string/trim.c b/core/src/xmake/string/trim.c index 42a4b846c..54e6e4b5a 100644 --- a/core/src/xmake/string/trim.c +++ b/core/src/xmake/string/trim.c @@ -22,8 +22,8 @@ /* ////////////////////////////////////////////////////////////////////////////////////// * trace */ -#define TB_TRACE_MODULE_NAME "string_trim" -#define TB_TRACE_MODULE_DEBUG (0) +#define TB_TRACE_MODULE_NAME "string_trim" +#define TB_TRACE_MODULE_DEBUG (0) /* ////////////////////////////////////////////////////////////////////////////////////// * includes @@ -33,25 +33,25 @@ /* ////////////////////////////////////////////////////////////////////////////////////// * private implementation */ -static tb_void_t xm_string_trim_space(tb_char_t const** psstr, tb_char_t const** pestr, tb_int_t mode) -{ - // check +static tb_void_t xm_string_trim_space(tb_char_t const **psstr, tb_char_t const **pestr, tb_int_t mode) { tb_assert(psstr && pestr && *psstr && *pestr); - tb_char_t const* p = *psstr; - tb_char_t const* e = *pestr; + tb_char_t const *p = *psstr; + tb_char_t const *e = *pestr; // trim left? - if (mode <= 0) - while (p < e && tb_isspace(*p)) + if (mode <= 0) { + while (p < e && tb_isspace(*p)) { p++; + } + } // trim right - if (mode >= 0) - { + if (mode >= 0) { e--; - while (e >= p && tb_isspace(*e)) + while (e >= p && tb_isspace(*e)) { e--; + } e++; } @@ -60,25 +60,29 @@ static tb_void_t xm_string_trim_space(tb_char_t const** psstr, tb_char_t const** *pestr = e; } -static tb_char_t const* xm_string_ltrim(tb_char_t const* sstr, tb_char_t const* estr, tb_char_t const* ctrim, size_t ntrim) -{ - // check +static tb_char_t const *xm_string_ltrim(tb_char_t const *sstr, + tb_char_t const *estr, + tb_char_t const *ctrim, + size_t ntrim) { tb_assert(sstr && estr && ctrim); - tb_char_t const* p = sstr; - while (p < estr && tb_strnchr(ctrim, ntrim, *p)) + tb_char_t const *p = sstr; + while (p < estr && tb_strnchr(ctrim, ntrim, *p)) { p++; + } return p; } -static tb_char_t const* xm_string_rtrim(tb_char_t const* sstr, tb_char_t const* estr, tb_char_t const* ctrim, size_t ntrim) -{ - // check +static tb_char_t const *xm_string_rtrim(tb_char_t const *sstr, + tb_char_t const *estr, + tb_char_t const *ctrim, + size_t ntrim) { tb_assert(sstr && estr && ctrim); - tb_char_t const* p = estr - 1; - while (p >= sstr && tb_strnchr(ctrim, ntrim, *p)) + tb_char_t const *p = estr - 1; + while (p >= sstr && tb_strnchr(ctrim, ntrim, *p)) { p--; + } return p + 1; } @@ -97,36 +101,35 @@ static tb_char_t const* xm_string_rtrim(tb_char_t const* sstr, tb_char_t const* * local result = string.trim(str, "(", -1) * @endcode */ -tb_int_t xm_string_trim(lua_State* lua) -{ - // check +tb_int_t xm_string_trim(lua_State *lua) { tb_assert_and_check_return_val(lua, 0); size_t lstr, ltrim; - tb_char_t const* sstr = luaL_checklstring(lua, 1, &lstr); - tb_char_t const* estr = sstr + lstr; - tb_char_t const* trimchars = luaL_optlstring(lua, 2, "", <rim); + tb_char_t const *sstr = luaL_checklstring(lua, 1, &lstr); + tb_char_t const *estr = sstr + lstr; + tb_char_t const *trimchars = luaL_optlstring(lua, 2, "", <rim); tb_int_t const trimtype = (tb_int_t)luaL_optinteger(lua, 3, 0); - do - { + do { tb_assert_and_check_break(sstr && trimchars); tb_check_break(lstr != 0); - tb_char_t const* const rsstr = sstr; - tb_char_t const* const restr = estr; - if (ltrim == 0) + tb_char_t const *const rsstr = sstr; + tb_char_t const *const restr = estr; + if (ltrim == 0) { xm_string_trim_space(&sstr, &estr, trimtype); - else - { + } else { // trim chars - if (trimtype <= 0) sstr = xm_string_ltrim(sstr, estr, trimchars, ltrim); - if (trimtype >= 0) estr = xm_string_rtrim(sstr, estr, trimchars, ltrim); + if (trimtype <= 0) { + sstr = xm_string_ltrim(sstr, estr, trimchars, ltrim); + } + if (trimtype >= 0) { + estr = xm_string_rtrim(sstr, estr, trimchars, ltrim); + } } // no trimed chars tb_check_break(sstr != rsstr || estr != restr); - // ok lua_pushlstring(lua, sstr, estr - sstr); return 1; |
