rdb man: Titel der Themen-Seiten (dashline, headline ...) aus .TH

This commit is contained in:
wkh
2026-10-11 23:56:05 +02:00
parent 6b9810b075
commit 2e03c0a440
3 changed files with 12 additions and 2 deletions
+1
View File
@@ -17,6 +17,7 @@ folgen [Semantic Versioning](https://semver.org/lang/de/). Die Version steht in
- README und `man/row.man` erklären, warum `select` in bash/zsh/ksh einen Syntaxfehler gibt und wie man es trotzdem aufruft. - README und `man/row.man` erklären, warum `select` in bash/zsh/ksh einen Syntaxfehler gibt und wie man es trotzdem aufruft.
### Behoben ### Behoben
- `rdb man dashline` (und `headline`, `backup`, `dbase`, `accounting_ter`) zeigte als Überschrift eine Makrozeile (`dashline -- .PP`). Themen-Seiten ohne Beschreibung nehmen jetzt den Titel aus der `.TH`-Zeile.
- `splittable -0` und mehr als 676 Stücke endeten mit einem Ruby-Abbruch (im zweiten Fall nach 676 geschriebenen Dateien). Jetzt eine Fehlermeldung, und es wird vorher geprüft, damit nichts halb geschrieben wird. - `splittable -0` und mehr als 676 Stücke endeten mit einem Ruby-Abbruch (im zweiten Fall nach 676 geschriebenen Dateien). Jetzt eine Fehlermeldung, und es wird vorher geprüft, damit nichts halb geschrieben wird.
- `rdb man` zeigte `\\select` in den Man-Pages als `\elect`: ein doppelter Backslash wird jetzt zuerst geschützt. - `rdb man` zeigte `\\select` in den Man-Pages als `\elect`: ein doppelter Backslash wird jetzt zuerst geschützt.
+5 -2
View File
@@ -148,8 +148,11 @@ Rdb.register('man', 'Display the manual page for a command', 'man [-g] command')
args.each do |a| args.each do |a|
f = File.join(Rdb::ROOT, 'man', "#{a == 'Number' ? 'number.c' : a}.man") f = File.join(Rdb::ROOT, 'man', "#{a == 'Number' ? 'number.c' : a}.man")
File.exist?(f) or die("no manual page for '#{a}'") File.exist?(f) or die("no manual page for '#{a}'")
desc = File.read(f)[/^\.PC\s+"?(.*?)"?\s*$/, 1] src = File.read(f)
puts "#{a}#{desc ? " -- #{troff_clean(desc)}" : ''}", '=' * 60 desc = src[/^\.PC[ \t]+"?(.*?)"?[ \t]*$/, 1]
# topic pages (dash line, head line ...) have an empty .PC; their title is in .TH
title = desc.to_s.empty? && src =~ /^\.TH\s+(?:"([^"]*)"|(\S+))/ ? ($1 || $2) : nil
puts "#{title || a}#{desc.to_s.empty? ? '' : " -- #{troff_clean(desc)}"}", '=' * 60
puts render_man(File.read(f)), '' puts render_man(File.read(f)), ''
end end
end end
+6
View File
@@ -481,6 +481,12 @@ class HelpTest < RdbCase
assert_equal "\e[3;8H", rdb('cursor', '3', '8') assert_equal "\e[3;8H", rdb('cursor', '3', '8')
end end
def test_man_topic_pages_get_their_title
assert_equal 'dash line', rdb('man', 'dashline').lines.first.chomp
assert_equal 'head line', rdb('man', 'headline').lines.first.chomp
assert_match(/\Arow -- Make a new table/, rdb('man', 'row'))
end
def test_testall_mentions_every_command def test_testall_mentions_every_command
script = File.read(File.join(DEMO, 'testall.cmds')) script = File.read(File.join(DEMO, 'testall.cmds'))
names = data(rdb('commands')).map(&:first) names = data(rdb('commands')).map(&:first)