remove list_index, add parse() that takes number of items

master
Daniel Kolesa 2016-10-24 02:45:15 +02:00
parent 4d830b08ad
commit 1a08b018c6
2 changed files with 12 additions and 19 deletions

View File

@ -768,6 +768,7 @@ namespace util {
void skip(); void skip();
bool parse(); bool parse();
ostd::Size parse(ostd::Size n);
ostd::Size count(); ostd::Size count();
CsString element() const; CsString element() const;
@ -776,10 +777,6 @@ private:
CsState &p_state; CsState &p_state;
}; };
OSTD_EXPORT ostd::Maybe<CsString> list_index(
CsState &cs, ostd::ConstCharRange s, ostd::Size idx
);
template<typename R> template<typename R>
inline ostd::Ptrdiff format_int(R &&writer, CsInt val) { inline ostd::Ptrdiff format_int(R &&writer, CsInt val) {
return ostd::format(ostd::forward<R>(writer), IntFormat, val); return ostd::format(ostd::forward<R>(writer), IntFormat, val);

View File

@ -372,6 +372,17 @@ endblock:
return true; return true;
} }
ostd::Size ListParser::parse(ostd::Size n) {
ostd::Size ret = 0;
for (ostd::Size i = 0; i < n; ++i) {
if (!parse()) {
return ret;
}
++ret;
}
return ret;
}
ostd::Size ListParser::count() { ostd::Size ListParser::count() {
ostd::Size ret = 0; ostd::Size ret = 0;
while (parse()) { while (parse()) {
@ -394,21 +405,6 @@ endblock:
s.advance(item.size()); s.advance(item.size());
return s; return s;
} }
OSTD_EXPORT ostd::Maybe<CsString> list_index(
CsState &cs, ostd::ConstCharRange s, ostd::Size idx
) {
ListParser p(cs, s);
for (ostd::Size i = 0; i < idx; ++i) {
if (!p.parse()) {
return ostd::nothing;
}
}
if (!p.parse()) {
return ostd::nothing;
}
return ostd::move(p.element());
}
} /* namespace util */ } /* namespace util */
} /* namespace cscript */ } /* namespace cscript */