Centurion / .config / surfraw / elvi / stack

#!/bin/sh
# elvis: stack		-- Search Stack Overflow (http://stackoverflow.com)
# Author: jason ryan • http://jasonwryan.com

. surfraw || exit 1

w3_config_hook () {
def   SURFRAW_stack_categories  "$SURFRAW_categories"
def   SURFRAW_stack_unix         0	
def   SURFRAW_stack_results      25	
}

w3_usage_hook () {
    cat <<EOF

Usage: $w3_argv0 [options] [search-string]
Description: 
	Search Stack Overflow (http://stackoverflow.com)
	Combine search terms (tags) with a "+" eg., "bash+script"

	Local options:
	-sort=CATEGORIES  | -s=CATEGORIES
	new    |   Most recently asked (default)
	feat   |   Questions with open bounties
	vote   |   Questions with most votes
	active |   Recently active
	null   |   No upvoted answers
	faq    |   Questions with the most links
	           Default: new

	-u     |   Search Unix & Linux Exchange
	           Default: no

	-num=NUMBER  |  Number of results per page
	                Default: $SURFRAW_stack_results

EOF
    w3_global_usage
}

w3_parse_option_hook () {
    opt="$1"
    optarg="$2"
    case "$opt" in
	-sort=*)    setopt   SURFRAW_stack_categories   $optarg ;;
	-s=*)       setopt   SURFRAW_stack_categories   $optarg ;;
	-num=*)     setopt   SURFRAW_stack_results      $optarg ;;
	-u)         setoptyn SURFRAW_stack_unix         1       ;;
	*) return 1 ;;
    esac
    return 0
}
w3_config
w3_parse_args "$@"
# w3_args now contains list of arguments
case "$SURFRAW_stack_categories" in
	new)    category="newest"     	;;
	feat)   category="featured"   	;;
	vote)   category="votes"      	;;
	active) category="active"     	;;
	null)   category="unanswered" 	;;
	faq)    category="faq"        	;;
	*)      category="newest"     	;;
esac

# Check for Unix & Linux Exchange
if [ "$SURFRAW_stack_unix" = 1 ]; then
	url="http://unix.stackexchange.com"
else
	url="http://stackoverflow.com"
fi

# No arguments passed
if [ -z "$w3_args" ]; then
    w3_browse_url "$url"
else
    escaped_args=$(w3_url_of_arg $w3_args)
	if [ -n "$SURFRAW_stack_categories" ]; then
	w3_browse_url "${url}/questions/tagged/${escaped_args}?sort=${category}&pagesize=${SURFRAW_stack_results}"
	else
	w3_browse_url "${url}/questions/tagged/${escaped_args}"
	fi
fi
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.