From d3e95dad61c5ce60db17db905fec4eeb4f65fdce Mon Sep 17 00:00:00 2001 From: Deukhoofd Date: Tue, 7 Sep 2021 18:55:36 +0200 Subject: [PATCH] Change separator detection on csv parsing. --- BuildNatures.cpp | 12 ++++++++---- BuildTypes.cpp | 9 ++++++--- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/BuildNatures.cpp b/BuildNatures.cpp index 95677a7..8d73bac 100644 --- a/BuildNatures.cpp +++ b/BuildNatures.cpp @@ -20,6 +20,8 @@ static CreatureLib::Library::Statistic ParseStatistic(const std::string& stat) { return static_cast(254); } +const char PossibleSeparators[] = {',', ';', '|', '\t', ':'}; + PkmnLib::Library::NatureLibrary* BuildNatures::Build(const std::string& path) { std::ifstream file(path); if (file.fail()) { @@ -33,11 +35,13 @@ PkmnLib::Library::NatureLibrary* BuildNatures::Build(const std::string& path) { return nullptr; } auto divider = ','; - if (strncmp(line.c_str(), "sep=", 4) == 0) { - divider = line[4]; - std::getline(file, line); + for (const auto& s : PossibleSeparators) { + if (line.find(s) != std::string::npos) { + divider = s; + break; + } } - auto library = new PkmnLib::Library::NatureLibrary(); + auto* library = new PkmnLib::Library::NatureLibrary(); std::string substr; while (std::getline(file, line)) { size_t lastStart = 0; diff --git a/BuildTypes.cpp b/BuildTypes.cpp index 01266e8..c9c6471 100644 --- a/BuildTypes.cpp +++ b/BuildTypes.cpp @@ -1,4 +1,5 @@ #include "BuildTypes.hpp" +const char PossibleSeparators[] = {',', ';', '|', '\t', ':'}; CreatureLib::Library::TypeLibrary* BuildTypes::Build(const std::string& path) { std::ifstream file(path); @@ -13,9 +14,11 @@ CreatureLib::Library::TypeLibrary* BuildTypes::Build(const std::string& path) { return nullptr; } auto divider = ','; - if (strncmp(line.c_str(), "sep=", 4) == 0) { - divider = line[4]; - std::getline(file, line); + for (const auto& s :PossibleSeparators) { + if (line.find(s) != std::string::npos){ + divider = s; + break; + } } auto* library = new CreatureLib::Library::TypeLibrary();