3 #include "html_tag.h"
\r
5 void litehtml::trim(tstring &s)
\r
7 tstring::size_type pos = s.find_first_not_of(_t(" \n\r\t"));
\r
8 if(pos != tstring::npos)
\r
10 s.erase(s.begin(), s.begin() + pos);
\r
12 pos = s.find_last_not_of(_t(" \n\r\t"));
\r
13 if(pos != tstring::npos)
\r
15 s.erase(s.begin() + pos + 1, s.end());
\r
19 void litehtml::lcase(tstring &s)
\r
21 for(tstring::iterator i = s.begin(); i != s.end(); i++)
\r
23 (*i) = t_tolower(*i);
\r
27 litehtml::tstring::size_type litehtml::find_close_bracket(const tstring &s, tstring::size_type off, tchar_t open_b, tchar_t close_b)
\r
30 for(tstring::size_type i = off; i < s.length(); i++)
\r
35 } else if(s[i] == close_b)
\r
44 return tstring::npos;
\r
47 int litehtml::value_index( const tstring& val, const tstring& strings, int defValue, tchar_t delim )
\r
49 if(val.empty() || strings.empty() || !delim)
\r
55 tstring::size_type delim_start = 0;
\r
56 tstring::size_type delim_end = strings.find(delim, delim_start);
\r
57 tstring::size_type item_len = 0;
\r
60 if(delim_end == tstring::npos)
\r
62 item_len = strings.length() - delim_start;
\r
65 item_len = delim_end - delim_start;
\r
67 if(item_len == val.length())
\r
69 if(val == strings.substr(delim_start, item_len))
\r
75 delim_start = delim_end;
\r
76 if(delim_start == tstring::npos) break;
\r
78 if(delim_start == strings.length()) break;
\r
79 delim_end = strings.find(delim, delim_start);
\r
84 bool litehtml::value_in_list( const tstring& val, const tstring& strings, tchar_t delim )
\r
86 int idx = value_index(val, strings, -1, delim);
\r
94 void litehtml::split_string(const tstring& str, string_vector& tokens, const tstring& delims, const tstring& delims_preserve, const tstring& quote)
\r
96 if(str.empty() || (delims.empty() && delims_preserve.empty()))
\r
101 tstring all_delims = delims + delims_preserve + quote;
\r
103 tstring::size_type token_start = 0;
\r
104 tstring::size_type token_end = str.find_first_of(all_delims, token_start);
\r
105 tstring::size_type token_len = 0;
\r
109 while( token_end != tstring::npos && quote.find_first_of(str[token_end]) != tstring::npos )
\r
111 if(str[token_end] == _t('('))
\r
113 token_end = find_close_bracket(str, token_end, _t('('), _t(')'));
\r
114 } else if(str[token_end] == _t('['))
\r
116 token_end = find_close_bracket(str, token_end, _t('['), _t(']'));
\r
117 } else if(str[token_end] == _t('{'))
\r
119 token_end = find_close_bracket(str, token_end, _t('{'), _t('}'));
\r
122 token_end = str.find_first_of(str[token_end], token_end + 1);
\r
124 if(token_end != tstring::npos)
\r
126 token_end = str.find_first_of(all_delims, token_end + 1);
\r
130 if(token_end == tstring::npos)
\r
132 token_len = tstring::npos;
\r
135 token_len = token_end - token_start;
\r
138 token = str.substr(token_start, token_len);
\r
141 tokens.push_back( token );
\r
143 if(token_end != tstring::npos && !delims_preserve.empty() && delims_preserve.find_first_of(str[token_end]) != tstring::npos)
\r
145 tokens.push_back( str.substr(token_end, 1) );
\r
148 token_start = token_end;
\r
149 if(token_start == tstring::npos) break;
\r
151 if(token_start == str.length()) break;
\r
152 token_end = str.find_first_of(all_delims, token_start);
\r
156 void litehtml::join_string(tstring& str, const string_vector& tokens, const tstring& delims)
\r
159 for(size_t i=0; i<tokens.size(); ++i)
\r