Explain the table of contents script better, and simplify it a bit

This commit is contained in:
w0rp 2017-09-10 19:52:01 +01:00
parent 9d24cc4047
commit 65e6e50bf8

View file

@ -19,7 +19,7 @@ toc_end_line="$(expr "$toc_start_line" + "$toc_section_size" - 2)"
toc_file="$(mktemp -t table-of-contents.XXXXXXXX)" toc_file="$(mktemp -t table-of-contents.XXXXXXXX)"
heading_file="$(mktemp -t headings.XXXXXXXX)" heading_file="$(mktemp -t headings.XXXXXXXX)"
unsorted_toc_file="$(mktemp -t ale.txt.XXXXXXXX)" tagged_toc_file="$(mktemp -t ale.txt.XXXXXXXX)"
sorted_toc_file="$(mktemp -t sorted-ale.txt.XXXXXXXX)" sorted_toc_file="$(mktemp -t sorted-ale.txt.XXXXXXXX)"
sed -n "$toc_start_line,$toc_end_line"p doc/ale.txt \ sed -n "$toc_start_line,$toc_end_line"p doc/ale.txt \
@ -43,6 +43,8 @@ exit_code=0
in_section=0 in_section=0
section_index=0 section_index=0
# Prefix numbers to table of contents entries so that sections aren't mixed up
# with sub-sections when they are sorted.
while read -r; do while read -r; do
if [[ "$REPLY" =~ ^\ ]]; then if [[ "$REPLY" =~ ^\ ]]; then
if ! ((in_section)); then if ! ((in_section)); then
@ -56,17 +58,15 @@ while read -r; do
fi fi
fi fi
echo "$section_index $REPLY" >> "$unsorted_toc_file" echo "$section_index $REPLY" >> "$tagged_toc_file"
done < "$toc_file" done < "$toc_file"
# Sort the sections and sub-sections and remove the tags.
sort -h "$unsorted_toc_file" | sed 's/[0-9]\+//' > "$sorted_toc_file" sort -h "$tagged_toc_file" | sed 's/[0-9]\+ //' > "$sorted_toc_file"
sed -i.bak 's/[0-9]\+//' "$unsorted_toc_file"
rm -f "$unsorted_toc_file".bak
echo 'Check for bad ToC sorting:' echo 'Check for bad ToC sorting:'
echo echo
diff -U2 "$sorted_toc_file" "$unsorted_toc_file" || exit_code=$? diff -U2 "$sorted_toc_file" "$toc_file" || exit_code=$?
echo 'Check for mismatched ToC and headings:' echo 'Check for mismatched ToC and headings:'
echo echo
@ -74,7 +74,7 @@ diff -U3 "$toc_file" "$heading_file" || exit_code=$?
rm "$toc_file" rm "$toc_file"
rm "$heading_file" rm "$heading_file"
rm "$unsorted_toc_file" rm "$tagged_toc_file"
rm "$sorted_toc_file" rm "$sorted_toc_file"
exit "$exit_code" exit "$exit_code"