mirror of
https://github.com/revanced/ARSCLib.git
synced 2025-04-29 22:04:25 +02:00
fix: encode @ empty values
This commit is contained in:
parent
1fe0203e41
commit
3289d33c75
@ -84,6 +84,10 @@
|
||||
if(ref!=null){
|
||||
return ref.value;
|
||||
}
|
||||
ref = ValueDecoder.encodeNullReference(refString);
|
||||
if(ref!=null){
|
||||
return ref.value;
|
||||
}
|
||||
throw new EncodeException(
|
||||
"Not proper reference string: '"+refString+"'");
|
||||
}
|
||||
|
@ -39,11 +39,14 @@ class XMLValuesEncoderStyle extends XMLValuesEncoderBag{
|
||||
if(id!=0){
|
||||
item.setName(id);
|
||||
String value = child.getTextContent();
|
||||
if(ValueDecoder.isReference(value)){
|
||||
ValueDecoder.EncodeResult encodeResult = ValueDecoder.encodeNullReference(value);
|
||||
if(encodeResult!=null){
|
||||
item.setTypeAndData(encodeResult.valueType, encodeResult.value);
|
||||
}else if(ValueDecoder.isReference(value)){
|
||||
item.setTypeAndData(ValueType.REFERENCE,
|
||||
getMaterials().resolveReference(value));
|
||||
}else {
|
||||
ValueDecoder.EncodeResult encodeResult = ValueDecoder.encodeGuessAny(value);
|
||||
encodeResult = ValueDecoder.encodeGuessAny(value);
|
||||
if(encodeResult!=null){
|
||||
item.setTypeAndData(encodeResult.valueType, encodeResult.value);
|
||||
}else {
|
||||
@ -86,6 +89,11 @@ class XMLValuesEncoderStyle extends XMLValuesEncoderBag{
|
||||
bagItem.setTypeAndData(encodeEnumFlag.valueType, encodeEnumFlag.value);
|
||||
return;
|
||||
}
|
||||
ValueDecoder.EncodeResult encodeResult = ValueDecoder.encodeNullReference(valueText);
|
||||
if(encodeResult!=null){
|
||||
bagItem.setTypeAndData(encodeResult.valueType, encodeResult.value);
|
||||
return;
|
||||
}
|
||||
if(ValueDecoder.isReference(valueText)){
|
||||
if(valueText.startsWith("?")){
|
||||
bagItem.setValueType(ValueType.ATTRIBUTE);
|
||||
@ -99,7 +107,7 @@ class XMLValuesEncoderStyle extends XMLValuesEncoderBag{
|
||||
}else if(EncodeUtil.isEmpty(valueText)) {
|
||||
bagItem.setTypeAndData(ValueType.NULL, 0);
|
||||
}else{
|
||||
ValueDecoder.EncodeResult encodeResult = ValueDecoder.encodeGuessAny(valueText);
|
||||
encodeResult = ValueDecoder.encodeGuessAny(valueText);
|
||||
if(encodeResult!=null){
|
||||
bagItem.setTypeAndData(encodeResult.valueType,
|
||||
encodeResult.value);
|
||||
|
@ -63,16 +63,11 @@ public class ValueDecoder {
|
||||
if(txt==null){
|
||||
return null;
|
||||
}
|
||||
if("@empty".equals(txt)){
|
||||
return new EncodeResult(ValueType.NULL, 1);
|
||||
EncodeResult result = encodeNullReference(txt);
|
||||
if(result != null){
|
||||
return result;
|
||||
}
|
||||
if("@null".equals(txt)){
|
||||
return new EncodeResult(ValueType.REFERENCE, 0);
|
||||
}
|
||||
if("?null".equals(txt)){
|
||||
return new EncodeResult(ValueType.ATTRIBUTE, 0);
|
||||
}
|
||||
EncodeResult result=encodeColor(txt);
|
||||
result=encodeColor(txt);
|
||||
if(result!=null){
|
||||
return result;
|
||||
}
|
||||
@ -99,6 +94,21 @@ public class ValueDecoder {
|
||||
}
|
||||
return null;
|
||||
}
|
||||
public static EncodeResult encodeNullReference(String txt){
|
||||
if(txt==null){
|
||||
return null;
|
||||
}
|
||||
if("@empty".equals(txt)){
|
||||
return new EncodeResult(ValueType.NULL, 1);
|
||||
}
|
||||
if("@null".equals(txt)){
|
||||
return new EncodeResult(ValueType.REFERENCE, 0);
|
||||
}
|
||||
if("?null".equals(txt)){
|
||||
return new EncodeResult(ValueType.ATTRIBUTE, 0);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
public static EncodeResult encodeHexReference(String txt){
|
||||
if(txt==null){
|
||||
return null;
|
||||
|
Loading…
x
Reference in New Issue
Block a user