mirror of
https://github.com/gryf/wmaker.git
synced 2025-12-18 20:10:29 +01:00
txt-from-texi: remove use of the 'switch' statement for portability
This 'switch' control statement is actually a GNU extension, so it is not portable to other awk implementations. This patch replace them with the traditional 'if...else' sequence which will work everywhere. Signed-off-by: Christophe CURIS <christophe.curis@free.fr>
This commit is contained in:
committed by
Carlos R. Mafra
parent
5293a5ae41
commit
2bf380cd27
@@ -217,17 +217,14 @@ function set_variable(line, local_idx, local_name, local_value) {
|
||||
function write_line(line) {
|
||||
if (!cond_state) { return; }
|
||||
|
||||
switch (redirect_out) {
|
||||
case "no":
|
||||
if (redirect_out == "no") {
|
||||
print line;
|
||||
line_number++;
|
||||
break;
|
||||
|
||||
case "copyright":
|
||||
} else if (redirect_out == "copyright") {
|
||||
copyright_lines[copyright_count++] = line;
|
||||
break;
|
||||
|
||||
default:
|
||||
} else {
|
||||
report_error("redirect output mode \"" redirect_out "\" is not supported (line " NR ")");
|
||||
}
|
||||
}
|
||||
@@ -466,14 +463,12 @@ function start_item_list(mark) {
|
||||
|
||||
# Generate Underline string with the specified length
|
||||
function gen_underline(id, len, local) {
|
||||
switch (id) {
|
||||
case -1: local = " "; break;
|
||||
case 1: local = "**********"; break;
|
||||
case 2: local = "=========="; break;
|
||||
case 3: local = "----------"; break;
|
||||
case 4: local = ".........."; break;
|
||||
default: local = "~~~~~~~~~~"; break;
|
||||
}
|
||||
if (id == -1) { local = " "; } else
|
||||
if (id == 1) { local = "**********"; } else
|
||||
if (id == 2) { local = "=========="; } else
|
||||
if (id == 3) { local = "----------"; } else
|
||||
if (id == 4) { local = ".........."; }
|
||||
else { local = "~~~~~~~~~~"; }
|
||||
while (length(local) < len) {
|
||||
local = local local;
|
||||
}
|
||||
@@ -483,17 +478,16 @@ function gen_underline(id, len, local) {
|
||||
# Generate text for an URL link
|
||||
function generate_url_reference(args, local_nb, local_arr) {
|
||||
local_nb = split(args, local_arr, ",");
|
||||
switch (local_nb) {
|
||||
case 1:
|
||||
if (local_nb == 1) {
|
||||
return local_arr[1];
|
||||
|
||||
case 2:
|
||||
} else if (local_nb == 2) {
|
||||
return execute_commands(local_arr[2]) " (" local_arr[1] ")";
|
||||
|
||||
case 3:
|
||||
} else if (local_nb == 3) {
|
||||
return execute_commands(local_arr[3]);
|
||||
|
||||
default:
|
||||
} else {
|
||||
report_error("bad number of argument " local_nb " for @uref at line " NR);
|
||||
}
|
||||
}
|
||||
@@ -507,24 +501,21 @@ function generate_author_line(name, local_offset, local_attach_to_par)
|
||||
|
||||
generate_paragraph();
|
||||
|
||||
switch (par_mode) {
|
||||
case "titlepage":
|
||||
if (par_mode == "titlepage") {
|
||||
name = "-- " name " --";
|
||||
local_offset = int((76 - length(name)) / 2);
|
||||
if (local_offset < 2) { local_offset = 2; }
|
||||
write_line("");
|
||||
write_line(gen_underline(-1, local_offset) name);
|
||||
break;
|
||||
|
||||
case "quotation":
|
||||
} else if (par_mode == "quotation") {
|
||||
name = "-- " name;
|
||||
local_offset = int((line_length - length(line_prefix) - length(name)) * 2/3);
|
||||
if (local_offset < length(line_prefix) + 2) { local_offset = length(line_prefix) + 2; }
|
||||
if (!local_attach_to_par) { write_line(""); }
|
||||
write_line(line_prefix gen_underline(-1, local_offset) name);
|
||||
break;
|
||||
|
||||
default:
|
||||
} else {
|
||||
report_error("command @author used in an inappropriate mode (" par_mode ") at line " NR);
|
||||
}
|
||||
}
|
||||
@@ -546,8 +537,7 @@ function generate_paragraph( local_prefix, local_line, local_length,
|
||||
|
||||
local_line = line_prefix;
|
||||
|
||||
switch (par_mode) {
|
||||
case "list":
|
||||
if (par_mode == "list") {
|
||||
if (list_item_wants_sepline && !list_is_first_item) {
|
||||
write_line("");
|
||||
}
|
||||
@@ -558,25 +548,21 @@ function generate_paragraph( local_prefix, local_line, local_length,
|
||||
while (length(local_prefix) < 5) { local_prefix = " " local_prefix; }
|
||||
local_line = substr(local_line, 1, length(local_line) - 5) local_prefix;
|
||||
}
|
||||
break;
|
||||
|
||||
case "titlepage":
|
||||
} else if (par_mode == "titlepage") {
|
||||
write_line("");
|
||||
break;
|
||||
|
||||
case "par":
|
||||
} else if (par_mode == "par") {
|
||||
write_line("");
|
||||
if (par_indent) {
|
||||
local_line = local_line " ";
|
||||
}
|
||||
break;
|
||||
|
||||
case "quotation":
|
||||
} else if (par_mode == "quotation") {
|
||||
write_line("");
|
||||
# There is no extra indentation of paragraphs in this mode
|
||||
break;
|
||||
|
||||
default:
|
||||
} else {
|
||||
report_error("paragraph mode \"" par_mode "\" is not supported in generate_paragraph (line " NR ")");
|
||||
}
|
||||
|
||||
@@ -675,103 +661,81 @@ function execute_commands(line, replaced_line, command) {
|
||||
sub(/^[ \t]+/, "", line);
|
||||
}
|
||||
|
||||
# Process the command
|
||||
switch (command) {
|
||||
|
||||
# Commands generating "special" characters #################################
|
||||
case "@":
|
||||
if (command == "@") {
|
||||
replaced_line = replaced_line "@";
|
||||
break;
|
||||
|
||||
case "bullet":
|
||||
} else if (command == "bullet") {
|
||||
replaced_line = replaced_line "*";
|
||||
break;
|
||||
|
||||
case "copyright":
|
||||
} else if (command == "copyright") {
|
||||
replaced_line = replaced_line "(c)";
|
||||
break;
|
||||
|
||||
case "minus":
|
||||
} else if (command == "minus") {
|
||||
replaced_line = replaced_line "-";
|
||||
break;
|
||||
|
||||
case "registeredsymbol":
|
||||
} else if (command == "registeredsymbol") {
|
||||
replaced_line = replaced_line "(r)";
|
||||
break;
|
||||
|
||||
case "today":
|
||||
} else if (command == "today") {
|
||||
# Make sure the date will be in english (we use "C" because it not certain
|
||||
# that the English locale is enabled on the machine of the user)
|
||||
replaced_line = replaced_line "'"`LANG=C date '+%d %B %Y' | sed -e 's,^0,,' `"'";
|
||||
break;
|
||||
|
||||
# Commands to display text in a special style ##############################
|
||||
case "b": # bold
|
||||
} else if (command == "b") { # bold
|
||||
line = "*" cmdargs "*" line;
|
||||
break;
|
||||
|
||||
case "cite":
|
||||
case "emph":
|
||||
} else if ((command == "cite") ||
|
||||
(command == "emph")) {
|
||||
line = cmdargs line;
|
||||
break;
|
||||
|
||||
case "code":
|
||||
case "command":
|
||||
case "env":
|
||||
case "option":
|
||||
case "var":
|
||||
} else if ((command == "code") ||
|
||||
(command == "command") ||
|
||||
(command == "env") ||
|
||||
(command == "option") ||
|
||||
(command == "var")) {
|
||||
# Should be in fixed-spacing font; printed with single-quotes
|
||||
line = "'\''" cmdargs "'\''" line;
|
||||
break;
|
||||
|
||||
case "i": # italic
|
||||
} else if (command == "i") { # italic
|
||||
line = "_" cmdargs "_" line;
|
||||
break;
|
||||
|
||||
case "email":
|
||||
} else if (command == "email") {
|
||||
line = "<" cmdargs ">" line;
|
||||
break;
|
||||
|
||||
case "file":
|
||||
} else if (command == "file") {
|
||||
line = "\"" cmdargs "\"" line;
|
||||
break;
|
||||
|
||||
case "key":
|
||||
} else if (command == "key") {
|
||||
line = "<" cmdargs ">" line;
|
||||
break;
|
||||
|
||||
case "r": # roman font
|
||||
} else if (command == "r") { # roman font
|
||||
line = cmdargs line;
|
||||
break;
|
||||
|
||||
case "sc":
|
||||
} else if (command == "sc") {
|
||||
# Small-Caps, keep as-is in plain text
|
||||
line = cmdargs line;
|
||||
break;
|
||||
|
||||
case "t": # typewriter-like
|
||||
} else if (command == "t") { # typewriter-like
|
||||
line = cmdargs line;
|
||||
break;
|
||||
|
||||
case "uref":
|
||||
} else if (command == "uref") {
|
||||
replaced_line = replaced_line generate_url_reference(cmdargs);
|
||||
break;
|
||||
|
||||
# Variable and Conditional commands ########################################
|
||||
case "value":
|
||||
} else if (command == "value") {
|
||||
if (variable[cmdargs] == "") {
|
||||
report_error("variable '" cmdargs "' is unknow, for @value at line " NR);
|
||||
}
|
||||
line = variable[cmdargs] line;
|
||||
break;
|
||||
|
||||
# Miscelleanous commands ###################################################
|
||||
case "c":
|
||||
} else if (command == "c") {
|
||||
# Comments: ignore everything to the end of line
|
||||
line = "";
|
||||
break;
|
||||
|
||||
default:
|
||||
} else {
|
||||
report_error("unknow command @" command " at line " NR);
|
||||
}
|
||||
|
||||
@@ -785,49 +749,41 @@ function process_end(line) {
|
||||
end_conditional(line);
|
||||
return;
|
||||
}
|
||||
switch (line) {
|
||||
case "copying":
|
||||
if (line == "copying") {
|
||||
generate_paragraph();
|
||||
redirect_out = "no";
|
||||
break;
|
||||
|
||||
case "example":
|
||||
} else if (line == "example") {
|
||||
generate_paragraph();
|
||||
par_mode_pop("example");
|
||||
par_indent = 1;
|
||||
break;
|
||||
|
||||
case "flushleft":
|
||||
} else if (line == "flushleft") {
|
||||
generate_paragraph();
|
||||
par_mode_pop(par_mode);
|
||||
par_indent = 1;
|
||||
break;
|
||||
|
||||
case "flushright":
|
||||
} else if (line == "flushright") {
|
||||
generate_paragraph();
|
||||
par_mode_pop(par_mode);
|
||||
par_indent = 1;
|
||||
break;
|
||||
|
||||
case "itemize":
|
||||
} else if (line == "itemize") {
|
||||
generate_paragraph();
|
||||
par_mode_pop("list");
|
||||
par_indent = 1;
|
||||
break;
|
||||
|
||||
case "quotation":
|
||||
} else if (line == "quotation") {
|
||||
generate_paragraph();
|
||||
par_mode_pop("quotation");
|
||||
par_indent = 1;
|
||||
break;
|
||||
|
||||
case "titlepage":
|
||||
} else if (line == "titlepage") {
|
||||
generate_page_break();
|
||||
par_mode_pop("titlepage");
|
||||
par_indent = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
} else {
|
||||
report_error("unknow command @end " line " at line " NR);
|
||||
}
|
||||
}
|
||||
@@ -877,30 +833,28 @@ BEGIN {
|
||||
line = substr($0, idx + 1 + RLENGTH);
|
||||
sub(/^[ \t]+/, "", line);
|
||||
|
||||
switch (command) {
|
||||
|
||||
# Commands for structuring the document ####################################
|
||||
case "chapter":
|
||||
if (command == "chapter") {
|
||||
new_section(1, execute_commands(line), 1);
|
||||
next;
|
||||
|
||||
case "section":
|
||||
} else if (command == "section") {
|
||||
new_section(2, execute_commands(line), 1);
|
||||
next;
|
||||
|
||||
case "subsection":
|
||||
} else if (command == "subsection") {
|
||||
new_section(3, execute_commands(line), 1);
|
||||
next;
|
||||
|
||||
case "subsubsection":
|
||||
} else if (command == "subsubsection") {
|
||||
new_section(4, execute_commands(line), 1);
|
||||
next;
|
||||
|
||||
case "node":
|
||||
} else if (command == "node") {
|
||||
# We ignore nodes completely, this is for the "info" format only
|
||||
next;
|
||||
|
||||
case "top":
|
||||
} else if (command == "top") {
|
||||
# This is mandatory for "info" format, but useless for plain text
|
||||
if (top_was_found > 0) {
|
||||
report_error("command @top at line " NR " but was already found at line " top_was_found);
|
||||
@@ -908,35 +862,35 @@ BEGIN {
|
||||
top_was_found = NR;
|
||||
next;
|
||||
|
||||
case "unnumbered":
|
||||
} else if (command == "unnumbered") {
|
||||
new_section(1, execute_commands(line), 0);
|
||||
next;
|
||||
|
||||
# Commands for content in the Title Page ###################################
|
||||
case "author":
|
||||
} else if (command == "author") {
|
||||
generate_author_line(execute_commands(line));
|
||||
next;
|
||||
|
||||
case "subtitle":
|
||||
} else if (command == "subtitle") {
|
||||
generate_title_page_subtitle(execute_commands(line));
|
||||
next;
|
||||
|
||||
case "title":
|
||||
} else if (command == "title") {
|
||||
generate_title_page_title(execute_commands(line));
|
||||
next;
|
||||
|
||||
# Commands changing the way paragraph are displayed ########################
|
||||
case "copying":
|
||||
} else if (command == "copying") {
|
||||
generate_paragraph();
|
||||
redirect_out = "copyright";
|
||||
copyright_count = 0;
|
||||
next;
|
||||
|
||||
case "end":
|
||||
} else if (command == "end") {
|
||||
process_end(line);
|
||||
next;
|
||||
|
||||
case "example":
|
||||
} else if (command == "example") {
|
||||
if (cond_state) {
|
||||
generate_paragraph();
|
||||
write_line("");
|
||||
@@ -945,7 +899,7 @@ BEGIN {
|
||||
}
|
||||
next;
|
||||
|
||||
case "flushleft":
|
||||
} else if (command == "flushleft") {
|
||||
if (cond_state) {
|
||||
generate_paragraph();
|
||||
par_mode_push(par_mode);
|
||||
@@ -954,7 +908,7 @@ BEGIN {
|
||||
}
|
||||
next;
|
||||
|
||||
case "flushright":
|
||||
} else if (command == "flushright") {
|
||||
if (cond_state) {
|
||||
generate_paragraph();
|
||||
par_mode_push(par_mode);
|
||||
@@ -963,19 +917,19 @@ BEGIN {
|
||||
}
|
||||
next;
|
||||
|
||||
case "itemize":
|
||||
} else if (command == "itemize") {
|
||||
if (cond_state) {
|
||||
generate_paragraph();
|
||||
start_item_list(line);
|
||||
}
|
||||
next;
|
||||
|
||||
case "menu":
|
||||
} else if (command == "menu") {
|
||||
generate_paragraph();
|
||||
discard_block(command);
|
||||
next;
|
||||
|
||||
case "quotation":
|
||||
} else if (command == "quotation") {
|
||||
if (cond_state) {
|
||||
generate_paragraph();
|
||||
par_mode_push("quotation");
|
||||
@@ -993,12 +947,12 @@ BEGIN {
|
||||
}
|
||||
next;
|
||||
|
||||
case "titlepage":
|
||||
} else if (command == "titlepage") {
|
||||
generate_title_page();
|
||||
next;
|
||||
|
||||
# Commands generating text automacitally ###################################
|
||||
case "contents":
|
||||
} else if (command == "contents") {
|
||||
if (cond_state) {
|
||||
generate_paragraph();
|
||||
write_line("");
|
||||
@@ -1007,7 +961,7 @@ BEGIN {
|
||||
}
|
||||
next;
|
||||
|
||||
case "insertcopying":
|
||||
} else if (command == "insertcopying") {
|
||||
if (cond_state) {
|
||||
generate_paragraph();
|
||||
# The copying block was already formatted, we just have to print it as-is
|
||||
@@ -1017,11 +971,11 @@ BEGIN {
|
||||
}
|
||||
next;
|
||||
|
||||
case "page":
|
||||
} else if (command == "page") {
|
||||
generate_page_break();
|
||||
next;
|
||||
|
||||
case "sp":
|
||||
} else if (command == "sp") {
|
||||
if (cond_state) {
|
||||
generate_paragraph();
|
||||
while (line > 0) {
|
||||
@@ -1031,7 +985,7 @@ BEGIN {
|
||||
}
|
||||
next;
|
||||
|
||||
case "vskip":
|
||||
} else if (command == "vskip") {
|
||||
# Silently ignore, this is just for TeX
|
||||
if (cond_state) {
|
||||
generate_paragraph();
|
||||
@@ -1039,37 +993,37 @@ BEGIN {
|
||||
next;
|
||||
|
||||
# Variable and Conditional commands ########################################
|
||||
case "ifdocbook": start_conditional(command, 0); line = ""; next;
|
||||
case "ifhtml": start_conditional(command, 0); line = ""; next;
|
||||
case "ifinfo": start_conditional(command, 1); line = ""; next; # "for historical compatibility"
|
||||
case "ifplaintext": start_conditional(command, 1); line = ""; next;
|
||||
case "iftex": start_conditional(command, 0); line = ""; next;
|
||||
case "ifxml": start_conditional(command, 0); line = ""; next;
|
||||
} else if (command == "ifdocbook") { start_conditional(command, 0); line = ""; next;
|
||||
} else if (command == "ifhtml") { start_conditional(command, 0); line = ""; next;
|
||||
} else if (command == "ifinfo") { start_conditional(command, 1); line = ""; next; # "for historical compatibility"
|
||||
} else if (command == "ifplaintext") { start_conditional(command, 1); line = ""; next;
|
||||
} else if (command == "iftex") { start_conditional(command, 0); line = ""; next;
|
||||
} else if (command == "ifxml") { start_conditional(command, 0); line = ""; next;
|
||||
|
||||
case "ifnotdocbook": start_conditional(command, 1); line = ""; next;
|
||||
case "ifnothtml": start_conditional(command, 1); line = ""; next;
|
||||
case "ifnotinfo": start_conditional(command, 0); line = ""; next; # "for historical compatibility"
|
||||
case "ifnotplaintext": start_conditional(command, 0); line = ""; next;
|
||||
case "ifnottex": start_conditional(command, 1); line = ""; next;
|
||||
case "ifnotxml": start_conditional(command, 1); line = ""; next;
|
||||
} else if (command == "ifnotdocbook") { start_conditional(command, 1); line = ""; next;
|
||||
} else if (command == "ifnothtml") { start_conditional(command, 1); line = ""; next;
|
||||
} else if (command == "ifnotinfo") { start_conditional(command, 0); line = ""; next; # "for historical compatibility"
|
||||
} else if (command == "ifnotplaintext") { start_conditional(command, 0); line = ""; next;
|
||||
} else if (command == "ifnottex") { start_conditional(command, 1); line = ""; next;
|
||||
} else if (command == "ifnotxml") { start_conditional(command, 1); line = ""; next;
|
||||
|
||||
case "ifclear": start_conditional(command, (variable[line] == "")); next;
|
||||
case "ifset": start_conditional(command, (variable[line] != "")); next;
|
||||
} else if (command == "ifclear") { start_conditional(command, (variable[line] == "")); next;
|
||||
} else if (command == "ifset") { start_conditional(command, (variable[line] != "")); next;
|
||||
|
||||
case "clear":
|
||||
} else if (command == "clear") {
|
||||
if (cond_state) {
|
||||
variable[ execute_commands(line) ] = "";
|
||||
}
|
||||
next;
|
||||
|
||||
case "set":
|
||||
} else if (command == "set") {
|
||||
if (cond_state) {
|
||||
set_variable(line);
|
||||
}
|
||||
next;
|
||||
|
||||
# Miscelleanous commands ###################################################
|
||||
case "bye":
|
||||
} else if (command == "bye") {
|
||||
# Mark the end of file, we are supposed to ignore everything after
|
||||
if (cond_state) {
|
||||
generate_paragraph();
|
||||
@@ -1078,43 +1032,41 @@ BEGIN {
|
||||
}
|
||||
next;
|
||||
|
||||
case "c":
|
||||
} else if (command == "c") {
|
||||
# Comments: ignore everything to the end of line
|
||||
next;
|
||||
|
||||
case "errormsg":
|
||||
} else if (command == "errormsg") {
|
||||
print "Error: " execute_commands(cmdargs) > "/dev/stderr";
|
||||
print " (from \"'"$input_file"'\", line " NR ")" > "/dev/stderr";
|
||||
bye_marker_found = 1;
|
||||
exit 4;
|
||||
|
||||
case "finalout":
|
||||
} else if (command == "finalout") {
|
||||
# Nothing to do, we are not generating anything in output file about long lines
|
||||
next;
|
||||
|
||||
case "ignore":
|
||||
} else if (command == "ignore") {
|
||||
# These are multi-lines comments
|
||||
discard_block(command);
|
||||
next;
|
||||
|
||||
case "indent":
|
||||
} else if (command == "indent") {
|
||||
par_indent = 1;
|
||||
if (line == "") { next; }
|
||||
$0 = line;
|
||||
break;
|
||||
|
||||
case "noindent":
|
||||
} else if (command == "noindent") {
|
||||
par_indent = 0;
|
||||
if (line == "") { next; }
|
||||
$0 = line;
|
||||
break;
|
||||
|
||||
case "setfilename":
|
||||
} else if (command == "setfilename") {
|
||||
# Should set the output file name automatically
|
||||
# at current time, we just ignore it
|
||||
next;
|
||||
|
||||
case "settitle":
|
||||
} else if (command == "settitle") {
|
||||
# This is used for page headers
|
||||
# in a plain text file, it is useless
|
||||
next;
|
||||
@@ -1158,11 +1110,10 @@ BEGIN {
|
||||
{
|
||||
if (!cond_state) { next; }
|
||||
|
||||
switch (par_mode) {
|
||||
case "list":
|
||||
case "par":
|
||||
case "titlepage":
|
||||
case "quotation":
|
||||
if ((par_mode == "list") ||
|
||||
(par_mode == "par") ||
|
||||
(par_mode == "titlepage") ||
|
||||
(par_mode == "quotation")) {
|
||||
if (/^[ \t]*$/) {
|
||||
# Empty lines separate paragraphs
|
||||
generate_paragraph();
|
||||
@@ -1171,16 +1122,14 @@ BEGIN {
|
||||
} else {
|
||||
add_text_to_paragraph(execute_commands($0));
|
||||
}
|
||||
break;
|
||||
|
||||
case "example":
|
||||
} else if (par_mode == "example") {
|
||||
# Line is printed unmodified, not split and not merged, but with an indentation
|
||||
$0 = line_prefix execute_commands($0);
|
||||
sub(/[ \t]*$/, "");
|
||||
write_line($0);
|
||||
break;
|
||||
|
||||
default:
|
||||
} else {
|
||||
report_error("paragraph mode \"" par_mode "\" is not supported for line processing (line " NR ")");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user