mirror of
https://github.com/revanced/ARSCLib.git
synced 2025-05-07 01:04:27 +02:00
fix: Build duplicate styled strings #13
This commit is contained in:
parent
0206c73908
commit
1b0660cdf3
@ -15,6 +15,7 @@
|
|||||||
*/
|
*/
|
||||||
package com.reandroid.apk.xmlencoder;
|
package com.reandroid.apk.xmlencoder;
|
||||||
|
|
||||||
|
import com.reandroid.arsc.array.StringArray;
|
||||||
import com.reandroid.arsc.array.StyleArray;
|
import com.reandroid.arsc.array.StyleArray;
|
||||||
import com.reandroid.arsc.decoder.ValueDecoder;
|
import com.reandroid.arsc.decoder.ValueDecoder;
|
||||||
import com.reandroid.arsc.item.StyleItem;
|
import com.reandroid.arsc.item.StyleItem;
|
||||||
@ -49,9 +50,12 @@ import java.util.*;
|
|||||||
if(spannableList.size()==0){
|
if(spannableList.size()==0){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
StringArray<TableString> stringsArray = stringPool.getStringsArray();
|
||||||
|
StyleArray styleArray = stringPool.getStyleArray();
|
||||||
|
|
||||||
Map<String, TableString> stringsMap = stringPool
|
int stylesCount = spannableList.size();
|
||||||
.insertStrings(XMLSpannable.toTextList(spannableList));
|
stringsArray.setChildesCount(stylesCount);
|
||||||
|
styleArray.setChildesCount(stylesCount);
|
||||||
|
|
||||||
List<String> tagList =
|
List<String> tagList =
|
||||||
new ArrayList<>(XMLSpannable.tagList(spannableList));
|
new ArrayList<>(XMLSpannable.tagList(spannableList));
|
||||||
@ -59,21 +63,23 @@ import java.util.*;
|
|||||||
Map<String, TableString> tagsMap =
|
Map<String, TableString> tagsMap =
|
||||||
stringPool.insertStrings(tagList);
|
stringPool.insertStrings(tagList);
|
||||||
|
|
||||||
StyleArray styleArray = stringPool.getStyleArray();
|
List<String> textList = XMLSpannable.toTextList(spannableList);
|
||||||
styleArray.setChildesCount(stringsMap.size());
|
|
||||||
|
|
||||||
for(XMLSpannable spannable:spannableList){
|
for(int i=0;i<stylesCount;i++){
|
||||||
|
XMLSpannable spannable = spannableList.get(i);
|
||||||
|
TableString tableString = stringsArray.get(i);
|
||||||
|
StyleItem styleItem = styleArray.get(i);
|
||||||
|
|
||||||
TableString tableString=stringsMap.get(spannable.getText());
|
tableString.set(textList.get(i));
|
||||||
StyleItem styleItem = styleArray.get(tableString.getIndex());
|
|
||||||
|
|
||||||
for(XMLSpanInfo spanInfo:spannable.getSpanInfoList()){
|
for(XMLSpanInfo spanInfo:spannable.getSpanInfoList()){
|
||||||
int tagRef=tagsMap.get(spanInfo.tag).getIndex();
|
TableString tag = tagsMap.get(spanInfo.tag);
|
||||||
|
int tagRef=tag.getIndex();
|
||||||
styleItem.addStylePiece(tagRef, spanInfo.start, spanInfo.end);
|
styleItem.addStylePiece(tagRef, spanInfo.start, spanInfo.end);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
stringPool.refreshUniqueIdMap();
|
stringPool.refreshUniqueIdMap();
|
||||||
}
|
}
|
||||||
private List<XMLSpannable> buildSpannable(){
|
private List<XMLSpannable> buildSpannable(){
|
||||||
List<XMLSpannable> results=new ArrayList<>();
|
List<XMLSpannable> results=new ArrayList<>();
|
||||||
Set<String> removeList=new HashSet<>();
|
Set<String> removeList=new HashSet<>();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user