mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-11-06 01:53:56 -06:00
fix: render a single tab without a tab bar
142 tab bars held one tab, most of them "On the device" under a heading saying so. One item now stands alone, led by its label unless it names the place the text around already gives. The network route drops "Run the command on the computer" under the heading "From your computer", which keeps RetroPie in its word budget.
This commit is contained in:
1 parent
124e96cd09
commit
32cc1ce4fa
6 files changed
+39
-4
No files matched your search
@@ -4202,7 +4202,7 @@ def _setup_routes(name: str, display: str, page_link: bool = False) -> list[str]
|
||||
# lines are on the get/ page, the one the command is shared from.
|
||||
tabs = ("windows",) if page_link else ("windows", "macos", "linux")
|
||||
computer += [
|
||||
"Needs the device on your network. Run the command on the computer.",
|
||||
"Needs the device on your network.",
|
||||
"",
|
||||
*terminal_tabs(tabs, args, how=how),
|
||||
*([f"[Mac or Linux](../{get_page_link(name)}#from-your-computer)", ""]
|
||||
|
||||
@@ -454,6 +454,10 @@ def fence(shell: str, command: str, indent: str = "") -> list[str]:
|
||||
return [f'{indent}```{shell} title="{FENCE_TITLES[shell]}"', f"{indent}{command}", f"{indent}```"]
|
||||
|
||||
|
||||
# Terminals named by where the command runs, not by the system it runs on.
|
||||
PLACES = ("device", "server")
|
||||
|
||||
|
||||
def terminal_tabs(
|
||||
tabs: tuple[str, ...], args: dict[str, str], indent: str = "", steps: bool = True,
|
||||
how: dict[str, str] | None = None,
|
||||
@@ -465,6 +469,8 @@ def terminal_tabs(
|
||||
items = []
|
||||
for key in tabs:
|
||||
label, shared, shell = TERMINALS[key]
|
||||
if len(tabs) == 1 and key in PLACES:
|
||||
label = "" # one place, which the text around already names
|
||||
text = (how or {}).get(key) or shared
|
||||
body = [text, ""] if steps else []
|
||||
items.append((label, body + fence(shell, install_command(shell, args.get(key, "")))))
|
||||
|
||||
+10
-1
@@ -139,8 +139,17 @@ def details(kind: str, title: str, body: list[str], indent: str = "", opened: bo
|
||||
|
||||
def tabs(items: list[tuple[str, list[str]]], indent: str = "", sync: str = "os") -> list[str]:
|
||||
"""Content tabs. Tabs that share a label share the reader's choice
|
||||
across pages."""
|
||||
across pages.
|
||||
|
||||
One item is no choice: 142 bars offered a single tab, most of them
|
||||
"On the device" under a heading that says so. Its body stands alone,
|
||||
led by its label when it has one: the RetroPie card is read from Linux
|
||||
only, and the label is where the page said so."""
|
||||
lines: list[str] = []
|
||||
if len(items) == 1:
|
||||
label, body = items[0]
|
||||
lead = [f"{indent}**{label}**", ""] if label else []
|
||||
return [*lead, *_indented(_trim(body), indent), ""]
|
||||
if _engine == "mkdocs":
|
||||
for label, body in items:
|
||||
lines += [f'{indent}=== "{label}"', "", *_indented(_trim(body), indent + " "), ""]
|
||||
|
||||
@@ -334,6 +334,22 @@ class NoLevelBadgeOnATabRoot(unittest.TestCase):
|
||||
self.assertNotIn('class="rb-level ', _title_through_heading(_built(page)))
|
||||
|
||||
|
||||
class OneTabIsNoTabBar(unittest.TestCase):
|
||||
"""142 tab bars held one tab, most of them "On the device" right under
|
||||
the heading "On the device"."""
|
||||
|
||||
def test_a_single_item_stands_alone(self):
|
||||
import sitemarkup
|
||||
import siteguides
|
||||
|
||||
self.assertEqual(sitemarkup.tabs([("Linux", ["run it"])]), ["**Linux**", "", "run it", ""])
|
||||
self.assertEqual(sitemarkup.tabs([("", ["run it"])]), ["run it", ""])
|
||||
self.assertIn('<Tabs syncKey="os">', sitemarkup.tabs([("A", ["a"]), ("B", ["b"])]))
|
||||
device = "\n".join(siteguides.terminal_tabs(("device",), {}))
|
||||
self.assertNotIn("<Tab", device)
|
||||
self.assertNotIn("On the device", device)
|
||||
|
||||
|
||||
class FooterLicenceMatchesTheLicenceFile(unittest.TestCase):
|
||||
"""The footer said MIT covers the tooling. LICENSE names the metadata too."""
|
||||
|
||||
|
||||
@@ -404,7 +404,9 @@ class AnAppThatReadsAnyBios(unittest.TestCase):
|
||||
install = self.page[self.page.index("Install this emulator's files"):]
|
||||
install = install[:install.index("</details>")]
|
||||
self.assertRegex(install, r"With [^:]+: the installer finds")
|
||||
self.assertEqual(set(re.findall(r'<TabItem label="([^"]+)">', install)), {"On the device"})
|
||||
# One place to run it, so no tab bar (one tab offers no choice).
|
||||
self.assertNotIn("<Tabs", install)
|
||||
self.assertIn("curl -fsSL", install)
|
||||
nether = _pages("nethersx2")["nethersx2"]
|
||||
if "--emulator nethersx2" in nether:
|
||||
self.assertIn("With ", nether)
|
||||
|
||||
@@ -925,7 +925,9 @@ class ARouteWithoutANetwork(unittest.TestCase):
|
||||
self.assertEqual(siteguides.GUIDES["retropie"].card_run, ("linux",))
|
||||
text = _plain_page("platforms/retropie.md")
|
||||
card = text.split("No network?", 1)[1].split("## On the device", 1)[0]
|
||||
self.assertEqual(_tab_labels(card), {"Linux"})
|
||||
# One system, so no tab bar: its label leads the command.
|
||||
self.assertEqual(_tab_labels(card), set())
|
||||
self.assertIn("**Linux**", card)
|
||||
|
||||
def test_no_zip_is_promised_for_an_unmarked_setup(self):
|
||||
for name in SETUPS:
|
||||
|
||||
Reference in new issue
Block a user