diff --git a/include/loot/metadata/conditional_metadata.h b/include/loot/metadata/conditional_metadata.h index 5bd706e0..cd47658b 100644 --- a/include/loot/metadata/conditional_metadata.h +++ b/include/loot/metadata/conditional_metadata.h @@ -56,14 +56,6 @@ public: */ LOOT_API bool IsConditional() const; - /** - * Check if the condition string is syntactically valid. - * - * Throws a ``ConditionSyntaxError`` if the condition string's syntax is not - * valid. - */ - LOOT_API void ParseCondition() const; - /** * Get the condition string. * @return The object's condition string. diff --git a/src/api/metadata/condition_evaluator.cpp b/src/api/metadata/condition_evaluator.cpp index b4c5fd78..000d1a45 100644 --- a/src/api/metadata/condition_evaluator.cpp +++ b/src/api/metadata/condition_evaluator.cpp @@ -260,6 +260,10 @@ bool ConditionEvaluator::Evaluate(const PluginCleaningData& cleaningData, } void ParseCondition(const std::string& condition) { + if (condition.empty()) { + return; + } + auto logger = getLogger(); if (logger) { logger->trace("Testing condition syntax: {}", condition); diff --git a/src/api/metadata/conditional_metadata.cpp b/src/api/metadata/conditional_metadata.cpp index aeab1323..151fc8c2 100644 --- a/src/api/metadata/conditional_metadata.cpp +++ b/src/api/metadata/conditional_metadata.cpp @@ -37,10 +37,4 @@ ConditionalMetadata::ConditionalMetadata(const string& condition) : bool ConditionalMetadata::IsConditional() const { return !condition_.empty(); } std::string ConditionalMetadata::GetCondition() const { return condition_; } - -void ConditionalMetadata::ParseCondition() const { - if (!condition_.empty()) { - loot::ParseCondition(condition_); - } -} } diff --git a/src/api/metadata/yaml/file.h b/src/api/metadata/yaml/file.h index 660d2c18..797b62e2 100644 --- a/src/api/metadata/yaml/file.h +++ b/src/api/metadata/yaml/file.h @@ -31,6 +31,7 @@ #include #include "api/helpers/text.h" +#include "api/metadata/condition_evaluator.h" #include "api/metadata/yaml/message_content.h" #include "loot/metadata/file.h" @@ -105,7 +106,7 @@ struct convert { // Test condition syntax. try { - rhs.ParseCondition(); + loot::ParseCondition(rhs.GetCondition()); } catch (const std::exception& e) { throw RepresentationException( node.Mark(), diff --git a/src/api/metadata/yaml/message.h b/src/api/metadata/yaml/message.h index 79eb14e9..5ed8bc38 100644 --- a/src/api/metadata/yaml/message.h +++ b/src/api/metadata/yaml/message.h @@ -32,6 +32,7 @@ #include #include +#include "api/metadata/condition_evaluator.h" #include "loot/metadata/message.h" namespace YAML { @@ -128,7 +129,7 @@ struct convert { // Test condition syntax. try { - rhs.ParseCondition(); + loot::ParseCondition(rhs.GetCondition()); } catch (const std::exception& e) { throw RepresentationException( node.Mark(), diff --git a/src/api/metadata/yaml/tag.h b/src/api/metadata/yaml/tag.h index 5d55cf75..ae59fcc8 100644 --- a/src/api/metadata/yaml/tag.h +++ b/src/api/metadata/yaml/tag.h @@ -30,6 +30,7 @@ #include +#include "api/metadata/condition_evaluator.h" #include "loot/metadata/tag.h" namespace YAML { @@ -71,7 +72,7 @@ struct convert { // Test condition syntax. try { - rhs.ParseCondition(); + loot::ParseCondition(rhs.GetCondition()); } catch (const std::exception& e) { throw RepresentationException( node.Mark(), diff --git a/src/tests/api/internals/metadata/conditional_metadata_test.h b/src/tests/api/internals/metadata/conditional_metadata_test.h index 5532e495..8fe2ba7c 100644 --- a/src/tests/api/internals/metadata/conditional_metadata_test.h +++ b/src/tests/api/internals/metadata/conditional_metadata_test.h @@ -69,28 +69,6 @@ TEST_P(ConditionalMetadataTest, conditionalMetadata_ = ConditionalMetadata("condition"); EXPECT_TRUE(conditionalMetadata_.IsConditional()); } - -TEST_P(ConditionalMetadataTest, - parseConditionShouldNotThrowForAnEmptyCondition) { - EXPECT_NO_THROW(conditionalMetadata_.ParseCondition()); -} - -TEST_P(ConditionalMetadataTest, - parseConditionShouldThrowForAnInvalidCondition) { - conditionalMetadata_ = ConditionalMetadata("condition"); - EXPECT_THROW(conditionalMetadata_.ParseCondition(), ConditionSyntaxError); -} - -TEST_P(ConditionalMetadataTest, parseConditionShouldNotThrowForATrueCondition) { - conditionalMetadata_ = ConditionalMetadata("file(\"" + blankEsm + "\")"); - EXPECT_NO_THROW(conditionalMetadata_.ParseCondition()); -} - -TEST_P(ConditionalMetadataTest, - parseConditionShouldNotThrowForAFalseCondition) { - conditionalMetadata_ = ConditionalMetadata("file(\"" + missingEsp + "\")"); - EXPECT_NO_THROW(conditionalMetadata_.ParseCondition()); -} } }