void parseMapOptions( std::vector<Option>& options, const std::string& fileName, const std::string& mapName, const std::string& fileModes, const std::string& accessModes, std::set<std::string>* optionsSet, CLogSubsystem* logSubsystem) { if (!logSubsystem) { assert(logSubsystem); } LuaParser luaParser(fileName, fileModes, accessModes); const string configName = MapParser::GetMapConfigName(mapName); const string mapFile = archiveScanner->MapNameToMapFile(mapName); if (mapName.empty()) throw "Missing map name!"; if (configName.empty()) throw "Couldn't determine config filename from the map name '" + mapName + "'!"; luaParser.GetTable("Map"); luaParser.AddString("name", mapName); luaParser.AddString("fileName", filesystem.GetFilename(mapFile)); luaParser.AddString("fullName", mapFile); luaParser.AddString("configFile", configName); luaParser.EndTable(); if (!luaParser.Execute()) { throw content_error("luaParser.Execute() failed: " + luaParser.GetErrorLog()); } const LuaTable root = luaParser.GetRoot(); if (!root.IsValid()) { throw content_error("root table invalid"); } std::set<std::string>* myOptionsSet = NULL; if (optionsSet == NULL) { myOptionsSet = new std::set<std::string>(); } else { myOptionsSet = optionsSet; } for (int index = 1; root.KeyExists(index); index++) { Option opt; if (parseOption(root, index, opt, *myOptionsSet, *logSubsystem)) { options.push_back(opt); } } if (optionsSet == NULL) { delete myOptionsSet; myOptionsSet = NULL; } }
void option_parseMapOptions( std::vector<Option>& options, const std::string& fileName, const std::string& mapName, const std::string& fileModes, const std::string& accessModes, std::set<std::string>* optionsSet) { LuaParser luaParser(fileName, fileModes, accessModes); const string mapFile = archiveScanner->MapNameToMapFile(mapName); const string configName = MapParser::GetMapConfigName(mapFile); if (mapName.empty()) throw "Missing map name!"; if (configName.empty()) throw "Could not determine config-file name from the map name '" + mapName + "'!"; luaParser.GetTable("Map"); luaParser.AddString("name", mapName); luaParser.AddString("fileName", FileSystem::GetFilename(mapFile)); luaParser.AddString("fullName", mapFile); luaParser.AddString("configFile", configName); luaParser.EndTable(); if (!luaParser.Execute()) { throw content_error("luaParser.Execute() failed: " + luaParser.GetErrorLog()); } const LuaTable root = luaParser.GetRoot(); if (!root.IsValid()) { throw content_error("root table invalid"); } std::set<std::string>* myOptionsSet = NULL; if (optionsSet == NULL) { myOptionsSet = new std::set<std::string>(); } else { myOptionsSet = optionsSet; } for (int index = 1; root.KeyExists(index); index++) { Option opt; try { option_parseOption(root, index, opt, *myOptionsSet); options.push_back(opt); } catch (const content_error& err) { LOG_L(L_WARNING, "Failed parsing map-option %d from %s for map %s: %s", index, fileName.c_str(), mapName.c_str(), err.what()); } } if (optionsSet == NULL) { delete myOptionsSet; myOptionsSet = NULL; } }
void option_parseOptionsLuaString( std::vector<Option>& options, const std::string& optionsLuaString, const std::string& accessModes, std::set<std::string>* optionsSet) { LuaParser luaParser(optionsLuaString, accessModes); option_parseOptionsInternal(options, luaParser, "<Lua-Text-Chunk>", optionsSet); }
void option_parseOptions( std::vector<Option>& options, const std::string& fileName, const std::string& fileModes, const std::string& accessModes, std::set<std::string>* optionsSet) { LuaParser luaParser(fileName, fileModes, accessModes); option_parseOptionsInternal(options, luaParser, fileName, optionsSet); }
void parseOptions( std::vector<Option>& options, const std::string& fileName, const std::string& fileModes, const std::string& accessModes, const std::string& mapName, std::set<std::string>* optionsSet, CLogSubsystem* logSubsystem) { if (!logSubsystem) { assert(logSubsystem); } LuaParser luaParser(fileName, fileModes, accessModes); const string configName = MapParser::GetMapConfigName(mapName); if (!mapName.empty() && !configName.empty()) { luaParser.GetTable("Map"); luaParser.AddString("fileName", mapName); luaParser.AddString("fullName", "maps/" + mapName); luaParser.AddString("configFile", configName); luaParser.EndTable(); } if (!luaParser.Execute()) { throw content_error("luaParser.Execute() failed: " + luaParser.GetErrorLog()); } const LuaTable root = luaParser.GetRoot(); if (!root.IsValid()) { throw content_error("root table invalid"); } std::set<std::string>* myOptionsSet = NULL; if (optionsSet == NULL) { myOptionsSet = new std::set<std::string>(); } else { myOptionsSet = optionsSet; } for (int index = 1; root.KeyExists(index); index++) { Option opt; if (parseOption(root, index, opt, *myOptionsSet, *logSubsystem)) { options.push_back(opt); } } if (optionsSet == NULL) { delete myOptionsSet; myOptionsSet = NULL; } }
void parseOptions( std::vector<Option>& options, const std::string& fileName, const std::string& fileModes, const std::string& accessModes, std::set<std::string>* optionsSet, CLogSubsystem* logSubsystem) { if (!logSubsystem) { assert(logSubsystem); } LuaParser luaParser(fileName, fileModes, accessModes); if (!luaParser.Execute()) { throw content_error("luaParser.Execute() failed: " + luaParser.GetErrorLog()); } const LuaTable root = luaParser.GetRoot(); if (!root.IsValid()) { throw content_error("root table invalid"); } std::set<std::string>* myOptionsSet = NULL; if (optionsSet == NULL) { myOptionsSet = new std::set<std::string>(); } else { myOptionsSet = optionsSet; } for (int index = 1; root.KeyExists(index); index++) { Option opt; try { parseOption(root, index, opt, *myOptionsSet); options.push_back(opt); } catch (content_error& err) { logOutput.Print(*logSubsystem, "Failed parsing option %d from %s: %s", index, fileName.c_str(), err.what()); } } if (optionsSet == NULL) { delete myOptionsSet; myOptionsSet = NULL; } }
void info_parseInfo( std::vector<InfoItem>& info, const std::string& fileName, const std::string& fileModes, const std::string& accessModes, std::set<std::string>* infoSet) { LuaParser luaParser(fileName, fileModes, accessModes); if (!luaParser.Execute()) { throw content_error("luaParser.Execute() failed: " + luaParser.GetErrorLog()); } const LuaTable root = luaParser.GetRoot(); if (!root.IsValid()) { throw content_error("root table invalid"); } std::set<std::string>* myInfoSet = NULL; if (infoSet == NULL) { myInfoSet = new std::set<std::string>(); } else { myInfoSet = infoSet; } for (int index = 1; root.KeyExists(index); index++) { InfoItem inf; if (info_parseInfoItem(root, index, inf, *myInfoSet)) { info.push_back(inf); } } if (infoSet == NULL) { delete myInfoSet; myInfoSet = NULL; } }