summaryrefslogtreecommitdiff
path: root/plugins/frontend-search
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/frontend-search')
-rw-r--r--plugins/frontend-search/README.md65
-rw-r--r--plugins/frontend-search/_frontend-search.sh132
-rw-r--r--plugins/frontend-search/frontend-search.plugin.zsh91
3 files changed, 288 insertions, 0 deletions
diff --git a/plugins/frontend-search/README.md b/plugins/frontend-search/README.md
new file mode 100644
index 000000000..d0bc5589f
--- /dev/null
+++ b/plugins/frontend-search/README.md
@@ -0,0 +1,65 @@
+## Introduction ##
+
+> Searches for your frontend web development made easier
+
+
+## Installation ##
+
+Open your `~/.zshrc` file and enable the `frontend-search` plugin:
+
+```zsh
+
+plugins=( ... frontend-search)
+
+```
+
+
+## Usage ##
+
+You can use the frontend-search plugin in these two forms:
+
+* `frontend <context> <term> [more terms if you want]`
+* `<context> <term> [more terms if you want]`
+
+For example, these two are equivalent:
+
+```zsh
+$ frontend angularjs dependency injection
+$ angularjs dependency injection
+```
+
+Available search contexts are:
+
+| context | URL |
+|---------------|--------------------------------------------------------------------------|
+| angularjs | `https://google.com/search?as_sitesearch=angularjs.org&as_q=` |
+| aurajs | `http://aurajs.com/api/#stq=` |
+| bem | `https://google.com/search?as_sitesearch=bem.info&as_q=` |
+| bootsnipp | `http://bootsnipp.com/search?q=` |
+| caniuse | `http://caniuse.com/#search=` |
+| codepen | `http://codepen.io/search?q=` |
+| compass | `http://compass-style.org/search?q=` |
+| cssflow | `http://www.cssflow.com/search?q=` |
+| dartlang | `https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/dart:` |
+| emberjs | `http://emberjs.com/api/#stp=1&stq=` |
+| fontello | `http://fontello.com/#search=` |
+| html5please | `http://html5please.com/#` |
+| jquery | `https://api.jquery.com/?s=` |
+| lodash | `https://devdocs.io/lodash/index#` |
+| mdn | `https://developer.mozilla.org/search?q=` |
+| npmjs | `https://www.npmjs.com/search?q=` |
+| qunit | `https://api.qunitjs.com/?s=` |
+| reactjs | `https://google.com/search?as_sitesearch=facebook.github.io/react&as_q=` |
+| smacss | `https://google.com/search?as_sitesearch=smacss.com&as_q=` |
+| stackoverflow | `http://stackoverflow.com/search?q=` |
+| unheap | `http://www.unheap.com/?s=` |
+
+If you want to have another context, open an Issue and tell us!
+
+
+## Author
+
+**Wilson Mendes (willmendesneto)**
++ <https://plus.google.com/+WilsonMendes>
++ <https://twitter.com/willmendesneto>
++ <http://github.com/willmendesneto>
diff --git a/plugins/frontend-search/_frontend-search.sh b/plugins/frontend-search/_frontend-search.sh
new file mode 100644
index 000000000..b12f829a1
--- /dev/null
+++ b/plugins/frontend-search/_frontend-search.sh
@@ -0,0 +1,132 @@
+#compdef frontend
+
+zstyle ':completion:*:descriptions' format '%B%d%b'
+zstyle ':completion::complete:frontend:*:commands' group-name commands
+zstyle ':completion::complete:frontend:*:frontend_points' group-name frontend_points
+zstyle ':completion::complete:frontend::' list-grouped
+
+zmodload zsh/mapfile
+
+function _frontend() {
+ local CONFIG=$HOME/.frontend-search
+ local ret=1
+
+ local -a commands
+ local -a frontend_points
+
+ frontend_points=( "${(f)mapfile[$CONFIG]//$HOME/~}" )
+
+ commands=(
+ 'jquery: Search in jQuery website'
+ 'mdn: Search in MDN website'
+ 'compass: Search in COMPASS website'
+ 'html5please: Search in HTML5 Please website'
+ 'caniuse: Search in Can I Use website'
+ 'aurajs: Search in AuraJs website'
+ 'dartlang: Search in Dart website'
+ 'lodash: Search in Lo-Dash website'
+ 'qunit: Search in Qunit website'
+ 'fontello: Search in fontello website'
+ 'bootsnipp: Search in bootsnipp website'
+ 'cssflow: Search in cssflow website'
+ 'codepen: Search in codepen website'
+ 'unheap: Search in unheap website'
+ 'bem: Search in BEM website'
+ 'smacss: Search in SMACSS website'
+ 'angularjs: Search in Angular website'
+ 'reactjs: Search in React website'
+ 'emberjs: Search in Ember website'
+ 'stackoverflow: Search in StackOverflow website'
+ 'npmjs: Search in NPMJS website'
+ )
+
+ _arguments -C \
+ '1: :->first_arg' \
+ '2: :->second_arg' && ret=0
+
+ case $state in
+ first_arg)
+ _describe -t frontend_points "Warp points" frontend_points && ret=0
+ _describe -t commands "Commands" commands && ret=0
+ ;;
+ second_arg)
+ case $words[2] in
+ jquery)
+ _describe -t points "Warp points" frontend_points && ret=0
+ ;;
+ mdn)
+ _describe -t points "Warp points" frontend_points && ret=0
+ ;;
+ compass)
+ _describe -t points "Warp points" frontend_points && ret=0
+ ;;
+ html5please)
+ _describe -t points "Warp points" frontend_points && ret=0
+ ;;
+ caniuse)
+ _describe -t points "Warp points" frontend_points && ret=0
+ ;;
+ aurajs)
+ _describe -t points "Warp points" frontend_points && ret=0
+ ;;
+ dartlang)
+ _describe -t points "Warp points" frontend_points && ret=0
+ ;;
+ lodash)
+ _describe -t points "Warp points" frontend_points && ret=0
+ ;;
+ qunit)
+ _describe -t points "Warp points" frontend_points && ret=0
+ ;;
+ fontello)
+ _describe -t points "Warp points" frontend_points && ret=0
+ ;;
+ bootsnipp)
+ _describe -t points "Warp points" frontend_points && ret=0
+ ;;
+ cssflow)
+ _describe -t points "Warp points" frontend_points && ret=0
+ ;;
+ codepen)
+ _describe -t points "Warp points" frontend_points && ret=0
+ ;;
+ unheap)
+ _describe -t points "Warp points" frontend_points && ret=0
+ ;;
+ bem)
+ _describe -t points "Warp points" frontend_points && ret=0
+ ;;
+ smacss)
+ _describe -t points "Warp points" frontend_points && ret=0
+ ;;
+ angularjs)
+ _describe -t points "Warp points" frontend_points && ret=0
+ ;;
+ reactjs)
+ _describe -t points "Warp points" frontend_points && ret=0
+ ;;
+ emberjs)
+ _describe -t points "Warp points" frontend_points && ret=0
+ ;;
+ stackoverflow)
+ _describe -t points "Warp points" frontend_points && ret=0
+ ;;
+ npmjs)
+ _describe -t points "Warp points" frontend_points && ret=0
+ ;;
+ esac
+ ;;
+ esac
+
+ return $ret
+}
+
+_frontend "$@"
+
+# Local Variables:
+# mode: Shell-Script
+# sh-indentation: 2
+# indent-tabs-mode: nil
+# sh-basic-offset: 2
+# End:
+# vim: ft=zsh sw=2 ts=2 et
diff --git a/plugins/frontend-search/frontend-search.plugin.zsh b/plugins/frontend-search/frontend-search.plugin.zsh
new file mode 100644
index 000000000..2fd5416b3
--- /dev/null
+++ b/plugins/frontend-search/frontend-search.plugin.zsh
@@ -0,0 +1,91 @@
+alias angularjs='frontend angularjs'
+alias aurajs='frontend aurajs'
+alias bem='frontend bem'
+alias bootsnipp='frontend bootsnipp'
+alias caniuse='frontend caniuse'
+alias codepen='frontend codepen'
+alias compass='frontend compass'
+alias cssflow='frontend cssflow'
+alias dartlang='frontend dartlang'
+alias emberjs='frontend emberjs'
+alias fontello='frontend fontello'
+alias html5please='frontend html5please'
+alias jquery='frontend jquery'
+alias lodash='frontend lodash'
+alias mdn='frontend mdn'
+alias npmjs='frontend npmjs'
+alias qunit='frontend qunit'
+alias reactjs='frontend reactjs'
+alias smacss='frontend smacss'
+alias stackoverflow='frontend stackoverflow'
+alias unheap='frontend unheap'
+
+function frontend() {
+ emulate -L zsh
+
+ # define search context URLS
+ typeset -A urls
+ urls=(
+ angularjs 'https://google.com/search?as_sitesearch=angularjs.org&as_q='
+ aurajs 'http://aurajs.com/api/#stq='
+ bem 'https://google.com/search?as_sitesearch=bem.info&as_q='
+ bootsnipp 'http://bootsnipp.com/search?q='
+ caniuse 'http://caniuse.com/#search='
+ codepen 'http://codepen.io/search?q='
+ compass 'http://compass-style.org/search?q='
+ cssflow 'http://www.cssflow.com/search?q='
+ dartlang 'https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/dart:'
+ emberjs 'http://emberjs.com/api/#stp=1&stq='
+ fontello 'http://fontello.com/#search='
+ html5please 'http://html5please.com/#'
+ jquery 'https://api.jquery.com/?s='
+ lodash 'https://devdocs.io/lodash/index#'
+ mdn 'https://developer.mozilla.org/search?q='
+ npmjs 'https://www.npmjs.com/search?q='
+ qunit 'https://api.qunitjs.com/?s='
+ reactjs 'https://google.com/search?as_sitesearch=facebook.github.io/react&as_q='
+ smacss 'https://google.com/search?as_sitesearch=smacss.com&as_q='
+ stackoverflow 'http://stackoverflow.com/search?q='
+ unheap 'http://www.unheap.com/?s='
+ )
+
+ # show help for command list
+ if [[ $# -lt 2 ]]
+ then
+ print -P "Usage: frontend %Ucontext%u %Uterm%u [...%Umore%u] (or just: %Ucontext%u %Uterm%u [...%Umore%u])"
+ print -P ""
+ print -P "%Uterm%u and what follows is what will be searched for in the %Ucontext%u website,"
+ print -P "and %Ucontext%u is one of the following:"
+ print -P ""
+ print -P " angularjs, aurajs, bem, bootsnipp, caniuse, codepen, compass, cssflow,"
+ print -P " dartlang, emberjs, fontello, html5please, jquery, lodash, mdn, npmjs,"
+ print -P " qunit, reactjs, smacss, stackoverflow, unheap"
+ print -P ""
+ print -P "For example: frontend npmjs mocha (or just: npmjs mocha)."
+ print -P ""
+ return 1
+ fi
+
+ # check whether the search context is supported
+ if [[ -z "$urls[$1]" ]]
+ then
+ echo "Search context \"$1\" currently not supported."
+ echo ""
+ echo "Valid contexts are:"
+ echo ""
+ echo " angularjs, aurajs, bem, bootsnipp, caniuse, codepen, compass, cssflow, "
+ echo " dartlang, emberjs, fontello, html5please, jquery, lodash, mdn, npmjs, "
+ echo " qunit, reactjs, smacss, stackoverflow, unheap"
+ echo ""
+ return 1
+ fi
+
+ # build search url:
+ # join arguments passed with '+', then append to search context URL
+ # TODO substitute for proper urlencode method
+ url="${urls[$1]}${(j:+:)@[2,-1]}"
+
+ echo "Opening $url ..."
+
+ open_command "$url"
+}