skip spaces in delimiter change tags
This commit is contained in:
parent
d14c647134
commit
65d6395e71
3 changed files with 13 additions and 2 deletions
|
@ -18,6 +18,8 @@ void template_type::process_text(citer begin, citer end) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
void template_type::tokenize(const std::string& tmp) {
|
void template_type::tokenize(const std::string& tmp) {
|
||||||
std::string open{"{{"}, close{"}}"};
|
std::string open{"{{"}, close{"}}"};
|
||||||
citer beg = tmp.begin();
|
citer beg = tmp.begin();
|
||||||
|
@ -41,8 +43,12 @@ void template_type::tokenize(const std::string& tmp) {
|
||||||
if (*(beg + open_pos + open.size()) == '=' &&
|
if (*(beg + open_pos + open.size()) == '=' &&
|
||||||
*(beg + close_pos - 1) == '=')
|
*(beg + close_pos - 1) == '=')
|
||||||
{
|
{
|
||||||
open = {beg + open_pos + open.size() + 1, beg + tmp.find(' ',open_pos)};
|
auto tok_beg = beg + open_pos + open.size() + 1;
|
||||||
close = {beg + tmp.find(' ', open_pos) + 1, beg + close_pos - 1};
|
auto tok_end = beg + close_pos - 1;
|
||||||
|
auto front_skip = first_not_ws(tok_beg, tok_end);
|
||||||
|
auto back_skip = first_not_ws(reverse(tok_end), reverse(tok_beg));
|
||||||
|
open = {front_skip, beg + tmp.find(' ', front_skip - beg)};
|
||||||
|
close = {beg + tmp.rfind(' ', back_skip - beg) + 1, back_skip + 1};
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
process_text(beg + cur_pos, tmp.end());
|
process_text(beg + cur_pos, tmp.end());
|
||||||
|
|
|
@ -12,6 +12,10 @@ mstch::citer mstch::first_not_ws(mstch::criter begin, mstch::criter end) {
|
||||||
return --(end.base());
|
return --(end.base());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mstch::criter mstch::reverse(mstch::citer it) {
|
||||||
|
return std::reverse_iterator<mstch::citer>(it);
|
||||||
|
}
|
||||||
|
|
||||||
std::string mstch::html_escape(const std::string& str) {
|
std::string mstch::html_escape(const std::string& str) {
|
||||||
std::string out;
|
std::string out;
|
||||||
citer start = str.begin();
|
citer start = str.begin();
|
||||||
|
|
|
@ -11,6 +11,7 @@ using criter = std::string::const_reverse_iterator;
|
||||||
citer first_not_ws(citer begin, citer end);
|
citer first_not_ws(citer begin, citer end);
|
||||||
citer first_not_ws(criter begin, criter end);
|
citer first_not_ws(criter begin, criter end);
|
||||||
std::string html_escape(const std::string& str);
|
std::string html_escape(const std::string& str);
|
||||||
|
criter reverse(citer it);
|
||||||
|
|
||||||
template<class... Args>
|
template<class... Args>
|
||||||
auto visit(Args&&... args) -> decltype(boost::apply_visitor(
|
auto visit(Args&&... args) -> decltype(boost::apply_visitor(
|
||||||
|
|
Loading…
Reference in a new issue