fix: print platform detail lists as plain text

This commit is contained in:
Abdessamad Derraz committed 2026-10-04 22:04:01 +02:00
1 parent f033449766
commit 20937e688b
2 files changed
+27 -4

No files matched your search

+11 -4
View File
@@ -2145,16 +2145,23 @@ def _render_platform_details(profile: dict) -> list[str]:
if isinstance(pv, dict): if isinstance(pv, dict):
lines.append(f" **{pk}:**") lines.append(f" **{pk}:**")
for sk, sv in pv.items(): for sk, sv in pv.items():
lines.append(f" - {sk}: {sv}") lines.append(f" - {sk}: {_plain_value(sv)}")
elif isinstance(pv, list):
lines.append(f" **{pk}:** {', '.join(str(x) for x in pv)}")
else: else:
lines.append(f" **{pk}:** {pv}") lines.append(f" **{pk}:** {_plain_value(pv)}")
lines.append("") lines.append("")
return lines return lines
def _plain_value(value: object) -> str:
"""A scalar or a list of scalars as a reader writes it, not as Python does."""
if isinstance(value, bool):
return "yes" if value else "no"
if isinstance(value, (list, tuple)):
return ", ".join(_plain_value(item) for item in value)
return _escape_tags(str(value))
def _render_structured_blocks(profile: dict) -> list[str]: def _render_structured_blocks(profile: dict) -> list[str]:
"""Every remaining structured field, as a collapsible section.""" """Every remaining structured field, as a collapsible section."""
lines: list[str] = [] lines: list[str] = []
+16
View File
@@ -73,6 +73,22 @@ class WikiSourceHeadings(unittest.TestCase):
self.assertEqual(offenders, []) self.assertEqual(offenders, [])
class PlatformDetails(unittest.TestCase):
def test_lists_and_flags_read_as_prose(self):
import generate_site
lines = generate_site._render_platform_details(
{"platform_details": {"megacd": {
"extensions_tried": [".bin", ".zip"],
"hle_available": False,
"root": "<system_dir>/x",
}}}
)
self.assertIn(" - extensions_tried: .bin, .zip", lines)
self.assertIn(" - hle_available: no", lines)
self.assertIn(" - root: &lt;system_dir>/x", lines)
class RenderedSiteValidation(unittest.TestCase): class RenderedSiteValidation(unittest.TestCase):
def setUp(self) -> None: def setUp(self) -> None:
self.temp = tempfile.TemporaryDirectory(dir=TMP_ROOT) self.temp = tempfile.TemporaryDirectory(dir=TMP_ROOT)