added -a/--all, default to top entry

This commit is contained in:
Stephen McQuay 2015-01-24 02:19:03 -08:00
parent 0da80226c0
commit 6d59e99cd2

42
main.go
View File

@ -2,10 +2,10 @@ package main
import ( import (
"encoding/json" "encoding/json"
"flag"
"fmt" "fmt"
"go/doc" "go/doc"
"log" "log"
"math"
"net/http" "net/http"
"os" "os"
"sort" "sort"
@ -15,6 +15,13 @@ import (
const url = "http://api.urbandictionary.com/v0/define?term=" const url = "http://api.urbandictionary.com/v0/define?term="
const usage = "ud: confirm that the term you're thinking of has already been added to urban dictionary\n\nusage: ud <term>\n" const usage = "ud: confirm that the term you're thinking of has already been added to urban dictionary\n\nusage: ud <term>\n"
var all bool
func init() {
flag.BoolVar(&all, "all", false, "more than one")
flag.BoolVar(&all, "a", false, "more than one")
}
type response struct { type response struct {
Results []result `json:"list"` Results []result `json:"list"`
} }
@ -43,13 +50,13 @@ func (bv ByVotes) Less(i, j int) bool {
} }
func main() { func main() {
if len(os.Args) < 2 { flag.Parse()
if len(flag.Args()) < 1 {
fmt.Fprintf(os.Stderr, "%s\n", usage) fmt.Fprintf(os.Stderr, "%s\n", usage)
os.Exit(1) os.Exit(1)
} }
words := os.Args[1:] u := fmt.Sprintf("%s%s", url, strings.Join(flag.Args(), "+"))
u := fmt.Sprintf("%s%s", url, strings.Join(words, "+"))
resp, err := http.Get(u) resp, err := http.Get(u)
if err != nil { if err != nil {
@ -64,18 +71,29 @@ func main() {
sort.Sort(ByVotes(data.Results)) sort.Sort(ByVotes(data.Results))
if !all {
if len(data.Results) > 0 {
data.Results = data.Results[:1]
}
}
for i, res := range data.Results { for i, res := range data.Results {
if i > 0 {
fmt.Printf("\n\n")
}
if all {
fmt.Printf(
"Definition %d:\n",
i+1,
)
}
doc.ToText(os.Stdout, res.Definition, "", "", 80)
fmt.Printf( fmt.Printf(
"%d:\n", "\n\n Example:\n %s\n",
i, strings.Replace(res.Example, "\r\n", "\n ", -1),
)
doc.ToText(os.Stdout, res.Definition, "\t", "", 80)
fmt.Printf(
"\n\n\texample:\n\t%s\n",
strings.Replace(res.Example, "\r\n", "\n\t", -1),
) )
fmt.Printf( fmt.Printf(
"\n\t%s\n\t^ %d, v %d\n\t%s\n", "\nSource: %s\nUp: %d, Down: %d\nAuthor: %s\n",
res.Link, res.Link,
res.Up, res.Up,
res.Down, res.Down,