-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathmain.go
More file actions
57 lines (49 loc) · 1.24 KB
/
main.go
File metadata and controls
57 lines (49 loc) · 1.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package main
import (
"flag"
"os"
)
func main() {
emj := NewEmoji()
var list = flag.Bool("list", false, "List all known emoji")
var n = flag.Bool("n", false, "Supress newline")
var U = flag.Bool("U", false, "Print code point")
var o = flag.Bool("o", false, "Print octal escapes suitable for echo -e")
var O = flag.Bool("O", false, "Print octal escapes suitable for $PS1")
var x = flag.Bool("x", false, "Print hex escapes suitable for echo -e")
var e = flag.Bool("e", false, "work like echo, but interpolate \\e as escapes for emoji")
flag.Parse()
if *list {
emj.PrettyPrint(os.Stdout)
os.Exit(0)
}
var args = flag.Args()
if len(args) != 1 {
print("Usage: emo <descriptive-name>. Try emo --list for a list of known emoji. --help for help\n")
os.Exit(1)
}
var str string
var ok bool
if *U {
str, ok = emj.CpByName(args[0])
} else if *o {
str, ok = emj.OctStringByName(args[0], true)
} else if *O {
str, ok = emj.OctStringByName(args[0], false)
} else if *x {
str, ok = emj.HexStringByName(args[0])
} else if *e {
str, ok = emj.InterpolateString(args[0])
} else {
str, ok = emj.StringByName(args[0])
}
if ok {
if *n == false {
str += "\n"
}
os.Stdout.Write([]byte(str))
os.Exit(0)
} else {
os.Exit(2)
}
}