_(){ printf %s\\n "$*"; }
[ "${LANGUAGE}" -a -r "${_EXEC}/l10n/${LANGUAGE}.sh" ] && . "${_EXEC}/l10n/${LANGUAGE}.sh"
-show_form=true show_hits='' action=''
+show_form=true show_hits='' action='' query=''
set -- "$@" --
while [ $# -gt 0 ]; do case $1 in
*) set -- "$@" "$1"; shift 1;;
esac; done
+[ $# -gt 0 ] && query="$*" || query="$(GET q)"
+
searchteaser() {
local file="$1" words db3_data
local w l nc nl hits mhits cont mcont
fi
if [ "${show_form}" = true ]; then
- printf '<form class="macro search" method="GET" action="%s">
- <input type="search" placeholder="%s" name="q" value="%s"><button type="submit" class="search">%s</button>
-</form>' "$action" "$(_ Search)" "$([ "$show_hits" = true ] && GET q |HTML)" "$(_ Search)"
+ cat <<-EOF
+ <form class="macro search" method="GET" action="${action}">
+ <input type="search" placeholder="$(_ Search)" name="q"
+ value="$([ "$show_hits" = true ] && printf %s\\n "$query" |HTML)"
+ ><button type="submit" class="search">$(_ Search)</button>
+ </form>
+ EOF
fi
if [ "${show_hits}" = true ]; then
{ read tags; read ntags; read words; } <<-EOF
- $(GET q | awk '
+ $(printf %s\\n "${query}" | awk '
BEGIN { # Field separator FS should include punctuation, including Unicode Block U+2000 - U+206F
if ( length("ยก") == 1 ) # Utf-8 aware AWK
- FS = "([] \\t\\n\\r\"'\''()*+,./:;<=>?\\\\^_`{|}~[-]|%[0-9A-Fa-f]{2}|'"$(printf '[\342\200\200-\342\201\257]')"')+";
+ FS = "([] \\t\\n\\r\"'\''()*+,./:;<=>?\\\\^`{|}~[-]|%[0-9A-Fa-f]{2}|'"$(printf '[\342\200\200-\342\201\257]')"')+";
else # UTF-8 Hack
- FS = "([] \\t\\n\\r\"'\''()*+,./:;<=>?\\\\^_`{|}~[-]|%[0-9A-Fa-f]{2}|'"$(printf '\342\200[\200-\277]|\342\201[\201-\257]')"')+";
+ FS = "([] \\t\\n\\r\"'\''()*+,./:;<=>?\\\\^`{|}~[-]|%[0-9A-Fa-f]{2}|'"$(printf '\342\200[\200-\277]|\342\201[\201-\257]')"')+";
fi
}
{ t=0; for (n = 1; n <= NF; n++) if ($n ~ /#[[:alnum:]_]+/) tags[t++] = toupper($n);
t=0; for (n = 1; n <= NF; n++) if ($n !~ /![[:alnum:]_]+/) words[t++] = tolower($n);
for (t in tags) { sub(/^#/, "", tags[t]); printf "%s ", tags[t]; } print "";
for (t in ntags) { sub(/^!/, "", ntags[t]); printf "%s ", ntags[t]; } print "";
- for (t in words) { sub(/^[!#]/, "", words[t]); printf "%s ", words[t]; } print "";
+ for (t in words) { gsub(/[!#_ ]+/, " ", words[t]); printf "%s ", words[t]; } print "";
}
')
EOF