410{
411 try
412 {
413 Regex reBegin(
414 __T(
"<!--[\t\v\f ]*\\$[a-zA-Z0-9_]+[\t\v\f ]*-->[\t\v\f \r\n]*")
415 );
416
417 Regex::MatchResults matchBegin;
418 while (_begin < _end && reBegin.search(_begin, _end, matchBegin)) {
420
421
422 String _name = __getName(matchBegin[0].first, matchBegin[0].second);
423 String strEndPattern =
424 __T(
"<!--[\t\v\f ]*/[\t\v\f ]*\\$")
425 + _name
426 +
__T(
"[\t\v\f ]*-->[\t\v\f \r\n]*");
427
428 Regex reEnd(strEndPattern);
429 Regex::MatchResults matchEnd;
430
431 if (reEnd.search(matchBegin[0].second, _end, matchEnd)) {
432
433 if (_begin < matchBegin[0].first) {
435 }
436
437
438
439
440#ifdef __DCL_DEBUG
444 __T(
"Warning - exists %ls ==> replaced\n"),
445 _name.data()
446 );
447 }
448#endif
450
451 TextNode node;
454
456
457 if (matchBegin[0].second < matchEnd[0].first) {
458 sub.parse(matchBegin[0].second, matchEnd[0].first);
459 }
460
461 _begin = matchEnd[0].second;
462
463 }
464 else {
465 _begin = matchBegin[0].second;
466 }
467 }
468
469 if (_begin < _end) {
470
472 }
473 }
474 catch(RegexException* e) {
478 }
479}
#define __DCL_TRACE1(fmt, arg1)
#define SUB_TEMPLATE_MAP()
void parseHelper(const char_t *_begin, const char_t *_end)