diff options
Diffstat (limited to 'server/src/resumeparser.cc')
-rw-r--r-- | server/src/resumeparser.cc | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/server/src/resumeparser.cc b/server/src/resumeparser.cc new file mode 100644 index 0000000..769bb25 --- /dev/null +++ b/server/src/resumeparser.cc @@ -0,0 +1,97 @@ +/* -*- 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, Lars Bisballe Jensen and Peter Skaarup + * deva@aasimon.org, elsenator@gmail.com and piparum@piparum.dk + ****************************************************************************/ + +/* + * 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 "resumeparser.h" + +#include <string.h> + +std::string resume_parser(const char *format, Commit &commit) +{ + std::string resume; + std::string var; + + const char *p = format; + const char *theend = p + strlen(format); + while(p < theend) { + switch(*p) { + case '$': + p++; + switch(*p) { + case '$': + resume.append(1, *p); + break; + + case '{': + p++; + var = ""; + // Parser + while(p < theend && *p != '}') { + var.append(1, *p); + p++; + } + // p++; + printf("[%s]\n", var.c_str()); + // resume += "var(" + var + ")"; + resume += commit.fields[var]; + break; + + default: + resume.append(1, *p); + // printf("Illigal $ command\n"); + break; + } + p++; + break; + + case '\\': + p++; + switch(*p) { + case 't': + resume.append(1, '\t'); + break; + case 'n': + resume.append(1, '\n'); + break; + case 'r': + resume.append(1, '\r'); + break; + case '\\': + default: + resume.append(1, *p); + break; + } + p++; + break; + + default: + resume.append(1, *p); + p++; + break; + } + } + + return resume; +} |