summaryrefslogtreecommitdiff
path: root/plugins/web-search/web-search.plugin.zsh
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/web-search/web-search.plugin.zsh')
-rw-r--r--plugins/web-search/web-search.plugin.zsh61
1 files changed, 33 insertions, 28 deletions
diff --git a/plugins/web-search/web-search.plugin.zsh b/plugins/web-search/web-search.plugin.zsh
index 28559deb9..572427b0b 100644
--- a/plugins/web-search/web-search.plugin.zsh
+++ b/plugins/web-search/web-search.plugin.zsh
@@ -1,43 +1,46 @@
# web_search from terminal
function web_search() {
- # get the open command
- local open_cmd
- if [[ "$OSTYPE" = darwin* ]]; then
- open_cmd='open'
- else
- open_cmd='xdg-open'
- fi
+ emulate -L zsh
+
+ # define search engine URLS
+ typeset -A urls
+ urls=(
+ google "https://www.google.com/search?q="
+ bing "https://www.bing.com/search?q="
+ yahoo "https://search.yahoo.com/search?p="
+ duckduckgo "https://www.duckduckgo.com/?q="
+ yandex "https://yandex.ru/yandsearch?text="
+ )
+
+ # define the open command
+ case "$OSTYPE" in
+ darwin*) open_cmd="open" ;;
+ cygwin*) open_cmd="cygstart" ;;
+ linux*) open_cmd="xdg-open" ;;
+ *) echo "Platform $OSTYPE not supported"
+ return 1
+ ;;
+ esac
# check whether the search engine is supported
- if [[ ! $1 =~ '(google|bing|yahoo|duckduckgo)' ]];
- then
+ if [[ -z "$urls[$1]" ]]; then
echo "Search engine $1 not supported."
return 1
fi
- local url="http://www.$1.com"
-
- # no keyword provided, simply open the search engine homepage
- if [[ $# -le 1 ]]; then
- $open_cmd "$url"
- return
- fi
- if [[ $1 == 'duckduckgo' ]]; then
- #slightly different search syntax for DDG
- url="${url}/?q="
+ # search or go to main page depending on number of arguments passed
+ if [[ $# -gt 1 ]]; then
+ # build search url:
+ # join arguments passed with '+', then append to search engine URL
+ url="${urls[$1]}${(j:+:)@[2,-1]}"
else
- url="${url}/search?q="
+ # build main page url:
+ # split by '/', then rejoin protocol (1) and domain (2) parts with '//'
+ url="${(j://:)${(s:/:)urls[$1]}[1,2]}"
fi
- shift # shift out $1
-
- while [[ $# -gt 0 ]]; do
- url="${url}$1+"
- shift
- done
- url="${url%?}" # remove the last '+'
- nohup $open_cmd "$url" >/dev/null 2&>1
+ nohup $open_cmd "$url" &>/dev/null
}
@@ -45,6 +48,8 @@ alias bing='web_search bing'
alias google='web_search google'
alias yahoo='web_search yahoo'
alias ddg='web_search duckduckgo'
+alias yandex='web_search yandex'
+
#add your own !bang searches here
alias wiki='web_search duckduckgo \!w'
alias news='web_search duckduckgo \!n'