### vim:ft=zsh:foldmethod=marker ## wikipedia backend for lookup ## Copyright: 2009, Frank Terbeck LOOKUP_guard || return 1 [[ -n ${lookup_describe} ]] && printf '%s' 'search wikipedia' && return 0 local lookup_context local -a comp_args private_completions local -A known_locations lookup_context="$(LOOKUP_context)" known_locations=( # yeah, there are more... a lot more. ca 'Catalan' cs 'Czech' da 'Danish' de 'German' en 'English' eo 'Esperanto' es 'Spanish' 'fi' 'Finnish' fr 'French' hu 'Hungarian' it 'Italian' ja 'Japanese' nl 'Dutch' no 'Norwegian' pt 'Portuguese' pl 'Polish' ro 'Romanian' ru 'Russian' sk 'Slovenian' sv 'Swedish' tr 'Turkish' uk 'Ukrainian' ) LOOKUP_guard -fd LOOKUP_help_${backend} || function LOOKUP_help_${backend}() { LOOKUP_guard || return 1 local l printf 'usage: %s [-l ] \n' ${backend} printf ' -l use a specific non-default wikipedia location\n' printf '\n Query wikipedia.org about stuff you don'\''t know. :-)\n' printf '\nKnown location codes:\n' for l in ${(kon)known_locations}; do printf '%6s - %s\n' $l ${known_locations[$l]} done printf '\n There are more than that, obviously. Inclusion of codes had to stop\n' printf ' somewhere, so I settled for codes, that had 100.000+ articles at the time\n' printf ' of writing. The default location is '\''en'\'', which can be modified via the\n' printf ' '\''default-location'\'' style in this context:\n' printf ' %s\n' ${lookup_context} printf '\n The completion code only completes the known locations by default. If your\n' printf ' code is missing you can add it via the '\''my-completions'\'' list style,\n' printf ' looked up in this context: '\'':completion:*:lookup-%s:'\''\n' ${backend} printf '\nExamples:\n' printf ' %% zstyle '\'':lookup:*:%s:*'\'' default-location de\n' ${backend} printf ' %% zstyle '\'':completion:*:lookup-%s:'\'' my-completions gr:Greek\n' ${backend} printf ' %% lookup %s zsh\n' ${backend} printf ' %% lookup %s -l de zsh\n' ${backend} printf ' %% lookup %s -l no zsh\n\n' ${backend} } LOOKUP_help && return 0 if [[ -n ${lookup_complete} ]] ; then zstyle -a ":completion:${curcontext}" my-completions private_completions LOOKUP_guard -fd __lookup_${backend}_known_locations || function __lookup_${backend}_known_locations() { local l local -a ls ls=(${private_completions}) for l in ${(k)known_locations}; do ls+=("$l:${known_locations[$l]}") done _describe -t leo_langs 'known locations' ls } comp_args=( '-l[choose a wikipedia flavour]:known locations:__lookup_'${backend}'_known_locations' '*:wikipedia search:true' ) _arguments -s -w -A '-*' ${comp_args} && return 0 _message 'wikipedia search' return 0 fi local loc local -A opts local -x QUERY zstyle -s "${lookup_context}" default-location loc || loc='en' lu_parseopts_args=( l string ) LOOKUP_parseopts "$@" || return 1 [[ -n ${opts[-l]} ]] && loc="${opts[-l]}" QUERY="${args[*]}" LOOKUP_query_handler || return 1 if [[ -z ${QUERY} ]] ; then LOOKUP_help -f return 1 fi LOOKUP_encode -q LOOKUP_browser "http://${loc}.wikipedia.org/w/wiki.phtml?search=${QUERY}&go=Go" return $?