1
0
mirror of https://github.com/gryf/wmaker.git synced 2025-12-18 20:10:29 +01:00

texi2txt: add support for the @table command

The texinfo format provides a command '@table' which is useful to provide
a list of object (function, variables, options, ...) with their associated
description.

As this will be very handy for the Installation Manual, this patch
implements the command in the script.

Signed-off-by: Christophe CURIS <christophe.curis@free.fr>
This commit is contained in:
Christophe CURIS
2015-04-06 17:58:02 +02:00
committed by Carlos R. Mafra
parent 04de317dde
commit 22e62c0637

View File

@@ -468,6 +468,28 @@ function start_item_list(mark, type, default_mark) {
write_line("");
}
# One item in a Table
function generate_item_in_table(line) {
if (line !~ /^[ \t]*@itemx?[ \t]/) {
report_error("bas usage for @item inside a @table, should be at start of line and followed by its value");
}
generate_paragraph();
if (list_item_wants_sepline && !list_is_first_item) {
write_line("");
}
# Apply the global table style to this item
gsub(/^[ \t]*@itemx?[ \t]*/, "", line);
line = execute_commands(item_list_mark "{" line "}");
# Cancel the indentation added for the 2nd column for that line
line = substr(line_prefix, 1, length(line_prefix)-5) line;
write_line(line);
list_item_wants_sepline = 0;
}
# Generate Underline string with the specified length
function gen_underline(id, len, local) {
if (id == -1) { local = " "; } else
@@ -578,6 +600,13 @@ function generate_paragraph( local_prefix, local_line, local_length,
}
}
} else if (par_mode == "table") {
if (list_item_wants_sepline && !list_is_first_item) {
write_line("");
}
list_is_first_item = 0;
list_item_wants_sepline = 0;
} else if (par_mode == "titlepage") {
write_line("");
@@ -712,6 +741,9 @@ function execute_commands(line, replaced_line, command) {
replaced_line = replaced_line "'"`LANG=C date '+%d %B %Y' | sed -e 's,^0,,' `"'";
# Commands to display text in a special style ##############################
} else if (command == "asis") {
line = cmdargs line;
} else if (command == "b") { # bold
line = "*" cmdargs "*" line;
@@ -812,6 +844,11 @@ function process_end(line) {
par_mode_pop("quotation");
par_indent = 1;
} else if ((line == "table") || (line == "ftable") || (line == "vtable")) {
generate_paragraph();
par_mode_pop("table");
par_indent = 1;
} else if (line == "titlepage") {
generate_page_break();
par_mode_pop("titlepage");
@@ -988,6 +1025,28 @@ BEGIN {
}
next;
} else if ((command == "table") ||
(command == "ftable") ||
(command == "vtable")) {
# "ftable" and "vtable" are the same as "table" except they are adding automatically
# the item to the appropriate Index (respectively Function and Variable indexes).
# As we do not generate index in the text file, we just treat them identically
if (cond_state) {
generate_paragraph();
par_mode_push("table");
list_is_first_item = 1;
list_item_wants_sepline = 0;
par_indent = 1;
line_prefix = line_prefix " ";
gsub(/[ \t]/, "", line);
if (line !~ /^@[a-z][a-z]*$/) {
report_error("invalid usage of @table, expecting a single style-changing command");
}
item_list_mark = line;
write_line("");
}
next;
} else if (command == "titlepage") {
generate_title_page();
next;
@@ -1123,7 +1182,10 @@ BEGIN {
# We treat @item specially because it may generate more than 1 paragraph
if (!cond_state) { next; }
if ((par_mode != "list") && (par_mode != "enum")) {
if (par_mode == "table") {
generate_item_in_table($0);
next;
} else if ((par_mode != "list") && (par_mode != "enum")) {
report_error("found @item at line " NR " but not inside an @itemize");
}
@@ -1154,6 +1216,7 @@ BEGIN {
if ((par_mode == "list") ||
(par_mode == "enum") ||
(par_mode == "par") ||
(par_mode == "table") ||
(par_mode == "titlepage") ||
(par_mode == "quotation")) {
if (/^[ \t]*$/) {