void Templateiser::processTemplate ( std::string &code, const std::string &templateText ) { std::string::const_iterator templateItr = templateText.begin(); while ( templateItr != templateText.end() ) { if ( *templateItr != '[' ) { code += *templateItr; templateItr++; } else { templateItr++; if (templateItr == templateText.end()) { code += '['; } else { switch(*templateItr) { default: // it's not a code, so just let the next loop hit it and output it break; case '$': replaceVar(code,++templateItr,templateText); break; case '*': processLoop(code,++templateItr,templateText); break; case '?': processIF(code,++templateItr,templateText); break; case '-': case '#': // treat metadata as comments when parsing processComment(code,++templateItr,templateText); break; case '!': processInclude(code,++templateItr,templateText); break; } } } } }
QString replaceVar(QString str, const QString name, const QVariant& value) { QHash<QString, QVariant> variableValues; variableValues.insert(name, value); return replaceVar(str, variableValues); }