mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-10-11 05:53:23 -05:00
refactor: split the cross-reference into its two views
generate_cross_reference rendered the same relation twice in one function, once per platform and once per upstream, and reached complexity 53. Each view is now its own function and the caller is a pair of calls. Verified by generating the site with both versions against the same data: all 533 pages identical apart from timestamps, with a control run of the same code twice to confirm the comparison had no drift in it.
This commit is contained in:
1 parent
36a284b93b
commit
ae7256f56f
1 file changed
+57
-38
+57
-38
@@ -3174,44 +3174,11 @@ def generate_gap_analysis(
|
||||
|
||||
|
||||
|
||||
def generate_cross_reference(
|
||||
coverages: dict,
|
||||
profiles: dict,
|
||||
) -> str:
|
||||
"""Generate cross-reference: Platform -> Core -> Systems -> Upstream."""
|
||||
unique = {
|
||||
k: v for k, v in profiles.items() if v.get("type") not in ("alias", "test")
|
||||
}
|
||||
|
||||
# Build core -> profile lookup by core name
|
||||
core_to_profile: dict[str, str] = {}
|
||||
for pname, p in unique.items():
|
||||
for core in p.get("cores", [pname]):
|
||||
core_to_profile[str(core)] = pname
|
||||
|
||||
total_cores = len(unique)
|
||||
total_upstreams = len({
|
||||
p.get("upstream", p.get("source", ""))
|
||||
for p in unique.values()
|
||||
if p.get("upstream") or p.get("source")
|
||||
})
|
||||
|
||||
lines = [
|
||||
f"# Cross-reference - {SITE_NAME}",
|
||||
"",
|
||||
f"Platform > Core > Systems > Upstream emulator. "
|
||||
f"{total_cores} cores across {len(coverages)} platforms, "
|
||||
f"tracing back to {total_upstreams} upstream projects.",
|
||||
"",
|
||||
"The libretro core is a port of the upstream emulator. "
|
||||
"Files, features, and validation may differ between the two.",
|
||||
"",
|
||||
"[Download cross-reference CSV](downloads/cross-reference.csv){ .md-button } "
|
||||
"[Open emulator API](api/v1/emulators.json){ .md-button } "
|
||||
"[All data exports](data.md){ .md-button }",
|
||||
"",
|
||||
]
|
||||
|
||||
def _render_xref_by_platform(
|
||||
coverages: dict, unique: dict, core_to_profile: dict
|
||||
) -> list[str]:
|
||||
"""Which cores each platform pulls in, and what they need."""
|
||||
lines: list[str] = []
|
||||
# Per platform
|
||||
for pname in sorted(coverages.keys(), key=lambda x: coverages[x]["platform"]):
|
||||
cov = coverages[pname]
|
||||
@@ -3306,6 +3273,14 @@ def generate_cross_reference(
|
||||
|
||||
lines.append("")
|
||||
|
||||
return lines
|
||||
|
||||
|
||||
def _render_xref_by_upstream(
|
||||
coverages: dict, unique: dict, core_to_profile: dict
|
||||
) -> list[str]:
|
||||
"""The same relation read the other way: one row per upstream."""
|
||||
lines: list[str] = []
|
||||
# Reverse view: by upstream emulator
|
||||
lines.extend(
|
||||
[
|
||||
@@ -3365,6 +3340,50 @@ def generate_cross_reference(
|
||||
f"{cls_str} | {plat_str} |"
|
||||
)
|
||||
|
||||
return lines
|
||||
|
||||
|
||||
def generate_cross_reference(
|
||||
coverages: dict,
|
||||
profiles: dict,
|
||||
) -> str:
|
||||
"""Generate cross-reference: Platform -> Core -> Systems -> Upstream."""
|
||||
unique = {
|
||||
k: v for k, v in profiles.items() if v.get("type") not in ("alias", "test")
|
||||
}
|
||||
|
||||
# Build core -> profile lookup by core name
|
||||
core_to_profile: dict[str, str] = {}
|
||||
for pname, p in unique.items():
|
||||
for core in p.get("cores", [pname]):
|
||||
core_to_profile[str(core)] = pname
|
||||
|
||||
total_cores = len(unique)
|
||||
total_upstreams = len({
|
||||
p.get("upstream", p.get("source", ""))
|
||||
for p in unique.values()
|
||||
if p.get("upstream") or p.get("source")
|
||||
})
|
||||
|
||||
lines = [
|
||||
f"# Cross-reference - {SITE_NAME}",
|
||||
"",
|
||||
f"Platform > Core > Systems > Upstream emulator. "
|
||||
f"{total_cores} cores across {len(coverages)} platforms, "
|
||||
f"tracing back to {total_upstreams} upstream projects.",
|
||||
"",
|
||||
"The libretro core is a port of the upstream emulator. "
|
||||
"Files, features, and validation may differ between the two.",
|
||||
"",
|
||||
"[Download cross-reference CSV](downloads/cross-reference.csv){ .md-button } "
|
||||
"[Open emulator API](api/v1/emulators.json){ .md-button } "
|
||||
"[All data exports](data.md){ .md-button }",
|
||||
"",
|
||||
]
|
||||
|
||||
lines.extend(_render_xref_by_platform(coverages, unique, core_to_profile))
|
||||
lines.extend(_render_xref_by_upstream(coverages, unique, core_to_profile))
|
||||
|
||||
lines.extend(["", f"*Generated on {_timestamp()}*"])
|
||||
return "\n".join(lines) + "\n"
|
||||
|
||||
|
||||
Reference in new issue
Block a user