Skip to content

Commit c32d50e

Browse files
committed
Support more infobox types
1 parent c3427af commit c32d50e

File tree

3 files changed

+15
-6
lines changed

3 files changed

+15
-6
lines changed

app/src/main/java/org/nsh07/wikireader/parser/wikitextToAnnotatedString.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,7 @@ fun String.toWikitextAnnotatedString(
277277

278278
currSubstring.startsWith("<small>") -> {
279279
val curr = currSubstring.substringBefore("</small>").substringAfter('>')
280-
withStyle(SpanStyle(fontSize = (fontSize - 2).sp)) {
280+
withStyle(SpanStyle(fontSize = (fontSize - 4).sp)) {
281281
append(curr.twasNoNewline())
282282
}
283283
i += 7 + curr.length + 7
@@ -1187,4 +1187,5 @@ object ReferenceData {
11871187
val refListCount = mutableMapOf<String, Int>()
11881188
var refTemplate = "{{cite"
11891189
val refTemplates = listOf("{{cite", "{{lien", "{{cita")
1190+
val infoboxTemplates = listOf("{{infobox", "{{taxobox", "{{Automatic taxobox")
11901191
}

app/src/main/java/org/nsh07/wikireader/ui/homeScreen/ParsedBodyText.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,11 @@ import androidx.compose.ui.text.font.FontFamily
1616
import androidx.compose.ui.text.style.Hyphens
1717
import androidx.compose.ui.unit.dp
1818
import androidx.compose.ui.unit.sp
19+
import androidx.compose.ui.util.fastAny
1920
import androidx.compose.ui.util.fastForEach
2021
import coil3.ImageLoader
2122
import com.github.tomtung.latex2unicode.LaTeX2Unicode
23+
import org.nsh07.wikireader.parser.ReferenceData.infoboxTemplates
2224
import kotlin.text.Typography.nbsp
2325

2426
@Composable
@@ -98,7 +100,9 @@ fun ParsedBodyText(
98100
onLinkClick = onLinkClick,
99101
showRef = showRef
100102
)
101-
} else if (it.startsWith("{{Infobox", true)) {
103+
} else if (
104+
infoboxTemplates.fastAny { item -> (it.startsWith(item, true)) }
105+
) {
102106
AsyncInfobox(
103107
text = it.toString(),
104108
lang = lang,

app/src/main/java/org/nsh07/wikireader/ui/viewModel/UiViewModel.kt

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import androidx.compose.material3.lightColorScheme
99
import androidx.compose.ui.graphics.Color
1010
import androidx.compose.ui.text.AnnotatedString
1111
import androidx.compose.ui.text.buildAnnotatedString
12+
import androidx.compose.ui.util.fastAny
1213
import androidx.compose.ui.util.fastFilter
1314
import androidx.compose.ui.util.fastForEach
1415
import androidx.core.text.parseAsHtml
@@ -48,6 +49,7 @@ import org.nsh07.wikireader.data.langCodeToName
4849
import org.nsh07.wikireader.data.parseSections
4950
import org.nsh07.wikireader.network.HostSelectionInterceptor
5051
import org.nsh07.wikireader.network.NetworkException
52+
import org.nsh07.wikireader.parser.ReferenceData.infoboxTemplates
5153
import org.nsh07.wikireader.parser.ReferenceData.refCount
5254
import org.nsh07.wikireader.parser.ReferenceData.refList
5355
import org.nsh07.wikireader.parser.ReferenceData.refListCount
@@ -773,8 +775,6 @@ class UiViewModel(
773775
interceptor.setHost("${preferencesState.value.lang}.wikipedia.org")
774776
return WRStatus.NETWORK_ERROR
775777
}
776-
777-
return WRStatus.OTHER
778778
}
779779

780780
/**
@@ -1092,8 +1092,12 @@ class UiViewModel(
10921092
}
10931093
} else if (
10941094
stack < 2 && parsed.getOrNull(i + 1) == '{' &&
1095-
parsed.substring(i, min(i + 12, parsed.length))
1096-
.startsWith("{{Infobox", true)
1095+
parsed.substring(i, min(i + 24, parsed.length))
1096+
.let { subStr ->
1097+
infoboxTemplates.fastAny {
1098+
subStr.startsWith(it, true)
1099+
}
1100+
}
10971101
) {
10981102
val currSubstring = parsed.substringMatchingParen('{', '}', i)
10991103
out.add(

0 commit comments

Comments
 (0)