summaryrefslogtreecommitdiff
path: root/core/src/xmake/string/trim.c
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/xmake/string/trim.c')
-rw-r--r--core/src/xmake/string/trim.c79
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, "", &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, "", &ltrim);
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;