@@ -17,7 +17,6 @@ import java.io.ByteArrayInputStream
1717import java.io.InputStream
1818import java.util.Locale.getDefault
1919import androidx.core.graphics.toColorInt
20- import com.tool.tree.LanguageManager
2120
2221/* *
2322 * Created by Hello on 2018/04/01.
@@ -32,41 +31,6 @@ class PageConfigReader {
3231 private var parentDir: String = " "
3332
3433 companion object {
35- // Ví dụ: @string/update_text hoặc @string:update_text
36- private val STRING_REF_REGEX = Regex (" @string[:/][_a-zA-Z][_a-zA-Z0-9]*" )
37- }
38-
39- /* *
40- * Thay thế các tham chiếu dạng @string/ten_resource (hoặc @string:ten_resource) xuất hiện
41- * trong văn bản đọc từ XML bằng giá trị thật lấy từ strings.xml của ứng dụng.
42- * Nếu không tìm thấy resource tương ứng thì giữ nguyên văn bản gốc.
43- */
44- private fun resolveStringRes (raw : String? ): String {
45- val text = raw ? : return " "
46- if (! text.contains(" @string" )) {
47- return text
48- }
49-
50- val res = LanguageManager .resources(context)
51-
52- var result = text
53- STRING_REF_REGEX .findAll(text).forEach { match ->
54- val token = match.value
55- val separator = if (token.contains(" :" )) ' :' else ' /'
56- val name = token.substring(token.indexOf(separator) + 1 )
57-
58- try {
59- val id = res.getIdentifier(name, " string" , context.packageName)
60- if (id != 0 ) {
61- result = result.replace(token, res.getString(id))
62- }
63- } catch (_: Exception ) {
64- }
65- }
66-
67- return result
68- }
69-
7034 private fun sanitizeXmlContent (raw : String ): String {
7135 var result = raw
7236
@@ -296,7 +260,7 @@ class PageConfigReader {
296260 var actionParamInfo: ActionParamInfo ? = null
297261 private fun tagStartInAction (action : ActionNode , parser : XmlPullParser ) {
298262 if (" title" == parser.name) {
299- action.title = resolveStringRes( parser.nextText())
263+ action.title = StringResRef .resolve(context, parser.nextText())
300264 } else if (" desc" == parser.name) {
301265 descNode(action, parser)
302266 } else if (" summary" == parser.name) {
@@ -381,7 +345,7 @@ class PageConfigReader {
381345 option.value = parser.getAttributeValue(i)
382346 }
383347 }
384- option.title = resolveStringRes( parser.nextText())
348+ option.title = StringResRef .resolve(context, parser.nextText())
385349 if (option.value == null )
386350 option.value = option.title
387351 actionParamInfo.options!! .add(option)
@@ -405,7 +369,7 @@ class PageConfigReader {
405369
406370 private fun tagStartInPage (node : PageNode , parser : XmlPullParser ) {
407371 when (parser.name) {
408- " title" -> node.title = resolveStringRes( parser.nextText())
372+ " title" -> node.title = StringResRef .resolve(context, parser.nextText())
409373 " desc" -> descNode(node, parser)
410374 " summary" -> summaryNode(node, parser)
411375 " resource" -> resourceNode(parser)
@@ -454,7 +418,7 @@ class PageConfigReader {
454418 " config-sh" -> option.pageConfigSh = parser.getAttributeValue(i)
455419 }
456420 }
457- option.title = resolveStringRes( parser.nextText())
421+ option.title = StringResRef .resolve(context, parser.nextText())
458422 if (option.key.isEmpty()) {
459423 option.key = option.title
460424 }
@@ -470,7 +434,7 @@ class PageConfigReader {
470434
471435 private fun tagStartInSwitch (switchNode : SwitchNode , parser : XmlPullParser ) {
472436 when (parser.name) {
473- " title" -> switchNode.title = resolveStringRes( parser.nextText())
437+ " title" -> switchNode.title = StringResRef .resolve(context, parser.nextText())
474438 " desc" -> descNode(switchNode, parser)
475439 " summary" -> summaryNode(switchNode, parser)
476440 " get" , " getstate" -> switchNode.getState = parser.nextText()
@@ -487,7 +451,7 @@ class PageConfigReader {
487451 val attrValue = parser.getAttributeValue(i)
488452 when (attrName) {
489453 " key" , " index" , " id" -> groupInfo.key = attrValue.trim()
490- " title" -> groupInfo.title = resolveStringRes( attrValue)
454+ " title" -> groupInfo.title = StringResRef .resolve(context, attrValue)
491455 " support" , " visible" -> groupInfo.supported = executeResultRoot(context, attrValue) == " 1"
492456 }
493457 }
@@ -643,7 +607,7 @@ class PageConfigReader {
643607 }
644608 }
645609 if (nodeInfoBase.desc.isEmpty())
646- nodeInfoBase.desc = resolveStringRes( parser.nextText())
610+ nodeInfoBase.desc = StringResRef .resolve(context, parser.nextText())
647611 }
648612
649613 private fun summaryNode (nodeInfoBase : NodeInfoBase , parser : XmlPullParser ) {
@@ -655,7 +619,7 @@ class PageConfigReader {
655619 }
656620 }
657621 if (nodeInfoBase.summary.isEmpty())
658- nodeInfoBase.summary = resolveStringRes( parser.nextText())
622+ nodeInfoBase.summary = StringResRef .resolve(context, parser.nextText())
659623 }
660624
661625 private fun resourceNode (parser : XmlPullParser ) {
@@ -685,7 +649,7 @@ class PageConfigReader {
685649 private fun tagStartInText (textNode : TextNode , parser : XmlPullParser ) {
686650 when (parser.name) {
687651 " title" -> {
688- textNode.title = resolveStringRes( parser.nextText())
652+ textNode.title = StringResRef .resolve(context, parser.nextText())
689653 }
690654 " desc" -> {
691655 descNode(textNode, parser)
@@ -739,14 +703,14 @@ class PageConfigReader {
739703 } catch (ex: Exception ) {
740704 }
741705 }
742- textRow.text = resolveStringRes( " " + parser.nextText())
706+ textRow.text = StringResRef .resolve(context, parser.nextText())
743707 textNode.rows.add(textRow)
744708 }
745709
746710 private fun tagStartInPicker (pickerNode : PickerNode , parser : XmlPullParser ) {
747711 when (parser.name) {
748712 " title" -> {
749- pickerNode.title = resolveStringRes( parser.nextText())
713+ pickerNode.title = StringResRef .resolve(context, parser.nextText())
750714 }
751715 " desc" -> {
752716 descNode(pickerNode, parser)
@@ -765,7 +729,7 @@ class PageConfigReader {
765729 option.value = parser.getAttributeValue(i)
766730 }
767731 }
768- option.title = resolveStringRes( parser.nextText())
732+ option.title = StringResRef .resolve(context, parser.nextText())
769733 if (option.value == null )
770734 option.value = option.title
771735 pickerNode.options!! .add(option)
0 commit comments