From b8cfdba5ecc8f042b2a20f3327cd2ee4a2f4cb09 Mon Sep 17 00:00:00 2001 From: Jan Date: Sat, 13 Mar 2021 15:48:26 +0100 Subject: [PATCH] Make ZoneDefinition parser recognize strings as asset names --- .../Sequence/SequenceZoneDefinitionEntry.cpp | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/ZoneCommon/Parsing/ZoneDefinition/Sequence/SequenceZoneDefinitionEntry.cpp b/src/ZoneCommon/Parsing/ZoneDefinition/Sequence/SequenceZoneDefinitionEntry.cpp index d04fbd78..a4ec4df8 100644 --- a/src/ZoneCommon/Parsing/ZoneDefinition/Sequence/SequenceZoneDefinitionEntry.cpp +++ b/src/ZoneCommon/Parsing/ZoneDefinition/Sequence/SequenceZoneDefinitionEntry.cpp @@ -12,7 +12,10 @@ SequenceZoneDefinitionEntry::SequenceZoneDefinitionEntry() create.Identifier().Capture(CAPTURE_TYPE_NAME), create.Char(','), create.Optional(create.Char(',').Tag(TAG_REFERENCE)), - create.Label(ZoneDefinitionCommonMatchers::LABEL_ASSET_NAME).Capture(CAPTURE_ASSET_NAME), + create.Or({ + create.Type(SimpleParserValueType::STRING), + create.Label(ZoneDefinitionCommonMatchers::LABEL_ASSET_NAME) + }).Capture(CAPTURE_ASSET_NAME), create.Or({ create.Type(SimpleParserValueType::NEW_LINE), create.Type(SimpleParserValueType::END_OF_FILE) @@ -22,8 +25,20 @@ SequenceZoneDefinitionEntry::SequenceZoneDefinitionEntry() void SequenceZoneDefinitionEntry::ProcessMatch(ZoneDefinition* state, SequenceResult& result) const { + const auto& assetNameCapture = result.NextCapture(CAPTURE_ASSET_NAME); + + std::string assetName; + if (assetNameCapture.m_type == SimpleParserValueType::STRING) + { + assetName = assetNameCapture.StringValue(); + } + else + { + assetName = assetNameCapture.IdentifierValue(); + } + state->m_assets.emplace_back( result.NextCapture(CAPTURE_TYPE_NAME).IdentifierValue(), - result.NextCapture(CAPTURE_ASSET_NAME).IdentifierValue(), + assetName, result.NextTag() == TAG_REFERENCE); }