in resources/src/main/java/org/robolectric/res/android/ConfigDescription.java [199:383]
public static boolean parse(final String str, ResTable_config out, boolean applyVersionForCompat) {
PeekingIterator<String> part_iter = Iterators
.peekingIterator(Arrays.asList(str.toLowerCase().split("-")).iterator());
LocaleValue locale = new LocaleValue();
boolean success = !part_iter.hasNext();
if (part_iter.hasNext() && parseMcc(part_iter.peek(), out)) {
part_iter.next();
if (!part_iter.hasNext()) {
success = !part_iter.hasNext();
}
}
if (part_iter.hasNext() && parseMnc(part_iter.peek(), out)) {
part_iter.next();
if (!part_iter.hasNext()) {
success = !part_iter.hasNext();
}
}
if (part_iter.hasNext()) {
// Locale spans a few '-' separators, so we let it
// control the index.
int parts_consumed = locale.initFromParts(part_iter);
if (parts_consumed < 0) {
return false;
} else {
locale.writeTo(out);
if (!part_iter.hasNext()) {
success = !part_iter.hasNext();
}
}
}
if (part_iter.hasNext() && parseLayoutDirection(part_iter.peek(), out)) {
part_iter.next();
if (!part_iter.hasNext()) {
success = !part_iter.hasNext();
}
}
if (part_iter.hasNext() && parseSmallestScreenWidthDp(part_iter.peek(), out)) {
part_iter.next();
if (!part_iter.hasNext()) {
success = !part_iter.hasNext();
}
}
if (part_iter.hasNext() && parseScreenWidthDp(part_iter.peek(), out)) {
part_iter.next();
if (!part_iter.hasNext()) {
success = !part_iter.hasNext();
}
}
if (part_iter.hasNext() && parseScreenHeightDp(part_iter.peek(), out)) {
part_iter.next();
if (!part_iter.hasNext()) {
success = !part_iter.hasNext();
}
}
if (part_iter.hasNext() && parseScreenLayoutSize(part_iter.peek(), out)) {
part_iter.next();
if (!part_iter.hasNext()) {
success = !part_iter.hasNext();
}
}
if (part_iter.hasNext() && parseScreenLayoutLong(part_iter.peek(), out)) {
part_iter.next();
if (!part_iter.hasNext()) {
success = !part_iter.hasNext();
}
}
if (part_iter.hasNext() && parseScreenRound(part_iter.peek(), out)) {
part_iter.next();
if (!part_iter.hasNext()) {
success = !part_iter.hasNext();
}
}
if (part_iter.hasNext() && parseWideColorGamut(part_iter.peek(), out)) {
part_iter.next();
if (!part_iter.hasNext()) {
success = !part_iter.hasNext();
}
}
if (part_iter.hasNext() && parseHdr(part_iter.peek(), out)) {
part_iter.next();
if (!part_iter.hasNext()) {
success = !part_iter.hasNext();
}
}
if (part_iter.hasNext() && parseOrientation(part_iter.peek(), out)) {
part_iter.next();
if (!part_iter.hasNext()) {
success = !part_iter.hasNext();
}
}
if (part_iter.hasNext() && parseUiModeType(part_iter.peek(), out)) {
part_iter.next();
if (!part_iter.hasNext()) {
success = !part_iter.hasNext();
}
}
if (part_iter.hasNext() && parseUiModeNight(part_iter.peek(), out)) {
part_iter.next();
if (!part_iter.hasNext()) {
success = !part_iter.hasNext();
}
}
if (part_iter.hasNext() && parseDensity(part_iter.peek(), out)) {
part_iter.next();
if (!part_iter.hasNext()) {
success = !part_iter.hasNext();
}
}
if (part_iter.hasNext() && parseTouchscreen(part_iter.peek(), out)) {
part_iter.next();
if (!part_iter.hasNext()) {
success = !part_iter.hasNext();
}
}
if (part_iter.hasNext() && parseKeysHidden(part_iter.peek(), out)) {
part_iter.next();
if (!part_iter.hasNext()) {
success = !part_iter.hasNext();
}
}
if (part_iter.hasNext() && parseKeyboard(part_iter.peek(), out)) {
part_iter.next();
if (!part_iter.hasNext()) {
success = !part_iter.hasNext();
}
}
if (part_iter.hasNext() && parseNavHidden(part_iter.peek(), out)) {
part_iter.next();
if (!part_iter.hasNext()) {
success = !part_iter.hasNext();
}
}
if (part_iter.hasNext() && parseNavigation(part_iter.peek(), out)) {
part_iter.next();
if (!part_iter.hasNext()) {
success = !part_iter.hasNext();
}
}
if (part_iter.hasNext() && parseScreenSize(part_iter.peek(), out)) {
part_iter.next();
if (!part_iter.hasNext()) {
success = !part_iter.hasNext();
}
}
if (part_iter.hasNext() && parseVersion(part_iter.peek(), out)) {
part_iter.next();
if (!part_iter.hasNext()) {
success = !part_iter.hasNext();
}
}
if (!success) {
// Unrecognized.
return false;
}
if (out != null && applyVersionForCompat) {
applyVersionForCompatibility(out);
}
return true;
}