427{
428 try
429 {
430 Regex reBegin(
431 __T(
"<!--[\t\v\f ]*\\$[a-zA-Z0-9_]+[\t\v\f ]*-->[\t\v\f \r\n]*")
432 );
433
434 Regex::MatchResults matchBegin;
435 while (_begin < _end && reBegin.search(_begin, _end, matchBegin)) {
437
438
439 String _name = __getName(matchBegin[0].first, matchBegin[0].second);
440 String strEndPattern =
441 __T(
"<!--[\t\v\f ]*/[\t\v\f ]*\\$")
442 + _name
443 +
__T(
"[\t\v\f ]*-->[\t\v\f \r\n]*");
444
445 Regex reEnd(strEndPattern);
446 Regex::MatchResults matchEnd;
447
448 if (reEnd.search(matchBegin[0].second, _end, matchEnd)) {
449
450 if (_begin < matchBegin[0].first) {
452 }
453
454
455
456
457#ifdef __DCL_DEBUG
461 __T(
"Warning - exists %ls ==> replaced\n"),
462 _name.data()
463 );
464 }
465#endif
467
468 TextNode node;
471
473
474 if (matchBegin[0].second < matchEnd[0].first) {
475 sub.parse(matchBegin[0].second, matchEnd[0].first);
476 }
477
478 _begin = matchEnd[0].second;
479
480 }
481 else {
482 _begin = matchBegin[0].second;
483 }
484 }
485
486 if (_begin < _end) {
487
489 }
490 }
491 catch(RegexException* e) {
495 }
496}
#define __DCL_TRACE1(fmt, arg1)
#define SUB_TEMPLATE_MAP()
void parseHelper(const char_t *_begin, const char_t *_end)