From 36c73a595910e96f3552f938eeb81d46356067a1 Mon Sep 17 00:00:00 2001 From: Adam Lesinski Date: Thu, 11 Aug 2016 13:39:24 -0700 Subject: AAPT2: Expose split support to command line Bug:30445078 Change-Id: If4b8530dba71b9059b8e62c04757da99c1119d22 --- tools/aapt2/ResourceParser.cpp | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) (limited to 'tools/aapt2/ResourceParser.cpp') diff --git a/tools/aapt2/ResourceParser.cpp b/tools/aapt2/ResourceParser.cpp index a144c6ab2be7..bcdf401077ee 100644 --- a/tools/aapt2/ResourceParser.cpp +++ b/tools/aapt2/ResourceParser.cpp @@ -500,8 +500,8 @@ std::unique_ptr ResourceParser::parseXml(xml::XmlPullParser* parser, const }; // Process the raw value. - std::unique_ptr processedItem = ResourceUtils::parseItemForAttribute(rawValue, typeMask, - onCreateReference); + std::unique_ptr processedItem = ResourceUtils::tryParseItemForAttribute( + rawValue, typeMask, onCreateReference); if (processedItem) { // Fix up the reference. if (Reference* ref = valueCast(processedItem.get())) { @@ -528,20 +528,24 @@ std::unique_ptr ResourceParser::parseXml(xml::XmlPullParser* parser, const bool ResourceParser::parseString(xml::XmlPullParser* parser, ParsedResource* outResource) { bool formatted = true; if (Maybe formattedAttr = xml::findAttribute(parser, "formatted")) { - if (!ResourceUtils::tryParseBool(formattedAttr.value(), &formatted)) { + Maybe maybeFormatted = ResourceUtils::parseBool(formattedAttr.value()); + if (!maybeFormatted) { mDiag->error(DiagMessage(outResource->source) << "invalid value for 'formatted'. Must be a boolean"); return false; } + formatted = maybeFormatted.value(); } bool translateable = mOptions.translatable; if (Maybe translateableAttr = xml::findAttribute(parser, "translatable")) { - if (!ResourceUtils::tryParseBool(translateableAttr.value(), &translateable)) { + Maybe maybeTranslateable = ResourceUtils::parseBool(translateableAttr.value()); + if (!maybeTranslateable) { mDiag->error(DiagMessage(outResource->source) << "invalid value for 'translatable'. Must be a boolean"); return false; } + translateable = maybeTranslateable.value(); } outResource->value = parseXml(parser, android::ResTable_map::TYPE_STRING, kNoRawString); @@ -590,7 +594,7 @@ bool ResourceParser::parsePublic(xml::XmlPullParser* parser, ParsedResource* out outResource->name.type = *parsedType; if (Maybe maybeIdStr = xml::findNonEmptyAttribute(parser, "id")) { - Maybe maybeId = ResourceUtils::tryParseResourceId(maybeIdStr.value()); + Maybe maybeId = ResourceUtils::parseResourceId(maybeIdStr.value()); if (!maybeId) { mDiag->error(DiagMessage(outResource->source) << "invalid resource ID '" << maybeId.value() << "' in "); @@ -630,7 +634,7 @@ bool ResourceParser::parsePublicGroup(xml::XmlPullParser* parser, ParsedResource return false; } - Maybe maybeId = ResourceUtils::tryParseResourceId(maybeIdStr.value()); + Maybe maybeId = ResourceUtils::parseResourceId(maybeIdStr.value()); if (!maybeId) { mDiag->error(DiagMessage(outResource->source) << "invalid resource ID '" << maybeIdStr.value() << "' in "); @@ -1058,14 +1062,17 @@ bool ResourceParser::parseArrayImpl(xml::XmlPullParser* parser, ParsedResource* bool translateable = mOptions.translatable; if (Maybe translateableAttr = xml::findAttribute(parser, "translatable")) { - if (!ResourceUtils::tryParseBool(translateableAttr.value(), &translateable)) { + Maybe maybeTranslateable = ResourceUtils::parseBool(translateableAttr.value()); + if (!maybeTranslateable) { mDiag->error(DiagMessage(outResource->source) << "invalid value for 'translatable'. Must be a boolean"); return false; } + translateable = maybeTranslateable.value(); } array->setTranslateable(translateable); + bool error = false; const size_t depth = parser->getDepth(); while (xml::XmlPullParser::nextChildNode(parser, depth)) { -- cgit v1.2.3-59-g8ed1b