1 #include "image_io/xml/xml_attribute_rule.h" 2 3 #include "image_io/xml/xml_handler.h" 4 #include "image_io/xml/xml_token_context.h" 5 6 namespace photos_editing_formats { 7 namespace image_io { 8 XmlAttributeRule()9XmlAttributeRule::XmlAttributeRule() : XmlRule("Attribute") { 10 // S? Name S? = S? 'Value' 11 AddOptionalWhitespaceTerminal(); 12 AddNameTerminal().WithAction( 13 [&](const XmlActionContext& context) { return HandleName(context); }); 14 AddOptionalWhitespaceTerminal(); 15 AddLiteralTerminal("="); 16 AddOptionalWhitespaceTerminal(); 17 AddQuotedStringTerminal().WithAction( 18 [&](const XmlActionContext& context) { return HandleValue(context); }); 19 } 20 HandleName(const XmlActionContext & context)21DataMatchResult XmlAttributeRule::HandleName(const XmlActionContext& context) { 22 XmlTokenContext token_context(context); 23 return context.GetHandler()->AttributeName(token_context); 24 } 25 HandleValue(const XmlActionContext & context)26DataMatchResult XmlAttributeRule::HandleValue(const XmlActionContext& context) { 27 XmlTokenContext token_context(context); 28 return context.GetHandler()->AttributeValue(token_context); 29 } 30 31 } // namespace image_io 32 } // namespace photos_editing_formats 33