diff options
Diffstat (limited to 'server/src/formattools.cc')
-rw-r--r-- | server/src/formattools.cc | 168 |
1 files changed, 0 insertions, 168 deletions
diff --git a/server/src/formattools.cc b/server/src/formattools.cc deleted file mode 100644 index 6a58d74..0000000 --- a/server/src/formattools.cc +++ /dev/null @@ -1,168 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/*************************************************************************** - * formattools.cc - * - * Mon Oct 27 09:34:46 CET 2008 - * Copyright 2008 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 "formattools.h" -#include "mltokenizer.h" -#include "luaformatmapper.h" - -/** - * Replace all ocurrences of c with cc. - */ -static std::string escape_string(std::string str, char c) -{ - std::string out; - for(size_t i = 0; i < str.length(); i++) { - if(str[i] == c) out += str[i]; - out += str[i]; - } - return out; -} - -/** - * Replace all ocurrences of cc with c. - */ -static std::string deescape_string(std::string str, char c) -{ - std::string out; - for(size_t i = 0; i < str.length(); i++) { - if(i < str.length() - 1 && str[i] == c && str[i + 1] == c) { - out += str[i]; - i++; // Skip the next character - } else { - out += str[i]; - } - } - return out; -} - -std::string escape_multilist_string(std::string str) -{ - return escape_string(escape_string(str, '{'), '}'); -} - -std::string escape_resume_string(std::string str) -{ - return escape_string(escape_string(str, '['), ']'); -} - -Fields get_multilist_values(std::string mlvalue) -{ - std::map<std::string, std::string> values; - - std::vector< mltoken_t > tokens = mltokenize(mlvalue); - std::vector< mltoken_t >::iterator i = tokens.begin(); - while(i != tokens.end()) { - if(i->type == MLTT_VALUE) values[i->name] = i->value; - i++; - } - - return values; -} - -std::string render_multilist_string(std::string mlvalue) -{ - std::string output; - - std::vector< mltoken_t > tokens = mltokenize(mlvalue); - std::vector< mltoken_t >::iterator i = tokens.begin(); - while(i != tokens.end()) { - output += i->value; - i++; - } - - return output; -} - -std::string render_resume_string(std::string str, Fields &fields) -{ - std::string out; - - LUAFormatMapper mapper(fields); - - // Replace ${foo|bar} with bar - for(size_t i = 0; i < str.length(); i++) { - if(str[i] == '$') { - if(i < str.length() - 2 && - str[i+1] == '[' && str[i+2] != '[') { - // We are in a key/value - - // Look for end marker - size_t j; - for(j = i + 2; j < str.length(); j++) { - if(str[j] == ']' && str[j + 1] != ']') { - // We have an end marker - break; - } - } - - std::string luaprogram = str.substr(i + 2, j - (i + 2)); - std::string value = mapper.map(luaprogram); - out += escape_resume_string(value); - - i = j; - - } else out += str[i]; - } else { - out += str[i]; - } - } - - return deescape_string(deescape_string(out, '['), ']'); -} - -#ifdef TEST_FORMATTOOLS - -int main() -{ - Fields fields; - fields["dingo"] = "[[meget dyr]]"; - fields["fnuld"] = "Zimbabwe"; - fields["mlstring"] = - "Ladidaa ${myname|bar} ${{dingo|dyt}} ${dims|{{dimmer}}}.\n" - "Ladidaa ${myname|bole} ${{dingo|dyt}} ${dims|[[fillerhejs]]}.\n" - "Ladidaa ${myname|daske} ${{dingo|dyt}} ${dims|buller}.\n"; - - /* - printf("%s\n", deescape_string(deescape_string("[[] []]", '['), ']').c_str()); - - if(escape_multilist_string("${} {{}}") != "${{}} {{{{}}}}") return 1; - if(escape_resume_string("$[] [[]]") != "$[[]] [[[[]]]]") return 1; - - std::string mlstring = "Ladidaa ${myname|bar} ${{dingo|dyt}} ${dims|dulle}."; - printf("{%s}\n", render_multilist_string(mlstring).c_str()); - */ - - std::string resumestring = "Ladidaa \n$[" - "printfmlval(mlstring, ' * ', true, '<p>', 'myname', '</p>', 'PRE', 'dims', 'POST')" - "] dalidaadoo."; - printf("{%s}\n", render_resume_string(resumestring, fields).c_str()); - - // std::string resumestring2 = "Ladidaa \n$[printfmlval(mlstring, ' * ', false, '<p>', 'myname', '</p>', 'PRE', 'dims', 'POST')] dalidaadoo."; - // printf("{%s}\n", render_resume_string(resumestring2, fields).c_str()); - return 0; -} - -#endif/*TEST_FORMATTOOLS*/ |