diff options
Diffstat (limited to 'client/formatparser.cc')
-rw-r--r-- | client/formatparser.cc | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/client/formatparser.cc b/client/formatparser.cc new file mode 100644 index 0000000..260a2bf --- /dev/null +++ b/client/formatparser.cc @@ -0,0 +1,100 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/*************************************************************************** + * resumeparser.cc + * + * Mon Oct 1 11:17:35 CEST 2007 + * Copyright 2007 Bent Bisballe Nyeng + * deva@aasimon.org + ****************************************************************************/ + +/* + * This file is part of Pracro. + * + * Pracro is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * Pracro is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Pracro; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ +#include "formatparser.h" + +#include <string.h> + +QString format_parser(QString format, QVector< Widget *> widgets) +{ + QString resume; + QString var; + + QChar *p = format.data(); + QChar *theend = p + format.size(); + while(p < theend) { + switch((*p).toLatin1()) { + case '$': + p++; + switch((*p).toLatin1()) { + case '$': + resume.append(*p); + break; + + case '{': + p++; + var = ""; + // Parser + while(p < theend && *p != '}') { + var.append(*p); + p++; + } + { + QVector< Widget* >::iterator i = widgets.begin(); + while (i != widgets.end()) { + Widget* w = *i; + if(w->getName() == var) resume += w->getValue(); + i++; + } + } + break; + + default: + resume.append(*p); + break; + } + p++; + break; + + case '\\': + p++; + switch((*p).toLatin1()) { + case 't': + resume.append('\t'); + break; + case 'n': + resume.append('\n'); + break; + case 'r': + resume.append('\r'); + break; + case '\\': + default: + resume.append(*p); + break; + } + p++; + break; + + default: + resume.append(QChar(*p)); + p++; + break; + } + } + + return resume; +} |