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

Ouverte Adaptée aux débutants
#204 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
2/5
Temps estimé
1-3 heures
Accessibilité débutants
82/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Active
Stack technique
shell
Domaine
cli

Piste de recherche

Commencez dans gh-md-toc, dans la branche OS/390 de gh_toc_grab autour de la ligne 428, et comparez l’extraction du texte des titres avec l’expression mise à jour de la branche par défaut. L’issue comprend une reproduction sur macOS qui force cette branche ; exécutez-la pour confirmer les libellés TOC vides, puis vérifiez que les deux titres produisent le texte et les ancres attendus.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

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).

Langage dominant
Shell
Étoiles
3.3k
Forks
2.7k
Merge moyen
1 h 56 min
PR mergées (30 j)
21

Préparer son environnement

  • Fournit un Dockerfile ou un fichier Docker Compose
  • Aucun modèle de pull request
  • Aucun guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de ekalinin/github-markdown-toc

Toutes les issues de ekalinin/github-markdown-toc

Issues similaires

Plus d'issues Shell/Bash

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.