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){
|
if(ref!=null){
|
||||||
return ref.value;
|
return ref.value;
|
||||||
}
|
}
|
||||||
|
ref = ValueDecoder.encodeNullReference(refString);
|
||||||
|
if(ref!=null){
|
||||||
|
return ref.value;
|
||||||
|
}
|
||||||
throw new EncodeException(
|
throw new EncodeException(
|
||||||
"Not proper reference string: '"+refString+"'");
|
"Not proper reference string: '"+refString+"'");
|
||||||
}
|
}
|
||||||
|
@ -39,11 +39,14 @@ class XMLValuesEncoderStyle extends XMLValuesEncoderBag{
|
|||||||
if(id!=0){
|
if(id!=0){
|
||||||
item.setName(id);
|
item.setName(id);
|
||||||
String value = child.getTextContent();
|
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,
|
item.setTypeAndData(ValueType.REFERENCE,
|
||||||
getMaterials().resolveReference(value));
|
getMaterials().resolveReference(value));
|
||||||
}else {
|
}else {
|
||||||
ValueDecoder.EncodeResult encodeResult = ValueDecoder.encodeGuessAny(value);
|
encodeResult = ValueDecoder.encodeGuessAny(value);
|
||||||
if(encodeResult!=null){
|
if(encodeResult!=null){
|
||||||
item.setTypeAndData(encodeResult.valueType, encodeResult.value);
|
item.setTypeAndData(encodeResult.valueType, encodeResult.value);
|
||||||
}else {
|
}else {
|
||||||
@ -86,6 +89,11 @@ class XMLValuesEncoderStyle extends XMLValuesEncoderBag{
|
|||||||
bagItem.setTypeAndData(encodeEnumFlag.valueType, encodeEnumFlag.value);
|
bagItem.setTypeAndData(encodeEnumFlag.valueType, encodeEnumFlag.value);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
ValueDecoder.EncodeResult encodeResult = ValueDecoder.encodeNullReference(valueText);
|
||||||
|
if(encodeResult!=null){
|
||||||
|
bagItem.setTypeAndData(encodeResult.valueType, encodeResult.value);
|
||||||
|
return;
|
||||||
|
}
|
||||||
if(ValueDecoder.isReference(valueText)){
|
if(ValueDecoder.isReference(valueText)){
|
||||||
if(valueText.startsWith("?")){
|
if(valueText.startsWith("?")){
|
||||||
bagItem.setValueType(ValueType.ATTRIBUTE);
|
bagItem.setValueType(ValueType.ATTRIBUTE);
|
||||||
@ -99,7 +107,7 @@ class XMLValuesEncoderStyle extends XMLValuesEncoderBag{
|
|||||||
}else if(EncodeUtil.isEmpty(valueText)) {
|
}else if(EncodeUtil.isEmpty(valueText)) {
|
||||||
bagItem.setTypeAndData(ValueType.NULL, 0);
|
bagItem.setTypeAndData(ValueType.NULL, 0);
|
||||||
}else{
|
}else{
|
||||||
ValueDecoder.EncodeResult encodeResult = ValueDecoder.encodeGuessAny(valueText);
|
encodeResult = ValueDecoder.encodeGuessAny(valueText);
|
||||||
if(encodeResult!=null){
|
if(encodeResult!=null){
|
||||||
bagItem.setTypeAndData(encodeResult.valueType,
|
bagItem.setTypeAndData(encodeResult.valueType,
|
||||||
encodeResult.value);
|
encodeResult.value);
|
||||||
|
@ -63,16 +63,11 @@ public class ValueDecoder {
|
|||||||
if(txt==null){
|
if(txt==null){
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
if("@empty".equals(txt)){
|
EncodeResult result = encodeNullReference(txt);
|
||||||
return new EncodeResult(ValueType.NULL, 1);
|
if(result != null){
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
if("@null".equals(txt)){
|
result=encodeColor(txt);
|
||||||
return new EncodeResult(ValueType.REFERENCE, 0);
|
|
||||||
}
|
|
||||||
if("?null".equals(txt)){
|
|
||||||
return new EncodeResult(ValueType.ATTRIBUTE, 0);
|
|
||||||
}
|
|
||||||
EncodeResult result=encodeColor(txt);
|
|
||||||
if(result!=null){
|
if(result!=null){
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@ -99,6 +94,21 @@ public class ValueDecoder {
|
|||||||
}
|
}
|
||||||
return null;
|
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){
|
public static EncodeResult encodeHexReference(String txt){
|
||||||
if(txt==null){
|
if(txt==null){
|
||||||
return null;
|
return null;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user