package org.robolectric.res; import java.util.regex.Matcher; import java.util.regex.Pattern; public class XmlContext { private static final Pattern DIR_QUALIFIER_PATTERN = Pattern.compile("^[^-]+(?:-(.*))?$"); private final String packageName; private final FsFile xmlFile; public XmlContext(String packageName, FsFile xmlFile) { this.packageName = packageName; this.xmlFile = xmlFile; } public String getPackageName() { return packageName; } public String getQualifiers() { FsFile parentDir = xmlFile.getParent(); if (parentDir == null) { return ""; } else { String parentDirName = parentDir.getName(); Matcher matcher = DIR_QUALIFIER_PATTERN.matcher(parentDirName); if (!matcher.find()) throw new IllegalStateException(parentDirName); return matcher.group(1); } } public FsFile getXmlFile() { return xmlFile; } @Override public String toString() { return '{' + packageName + ':' + xmlFile + '}'; } public XmlContext withLineNumber(final int lineNumber) { return new XmlContext(packageName, xmlFile) { @Override public String toString() { return '{' + packageName + ':' + xmlFile + ':' + lineNumber + '}'; } }; } }