diff options
| author | deva <deva> | 2010-08-12 10:57:04 +0000 | 
|---|---|---|
| committer | deva <deva> | 2010-08-12 10:57:04 +0000 | 
| commit | d9338083192084613e5530b02710b796252d342b (patch) | |
| tree | e0ec2b36e0de62328e5fd5d3b597f6ee71d1b18f /server/src/resumeparser.cc | |
| parent | dbab8458dcce186e7eb7a114a83f759d7db5445a (diff) | |
New scripting system part2.
Diffstat (limited to 'server/src/resumeparser.cc')
| -rw-r--r-- | server/src/resumeparser.cc | 122 | 
1 files changed, 24 insertions, 98 deletions
| diff --git a/server/src/resumeparser.cc b/server/src/resumeparser.cc index 37b36f4..c80c2f0 100644 --- a/server/src/resumeparser.cc +++ b/server/src/resumeparser.cc @@ -31,110 +31,36 @@  #include "luaresume.h"  #include "configuration.h" -static std::string resume_parser_format(Resume &r, Commit &commit) +std::string resume_parser(Macro ¯o, Commit &commit)  { -  const char* format = r.attributes["format"].c_str(); - -  std::string resume; -  std::string var; +  LUAResume luaresume(commit); -  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; +  std::string code; -      case '{': -        p++; -        var = ""; -        // Parser -        while(p < theend && *p != '}') { -          var.append(1, *p); -          p++; +  std::vector< Script >::iterator spi = macro.resume_scripts.begin(); +  while(spi != macro.resume_scripts.end()) { +    if(spi->attributes.find("src") != spi->attributes.end()) { +      std::string src = spi->attributes["src"]; +      std::string file = +        Conf::xml_basedir + "/include/" + src; +      FILE *fp = fopen(file.c_str(), "r"); +      if(fp) { +        char buf[64]; +        size_t sz; +        std::string inc; +        while((sz = fread(buf, 1, sizeof(buf), fp)) != 0) { +          inc.append(buf, sz);          } -        //        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; +        fclose(fp); +        code += "\n-- BEGIN INCLUDE: '" + src + "'\n"; +        code += inc; +        code += "\n-- END INCLUDE: '" + src + "'\n";        } -      p++; -     break; - -    default: -      resume.append(1, *p); -      p++; -      break; +    } else { +      code += spi->code;      } +    spi++;    } -  return resume; -} - -static std::string resume_parser_lua(Macro ¯o, Commit &commit) -{ -  LUAResume luaresume(commit); -  std::string lua; -  /* -  std::vector< ScriptInclude >::iterator spii = -    macro.script_includes.begin(); -  while(spii != macro.script_includes.end()) { -    std::string file = -      Conf::xml_basedir + "/include/" + spii->attributes["file"]; -    FILE *fp = fopen(file.c_str(), "r"); -    if(fp) { -      char buf[64]; -      size_t sz; -      std::string inc; -      while((sz = fread(buf, 1, sizeof(buf), fp)) != 0) { -        lua.append(buf, sz); -      } -      fclose(fp); -    } -    spii++; -  } -  */ -  lua += macro.resume.attributes["format"]; - -  return luaresume.run(lua); -} - -std::string resume_parser(Macro ¯o, Commit &commit) -{ -  if(macro.resume.attributes["language"] == "lua") { -    return resume_parser_lua(macro, commit); -  } - -  // Default to pracro format language. -  return resume_parser_format(macro.resume, commit); +  return luaresume.run(code);  } | 
