X-Git-Url: https://git.plutz.net/?a=blobdiff_plain;f=handlers%2F40_search.sh;h=c9bc62738c985f8db46b8a4326f5eac018c08613;hb=e16cbbded1805c1cd2256b7679bd299dc4746579;hp=c558f5394b9cd01b8a86063d69a291de094b7fbc;hpb=0befccc1274549229b77d50c1b8b24d6c4cf5403;p=shellwiki diff --git a/handlers/40_search.sh b/handlers/40_search.sh index c558f53..c9bc627 100644 --- a/handlers/40_search.sh +++ b/handlers/40_search.sh @@ -5,9 +5,15 @@ . "$_EXEC/cgilite/storage.sh" I="$_DATA/index" -words="$( GET q | sed -E ' - :X $bY; N; bX; :Y - s;([] \t\n\r!\"#'\''()*+,./:;<=>?\\^_`{|}~[-]|%[1-9A-Fa-f]{2})+; ;g +words="$( GET q | 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]')"')+"; + else # UTF-8 Hack + FS = "([] \t\n\r!\"#'\''()*+,./:;<=>?\\^_`{|}~[-]|%[0-9A-Fa-f]{2}|'"$(printf '\342\200[\200-\277]|\342\201[\201-\257]')"')+"; + fi + } + { for (n = 1; n <= NF; n++) printf "%s ", $n; } ')" for w in ${words}; do