[ BUG ] TOC entries have no text on OS/390

Offen Anfängerfreundlich
#204 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
2/5
Geschätzter Aufwand
1-3 Stunden
Anfängerfreundlichkeit
82/100
Issue-Typ
Bug
Klarheit
Klar beschrieben
Aktivitätsstatus
Aktiv
Tech-Stack
shell
Bereich
cli

Rechercherichtung

Beginne in gh-md-toc im OS/390-Zweig von gh_toc_grab etwa bei Zeile 428 und vergleiche die Extraktion des Überschriftentexts mit dem aktualisierten Ausdruck im Standardzweig. Das Issue enthält eine macOS-Reproduktion, die diesen Zweig erzwingt; führe sie aus, um die leeren TOC-Bezeichnungen zu bestätigen, und prüfe dann, ob beide Überschriften den erwarteten Text und die erwarteten Anker erzeugen.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

bug

Describe the bug

On OS/390 (z/OS) every TOC entry has an empty text: * [](#title) instead of * [Title](#title).

The OS/390 branch of gh_toc_grab takes the heading text with an expression for the old GitHub HTML layout (line 428 on master at a28f86d):

text = substr($0, match($0, /<\/span><\/a>[^<]*<\/h/)+11, RLENGTH-14)

In the old layout the anchor was inside the heading tag, before the text. Now it comes after the heading tag, and the line ends at </a (the grep pattern <h[1-6][^>]*class="heading-element".*</a):

<h1 class="heading-element">gh-md-toc</h1><a id="user-content-gh-md-toc" class="anchor" aria-label="Permalink: gh-md-toc" href="#gh-md-toc"><span aria-hidden="true" class="octicon octicon-link"></span></a

There is no </span></a> followed by the text and </h, so match returns 0 and text is empty. The link is fine: since #185 both branches take it from the class="anchor" element.

7d0a86b ("Update for a new GH HTML layout") changed the grep pattern and the text expression of the default branch to the new layout, but not the text expression of the OS/390 branch.

To Reproduce

Not run on z/OS. Simulated on macOS with a copy of gh-md-toc where the OS/390 branch of gh_toc_grab is always taken, and pcregrep -o is replaced with grep -Eo (the same pattern):

sed -e '422s/if \[ "$(uname -s)" == "OS\/390" \]; then/if true; then/' \
    -e '423s/grepcmd="pcregrep -o"/grepcmd="grep -Eo"/' gh-md-toc > os390-gh-md-toc
chmod +x os390-gh-md-toc
printf '# Title\n\n## Section\n' > test.md
./os390-gh-md-toc test.md

Output:

Table of Contents
=================

* [](#title)
   * [](#section)

For README.md of this repository, all 17 entries have an empty text.

Expected behavior

* [Title](#title)
   * [Section](#section)

Environment (please complete the following information):

  • OS: OS/390 (simulated on macOS, Darwin 24.6.0)
  • Version: 0.11.0 (master at a28f86d)

Additional context

Found while working on #153 (#202).

Vorherrschende Sprache
Shell
Sterne
3.3k
Forks
2.7k
Ø Merge
1 Std. 56 Min.
Gemergte PRs (30 T.)
21

Entwicklungsumgebung

  • Enthält ein Dockerfile oder eine Docker-Compose-Datei
  • Keine Pull-Request-Vorlage
  • Kein Beitragsleitfaden

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus ekalinin/github-markdown-toc

Alle Issues in ekalinin/github-markdown-toc

Ähnliche Issues

Weitere Issues zu Shell/Bash

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.