Make ZoneDefinition parser recognize strings as asset names

This commit is contained in:
Jan 2021-03-13 15:48:26 +01:00
parent cff70daccb
commit b8cfdba5ec

View File

@ -12,7 +12,10 @@ SequenceZoneDefinitionEntry::SequenceZoneDefinitionEntry()
create.Identifier().Capture(CAPTURE_TYPE_NAME), create.Identifier().Capture(CAPTURE_TYPE_NAME),
create.Char(','), create.Char(','),
create.Optional(create.Char(',').Tag(TAG_REFERENCE)), 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.Or({
create.Type(SimpleParserValueType::NEW_LINE), create.Type(SimpleParserValueType::NEW_LINE),
create.Type(SimpleParserValueType::END_OF_FILE) create.Type(SimpleParserValueType::END_OF_FILE)
@ -22,8 +25,20 @@ SequenceZoneDefinitionEntry::SequenceZoneDefinitionEntry()
void SequenceZoneDefinitionEntry::ProcessMatch(ZoneDefinition* state, SequenceResult<SimpleParserValue>& result) const void SequenceZoneDefinitionEntry::ProcessMatch(ZoneDefinition* state, SequenceResult<SimpleParserValue>& 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( state->m_assets.emplace_back(
result.NextCapture(CAPTURE_TYPE_NAME).IdentifierValue(), result.NextCapture(CAPTURE_TYPE_NAME).IdentifierValue(),
result.NextCapture(CAPTURE_ASSET_NAME).IdentifierValue(), assetName,
result.NextTag() == TAG_REFERENCE); result.NextTag() == TAG_REFERENCE);
} }