aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
author_ov4 <ov4@ov4.org>2026-09-05 15:43:51 +0000
committer_ov4 <ov4@ov4.org>2026-09-05 15:43:51 +0000
commitd69427039bc962f28edf826badbfe77ffbcac37f (patch)
tree4875639edd156be7d0fc825a82ccff57373d971c /include
parent036e7efcb9f4e80c8d76b9d1486c122915b702a1 (diff)
bracket + trim + pivot
Diffstat (limited to 'include')
-rw-r--r--include/parser/token.h26
1 files changed, 25 insertions, 1 deletions
diff --git a/include/parser/token.h b/include/parser/token.h
index 1896b3f..5b65d67 100644
--- a/include/parser/token.h
+++ b/include/parser/token.h
@@ -21,6 +21,27 @@ public:
int bracket_depth = 0;
};
+size_t find_non_space_previous(string s, size_t i)
+{
+ size_t len = s.size(), backup = i;
+ i--; // skip current char
+ for ( ; i < len; i--)
+ if (s[i] != ' ')
+ return i+1; // because region is [x, y)
+
+ return backup;
+}
+
+string trim_space(const string &s)
+{
+ size_t b = s.find_first_not_of(" \t");
+ if (b == string::npos)
+ return "";
+ size_t e = s.find_last_not_of(" \t");
+ return s.substr(b, e - b + 1);
+}
+
+
bool is_symbol(char c)
{
if (c == '&' || c == '|' || c == '(' || c == ')')
@@ -104,8 +125,11 @@ void token_push(string s, size_t current, size_t prev, int bracket_depth, bool i
return;
}
+ string trimed = trim_space(sub);
+ if (trimed == "") return;
+
tmp.token_type = TEXT;
- tmp.text = sub;
+ tmp.text = trimed;
token.push_back(tmp);
}