### vim:ft=zsh:foldmethod=marker ## zsh mla search backend for lookup ## Copyright: 2009, Frank Terbeck LOOKUP_guard || return 1 [[ -n ${lookup_describe} ]] && printf '%s' 'search interface for zsh'\''s ML archive' && return 0 local lookup_context local -a comp_args lookup_context="$(LOOKUP_context)" LOOKUP_guard -fd LOOKUP_help_${backend} || function LOOKUP_help_${backend}() { LOOKUP_guard || return 1 printf 'usage: %s [-{n,u,w}] [-{l,y} ] \n' ${backend} printf ' -n search the archives for keywords ('\''normal'\'' mode)\n' printf ' -u search user archive by X-Seq: header\n' printf ' -w search workers archive by X-Seq: header\n' printf ' -l limit search to a specific list\n' printf ' -y limit search to a specific year\n' printf '\n Query zsh[1]'\''s Mailing List Arhive[2].' printf '\n The normal keyword search is done via google'\''s '\''site:'\'' feature.\n' printf ' In X-Seq modes (-u and -w), all non-digits are stripped from query.\n' printf '\n The default mode is '\''normal'\'', which can be modified via the\n' printf ' '\''default-mode'\'' style in this context: %s\n' ${lookup_context} printf ' Valid values are: normal, users, workers\n' printf '\nExamples:\n' printf ' %% zstyle '\'':lookup:*:%s:*'\'' default-mode users\n' ${backend} printf ' %% lookup %s released\n' ${backend} printf ' %% lookup %s -u 12345\n' ${backend} printf ' %% lookup %s -w 12345\n' ${backend} printf '\n[1] \n' printf '[2] \n' } LOOKUP_help && return 0 if [[ -n ${lookup_complete} ]] ; then comp_args=( '-u[users x-seq search]:users\: X-Seq header number:' '-w[workers x-seq search]:workers\: X-Seq header number:' '-l[limit search to a specific list]:list name:(users workers "*")' '-y[limit search to a specific year]:year - "*" means all years:' '*:zsh mla search:true' ) _arguments -s -w -A '-*' ${comp_args} && return 0 _message 'zsh mla search' return 0 fi local list year mode local -A opts local -x QUERY list='*' year='*' lu_parseopts_args=( n bool u bool w bool l string y string ) LOOKUP_parseopts "$@" || return 1 [[ ${opts[-u]} == 'yes' ]] && mode='users' [[ ${opts[-w]} == 'yes' ]] && mode='workers' [[ ${opts[-n]} == 'yes' ]] && mode='normal' [[ -n ${opts[-l]} ]] && list="${opts[-l]}" [[ -n ${opts[-y]} ]] && year="${opts[-y]}" if [[ -z ${mode} ]] ; then zstyle -s "${lookup_context}" default-mode mode || mode='normal' fi QUERY="${args[*]}" LOOKUP_query_handler || return 1 if [[ -z ${QUERY} ]] ; then LOOKUP_help -f return 1 fi case ${mode} in (users|workers) QUERY="${QUERY//[^0-9]/}" if [[ ${mode} == 'users' ]] ; then LOOKUP_browser "http://www.zsh.org/cgi-bin/mla/redirect?USERNUMBER=${QUERY}" return $? else LOOKUP_browser "http://www.zsh.org/cgi-bin/mla/redirect?WORKERNUMBER=${QUERY}" return $? fi ;; (*) LOOKUP_encode -s -q LOOKUP_browser "http://www.google.com/search?q=site:www.zsh.org/mla/${list}/${year}/+${QUERY}" return $? ;; esac