Move awk(1)-dependent recipes to the bottom

This commit is contained in:
dteske 2016-01-31 21:34:25 +00:00
parent 5a5c0e7cfe
commit 279666ea90

View File

@ -229,120 +229,6 @@ f_vsnprintf()
eval f_snprintf \"\$1\" \"\$2\" \"\$3\" $4
}
# f_longest_line_length
#
# Simple wrapper to an awk(1) script to print the length of the longest line of
# input (read from stdin). Supports the newline escape-sequence `\n' for
# splitting a single line into multiple lines.
#
f_longest_line_length_awk='
BEGIN { longest = 0 }
{
if (split($0, lines, /\\n/) > 1)
{
for (n in lines)
{
len = length(lines[n])
longest = ( len > longest ? len : longest )
}
}
else
{
len = length($0)
longest = ( len > longest ? len : longest )
}
}
END { print longest }
'
f_longest_line_length()
{
awk "$f_longest_line_length_awk"
}
# f_number_of_lines
#
# Simple wrapper to an awk(1) script to print the number of lines read from
# stdin. Supports newline escape-sequence `\n' for splitting a single line into
# multiple lines.
#
f_number_of_lines_awk='
BEGIN { num_lines = 0 }
{
num_lines += split(" "$0, unused, /\\n/)
}
END { print num_lines }
'
f_number_of_lines()
{
awk "$f_number_of_lines_awk"
}
# f_uriencode [$text]
#
# Encode $text for the purpose of embedding safely into a URL. Non-alphanumeric
# characters are converted to `%XX' sequence where XX represents the hexa-
# decimal ordinal of the non-alphanumeric character. If $text is missing, data
# is instead read from standard input.
#
f_uriencode_awk='
BEGIN {
output = ""
for (n = 0; n < 256; n++) pack[sprintf("%c", n)] = sprintf("%%%02x", n)
}
{
sline = ""
slen = length($0)
for (n = 1; n <= slen; n++) {
char = substr($0, n, 1)
if ( char !~ /^[[:alnum:]_]$/ ) char = pack[char]
sline = sline char
}
output = output ( output ? "%0a" : "" ) sline
}
END { print output }
'
f_uriencode()
{
if [ $# -gt 0 ]; then
echo "$1" | awk "$f_uriencode_awk"
else
awk "$f_uriencode_awk"
fi
}
# f_uridecode [$text]
#
# Decode $text from a URI. Encoded characters are converted from their `%XX'
# sequence into original unencoded ASCII sequences. If $text is missing, data
# is instead read from standard input.
#
f_uridecode_awk='
BEGIN { for (n = 0; n < 256; n++) chr[n] = sprintf("%c", n) }
{
sline = ""
slen = length($0)
for (n = 1; n <= slen; n++)
{
seq = substr($0, n, 3)
if ( seq ~ /^%[[:xdigit:]][[:xdigit:]]$/ ) {
hex = substr(seq, 2, 2)
sline = sline chr[sprintf("%u", "0x"hex)]
n += 2
} else
sline = sline substr(seq, 1, 1)
}
print sline
}
'
f_uridecode()
{
if [ $# -gt 0 ]; then
echo "$1" | awk "$f_uridecode_awk"
else
awk "$f_uridecode_awk"
fi
}
# f_replaceall $string $find $replace [$var_to_set]
#
# Replace all occurrences of $find in $string with $replace. If $var_to_set is
@ -526,6 +412,120 @@ f_expand_number()
fi
}
# f_longest_line_length
#
# Simple wrapper to an awk(1) script to print the length of the longest line of
# input (read from stdin). Supports the newline escape-sequence `\n' for
# splitting a single line into multiple lines.
#
f_longest_line_length_awk='
BEGIN { longest = 0 }
{
if (split($0, lines, /\\n/) > 1)
{
for (n in lines)
{
len = length(lines[n])
longest = ( len > longest ? len : longest )
}
}
else
{
len = length($0)
longest = ( len > longest ? len : longest )
}
}
END { print longest }
'
f_longest_line_length()
{
awk "$f_longest_line_length_awk"
}
# f_number_of_lines
#
# Simple wrapper to an awk(1) script to print the number of lines read from
# stdin. Supports newline escape-sequence `\n' for splitting a single line into
# multiple lines.
#
f_number_of_lines_awk='
BEGIN { num_lines = 0 }
{
num_lines += split(" "$0, unused, /\\n/)
}
END { print num_lines }
'
f_number_of_lines()
{
awk "$f_number_of_lines_awk"
}
# f_uriencode [$text]
#
# Encode $text for the purpose of embedding safely into a URL. Non-alphanumeric
# characters are converted to `%XX' sequence where XX represents the hexa-
# decimal ordinal of the non-alphanumeric character. If $text is missing, data
# is instead read from standard input.
#
f_uriencode_awk='
BEGIN {
output = ""
for (n = 0; n < 256; n++) pack[sprintf("%c", n)] = sprintf("%%%02x", n)
}
{
sline = ""
slen = length($0)
for (n = 1; n <= slen; n++) {
char = substr($0, n, 1)
if ( char !~ /^[[:alnum:]_]$/ ) char = pack[char]
sline = sline char
}
output = output ( output ? "%0a" : "" ) sline
}
END { print output }
'
f_uriencode()
{
if [ $# -gt 0 ]; then
echo "$1" | awk "$f_uriencode_awk"
else
awk "$f_uriencode_awk"
fi
}
# f_uridecode [$text]
#
# Decode $text from a URI. Encoded characters are converted from their `%XX'
# sequence into original unencoded ASCII sequences. If $text is missing, data
# is instead read from standard input.
#
f_uridecode_awk='
BEGIN { for (n = 0; n < 256; n++) chr[n] = sprintf("%c", n) }
{
sline = ""
slen = length($0)
for (n = 1; n <= slen; n++)
{
seq = substr($0, n, 3)
if ( seq ~ /^%[[:xdigit:]][[:xdigit:]]$/ ) {
hex = substr(seq, 2, 2)
sline = sline chr[sprintf("%u", "0x"hex)]
n += 2
} else
sline = sline substr(seq, 1, 1)
}
print sline
}
'
f_uridecode()
{
if [ $# -gt 0 ]; then
echo "$1" | awk "$f_uridecode_awk"
else
awk "$f_uridecode_awk"
fi
}
############################################################ MAIN
f_dprintf "%s: Successfully loaded." strings.subr