fix(res): support min attr for attrs (PR #1909)
This commit is contained in:
@@ -108,6 +108,7 @@ public class ResXmlGen {
|
||||
String valueStr = vp.decodeValue(ri.getSimpleValue());
|
||||
addSimpleValue(cw, ri.getTypeName(), ri.getTypeName(), "name", ri.getKeyName(), valueStr);
|
||||
} else {
|
||||
boolean skipNamedValues = false;
|
||||
cw.startLine();
|
||||
cw.add('<').add(ri.getTypeName()).add(" name=\"");
|
||||
String itemTag = "item";
|
||||
@@ -123,6 +124,14 @@ public class ResXmlGen {
|
||||
if (formatValue != null) {
|
||||
cw.add("\" format=\"").add(formatValue);
|
||||
}
|
||||
if (ri.getNamedValues().size() > 1) {
|
||||
for (RawNamedValue rv : ri.getNamedValues()) {
|
||||
if (rv.getNameRef() == ParserConstants.ATTR_MIN) {
|
||||
cw.add("\" min=\"").add(String.valueOf(rv.getRawValue().getData()));
|
||||
skipNamedValues = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
cw.add(ri.getKeyName());
|
||||
}
|
||||
@@ -135,11 +144,13 @@ public class ResXmlGen {
|
||||
}
|
||||
cw.add("\">");
|
||||
|
||||
cw.incIndent();
|
||||
for (RawNamedValue value : ri.getNamedValues()) {
|
||||
addItem(cw, itemTag, ri.getTypeName(), value);
|
||||
if (!skipNamedValues) {
|
||||
cw.incIndent();
|
||||
for (RawNamedValue value : ri.getNamedValues()) {
|
||||
addItem(cw, itemTag, ri.getTypeName(), value);
|
||||
}
|
||||
cw.decIndent();
|
||||
}
|
||||
cw.decIndent();
|
||||
cw.startLine().add("</").add(ri.getTypeName()).add('>');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -79,6 +79,27 @@ class ResXmlGenTest {
|
||||
+ "</resources>", files.get(0).getText().toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testAttrMin() {
|
||||
ResourceStorage resStorage = new ResourceStorage();
|
||||
ResourceEntry re = new ResourceEntry(2130903103, "jadx.gui.app", "attr", "size", "");
|
||||
re.setNamedValues(
|
||||
Lists.list(new RawNamedValue(16777216, new RawValue(16, 4)), new RawNamedValue(16777217, new RawValue(16, 1))));
|
||||
resStorage.add(re);
|
||||
|
||||
ValuesParser vp = new ValuesParser(null, resStorage.getResourcesNames());
|
||||
ResXmlGen resXmlGen = new ResXmlGen(resStorage, vp);
|
||||
List<ResContainer> files = resXmlGen.makeResourcesXml();
|
||||
|
||||
assertEquals(1, files.size());
|
||||
assertEquals("res/values/attrs.xml", files.get(0).getFileName());
|
||||
assertEquals("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"
|
||||
+ "<resources>\n"
|
||||
+ " <attr name=\"size\" format=\"integer\" min=\"1\">\n"
|
||||
+ " </attr>\n"
|
||||
+ "</resources>", files.get(0).getText().toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testStyle() {
|
||||
ResourceStorage resStorage = new ResourceStorage();
|
||||
|
||||
Reference in New Issue
Block a user