mirror of
https://github.com/fish-shell/fish-shell.git
synced 2024-11-25 18:03:37 +08:00
24 lines
1.3 KiB
Fish
24 lines
1.3 KiB
Fish
|
#!/usr/bin/env fish
|
||
|
# Build a list of all sections in the html sphinx docs, separately by page,
|
||
|
# so it can be added to share/functions/help.fish
|
||
|
# Use like
|
||
|
# fish extract_help_sections.fish user_doc/html/{fish_for_bash_users.html,faq.html,interactive.html,language.html,tutorial.html}
|
||
|
# TODO: Currently `help` uses variable names we can't generate, so it needs to be touched up manually.
|
||
|
# Also this could easily be broken by changes in sphinx, ideally we'd have a way to let it print the section titles.
|
||
|
#
|
||
|
|
||
|
for file in $argv
|
||
|
set -l varname (string replace -r '.*/(.*).html' '$1' -- $file | string escape --style=var)pages
|
||
|
# Technically we can use any id in the document as an anchor, but listing them all is probably too much.
|
||
|
# Sphinx stores section titles (in a slug-ized form) in the id,
|
||
|
# and stores explicit section links in a `span` tag like
|
||
|
# `<span id="identifiers"></span>`
|
||
|
# We extract both separately.
|
||
|
set -l sections (string replace -rf '.*class="headerlink" href="#([^"]*)".*' '$1' <$file)
|
||
|
# Sections titled "id5" and such are internal cruft and shouldn't be offered.
|
||
|
set -a sections (string replace -rf '.*span id="([^"]*)".*' '$1' <$file | string match -rv 'id\d+')
|
||
|
|
||
|
set sections (printf '%s\n' $sections | sort -u)
|
||
|
echo set -l $varname $sections
|
||
|
end
|