From a3520f555daa549080662398a541eb998228c31e Mon Sep 17 00:00:00 2001 From: Leonetienne Date: Wed, 2 Jun 2021 15:14:27 +0200 Subject: [PATCH] Implemented abbreviations --- Hazelnupp.vpp | Bin 684032 -> 684032 bytes Hazelnupp/Hazelnupp.cpp | 38 ++++++++++++++++++++++++++++++++++++-- Hazelnupp/Hazelnupp.h | 18 +++++++++++++++++- Hazelnupp/main.cpp | 21 ++++++++++++++++----- 4 files changed, 69 insertions(+), 8 deletions(-) diff --git a/Hazelnupp.vpp b/Hazelnupp.vpp index 0e63831e4a5c9b31a7d0fe2b0b57c9601b9e5f43..8cffd19a793c4f4e3e83743d7b5eedbe4e2484b3 100644 GIT binary patch delta 14869 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 CKX~T= diff --git a/Hazelnupp/Hazelnupp.cpp b/Hazelnupp/Hazelnupp.cpp index acfd3f8..5997042 100644 --- a/Hazelnupp/Hazelnupp.cpp +++ b/Hazelnupp/Hazelnupp.cpp @@ -23,6 +23,8 @@ void Hazelnupp::Parse(const int argc, const char* const* argv) // Populate raw arguments PopulateRawArgs(argc, argv); + // Expand abbreviations + ExpandAbbreviations(); executableName = std::string(rawArgs[0]); @@ -79,6 +81,22 @@ void Hazelnupp::PopulateRawArgs(const int argc, const char* const* argv) return; } +void Hazelnupp::ExpandAbbreviations() +{ + for (std::string& arg : rawArgs) + { + // Is arg registered as an abbreviation? + auto abbr = abbreviations.find(arg); + if (abbr != abbreviations.end()) + { + // Yes: replace arg with the long form + arg = abbr->second; + } + } + + return; +} + bool Hazelnupp::HasParam(const std::string& key) const { return parameters.find(key) != parameters.end(); @@ -135,7 +153,23 @@ const std::string& Hazelnupp::GetExecutableName() const return executableName; } -const Value* Hazelnupp::operator[](const std::string& key) +const Value* Hazelnupp::operator[](const std::string& key) const { - return parameters[key]->Value(); + return parameters.find(key)->second->Value(); +} + +void Hazelnupp::RegisterAbbreviation(const std::string& abbrev, const std::string& target) +{ + abbreviations.insert(std::pair(abbrev, target)); + return; +} + +const std::string& Hazelnupp::GetAbbreviation(const std::string& abbrev) const +{ + return abbreviations.find(abbrev)->second; +} + +bool Hazelnupp::HasAbbreviation(const std::string& abbrev) const +{ + return abbreviations.find(abbrev) != abbreviations.end(); } diff --git a/Hazelnupp/Hazelnupp.h b/Hazelnupp/Hazelnupp.h index 606eb3b..1522954 100644 --- a/Hazelnupp/Hazelnupp.h +++ b/Hazelnupp/Hazelnupp.h @@ -16,15 +16,28 @@ public: const std::string& GetExecutableName() const; //! Will return the value given a key - const Value* operator[](const std::string& key); + const Value* operator[](const std::string& key) const; //! Will check wether a parameter exists given a key, or not bool HasParam(const std::string& key) const; + // Abbreviations + //! Will register an abbreviation (like -f for --force) + void RegisterAbbreviation(const std::string& abbrev, const std::string& target); + + //! Will return the long form of an abbreviation (like --force for -f) + const std::string& GetAbbreviation(const std::string& abbrev) const; + + //! Will check wether or not an abbreviation is registered + bool HasAbbreviation(const std::string& abbrev) const; + private: //! Will translate the c-like args to an std::vector void PopulateRawArgs(const int argc, const char* const* argv); + //! Will replace all args matching an abbreviation with their long form (like -f for --force) + void ExpandAbbreviations(); + //! Will parse the next parameter. Returns the index of the next parameter. std::size_t ParseNextParameter(const std::size_t parIndex, Parameter*& out_Par); @@ -34,6 +47,9 @@ private: std::string executableName; //! The path of the executable. Always argv[0] std::unordered_map parameters; + // These are abbreviations. Like, -f for --force. + std::unordered_map abbreviations; + std::vector rawArgs; // EvaluateValues diff --git a/Hazelnupp/main.cpp b/Hazelnupp/main.cpp index b72b656..36996ae 100644 --- a/Hazelnupp/main.cpp +++ b/Hazelnupp/main.cpp @@ -6,7 +6,7 @@ int main(int argc, char** argv) { std::string arg0 = "meinpfad"; - std::string arg1 = "--word"; + std::string arg1 = "-w"; std::string arg2 = "6669"; std::string arg3 = "--alfred"; std::string arg4 = "banane7"; @@ -19,11 +19,22 @@ int main(int argc, char** argv) arg4.data() }; - Hazelnupp args(testArgv.size(), testArgv.data()); - //Hazelnupp args(argc, argv); + Hazelnupp args; - int i = *(IntValue*)args["--word"]; - std::cout << i << std::endl; + args.RegisterAbbreviation("-w", "--word"); + + //args.Parse(testArgv.size(), testArgv.data()); + args.Parse(argc, argv); + + if (args.HasParam("--word")) + { + int i = *(IntValue*)args["--word"]; + std::cout << i << std::endl; + } + else + { + std::cout << "No --word!" << std::endl; + } //std::cout << args.GetExecutableName() << std::endl;