summaryrefslogtreecommitdiff
path: root/client/formatparser.cc
diff options
context:
space:
mode:
authordeva <deva>2008-06-18 11:03:34 +0000
committerdeva <deva>2008-06-18 11:03:34 +0000
commit8c3994b02e3a0cf81ead56c8dcfefb67be078328 (patch)
tree7bf98b5b9438e0f64725bfc12a34b98c20583116 /client/formatparser.cc
parentb681594b7e4f9a5375b555b152d661581c600a96 (diff)
Restructured widget building, completed inital version of MultiList with format string parsing, db commiting and rereading.
Diffstat (limited to 'client/formatparser.cc')
-rw-r--r--client/formatparser.cc100
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;
+}