Emojify message (#65)
This commit is contained in:
committed by
Tulir Asokan
parent
cf3f3e51d1
commit
68db26bcac
2
vendor/github.com/kyokomi/emoji/.gitignore
generated
vendored
Normal file
2
vendor/github.com/kyokomi/emoji/.gitignore
generated
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
.idea
|
||||
emoji.iml
|
21
vendor/github.com/kyokomi/emoji/LICENSE
generated
vendored
Normal file
21
vendor/github.com/kyokomi/emoji/LICENSE
generated
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2014 kyokomi
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
53
vendor/github.com/kyokomi/emoji/README.md
generated
vendored
Normal file
53
vendor/github.com/kyokomi/emoji/README.md
generated
vendored
Normal file
@ -0,0 +1,53 @@
|
||||
# Emoji
|
||||
Emoji is a simple golang package.
|
||||
|
||||
[](https://app.wercker.com/project/byKey/7bef60de2c6d3e0e6c13d56b2393c5d8)
|
||||
[](https://coveralls.io/r/kyokomi/emoji?branch=master)
|
||||
[](https://godoc.org/github.com/kyokomi/emoji)
|
||||
|
||||
Get it:
|
||||
|
||||
```
|
||||
go get gopkg.in/kyokomi/emoji.v1
|
||||
```
|
||||
|
||||
Import it:
|
||||
|
||||
```
|
||||
import (
|
||||
"gopkg.in/kyokomi/emoji.v1"
|
||||
)
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
```go
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/kyokomi/emoji"
|
||||
)
|
||||
|
||||
func main() {
|
||||
fmt.Println("Hello World Emoji!")
|
||||
|
||||
emoji.Println(":beer: Beer!!!")
|
||||
|
||||
pizzaMessage := emoji.Sprint("I like a :pizza: and :sushi:!!")
|
||||
fmt.Println(pizzaMessage)
|
||||
}
|
||||
```
|
||||
|
||||
## Demo
|
||||
|
||||

|
||||
|
||||
## Reference
|
||||
|
||||
- [GitHub EMOJI CHEAT SHEET](http://www.emoji-cheat-sheet.com/)
|
||||
|
||||
## License
|
||||
|
||||
[MIT](https://github.com/kyokomi/emoji/blob/master/LICENSE)
|
153
vendor/github.com/kyokomi/emoji/emoji.go
generated
vendored
Normal file
153
vendor/github.com/kyokomi/emoji/emoji.go
generated
vendored
Normal file
@ -0,0 +1,153 @@
|
||||
// Package emoji terminal output.
|
||||
package emoji
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"regexp"
|
||||
"unicode"
|
||||
)
|
||||
|
||||
//go:generate generateEmojiCodeMap -pkg emoji
|
||||
|
||||
// Replace Padding character for emoji.
|
||||
const (
|
||||
ReplacePadding = " "
|
||||
)
|
||||
|
||||
// CodeMap gets the underlying map of emoji.
|
||||
func CodeMap() map[string]string {
|
||||
return emojiCodeMap
|
||||
}
|
||||
|
||||
// regular expression that matches :flag-[countrycode]:
|
||||
var flagRegexp = regexp.MustCompile(":flag-([a-z]{2}):")
|
||||
|
||||
func emojize(x string) string {
|
||||
str, ok := emojiCodeMap[x]
|
||||
if ok {
|
||||
return str + ReplacePadding
|
||||
}
|
||||
if match := flagRegexp.FindStringSubmatch(x); len(match) == 2 {
|
||||
return regionalIndicator(match[1][0]) + regionalIndicator(match[1][1])
|
||||
}
|
||||
return x
|
||||
}
|
||||
|
||||
// regionalIndicator maps a lowercase letter to a unicode regional indicator
|
||||
func regionalIndicator(i byte) string {
|
||||
return string('\U0001F1E6' + rune(i) - 'a')
|
||||
}
|
||||
|
||||
func replaseEmoji(input *bytes.Buffer) string {
|
||||
emoji := bytes.NewBufferString(":")
|
||||
for {
|
||||
i, _, err := input.ReadRune()
|
||||
if err != nil {
|
||||
// not replase
|
||||
return emoji.String()
|
||||
}
|
||||
|
||||
if i == ':' && emoji.Len() == 1 {
|
||||
return emoji.String() + replaseEmoji(input)
|
||||
}
|
||||
|
||||
emoji.WriteRune(i)
|
||||
switch {
|
||||
case unicode.IsSpace(i):
|
||||
return emoji.String()
|
||||
case i == ':':
|
||||
return emojize(emoji.String())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func compile(x string) string {
|
||||
if x == "" {
|
||||
return ""
|
||||
}
|
||||
|
||||
input := bytes.NewBufferString(x)
|
||||
output := bytes.NewBufferString("")
|
||||
|
||||
for {
|
||||
i, _, err := input.ReadRune()
|
||||
if err != nil {
|
||||
break
|
||||
}
|
||||
switch i {
|
||||
default:
|
||||
output.WriteRune(i)
|
||||
case ':':
|
||||
output.WriteString(replaseEmoji(input))
|
||||
}
|
||||
}
|
||||
return output.String()
|
||||
}
|
||||
|
||||
func compileValues(a *[]interface{}) {
|
||||
for i, x := range *a {
|
||||
if str, ok := x.(string); ok {
|
||||
(*a)[i] = compile(str)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Print is fmt.Print which supports emoji
|
||||
func Print(a ...interface{}) (int, error) {
|
||||
compileValues(&a)
|
||||
return fmt.Print(a...)
|
||||
}
|
||||
|
||||
// Println is fmt.Println which supports emoji
|
||||
func Println(a ...interface{}) (int, error) {
|
||||
compileValues(&a)
|
||||
return fmt.Println(a...)
|
||||
}
|
||||
|
||||
// Printf is fmt.Printf which supports emoji
|
||||
func Printf(format string, a ...interface{}) (int, error) {
|
||||
format = compile(format)
|
||||
compileValues(&a)
|
||||
return fmt.Printf(format, a...)
|
||||
}
|
||||
|
||||
// Fprint is fmt.Fprint which supports emoji
|
||||
func Fprint(w io.Writer, a ...interface{}) (int, error) {
|
||||
compileValues(&a)
|
||||
return fmt.Fprint(w, a...)
|
||||
}
|
||||
|
||||
// Fprintln is fmt.Fprintln which supports emoji
|
||||
func Fprintln(w io.Writer, a ...interface{}) (int, error) {
|
||||
compileValues(&a)
|
||||
return fmt.Fprintln(w, a...)
|
||||
}
|
||||
|
||||
// Fprintf is fmt.Fprintf which supports emoji
|
||||
func Fprintf(w io.Writer, format string, a ...interface{}) (int, error) {
|
||||
format = compile(format)
|
||||
compileValues(&a)
|
||||
return fmt.Fprintf(w, format, a...)
|
||||
}
|
||||
|
||||
// Sprint is fmt.Sprint which supports emoji
|
||||
func Sprint(a ...interface{}) string {
|
||||
compileValues(&a)
|
||||
return fmt.Sprint(a...)
|
||||
}
|
||||
|
||||
// Sprintf is fmt.Sprintf which supports emoji
|
||||
func Sprintf(format string, a ...interface{}) string {
|
||||
format = compile(format)
|
||||
compileValues(&a)
|
||||
return fmt.Sprintf(format, a...)
|
||||
}
|
||||
|
||||
// Errorf is fmt.Errorf which supports emoji
|
||||
func Errorf(format string, a ...interface{}) error {
|
||||
compileValues(&a)
|
||||
return errors.New(Sprintf(format, a...))
|
||||
}
|
1517
vendor/github.com/kyokomi/emoji/emoji_codemap.go
generated
vendored
Normal file
1517
vendor/github.com/kyokomi/emoji/emoji_codemap.go
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
25
vendor/github.com/kyokomi/emoji/wercker.yml
generated
vendored
Normal file
25
vendor/github.com/kyokomi/emoji/wercker.yml
generated
vendored
Normal file
@ -0,0 +1,25 @@
|
||||
box: golang
|
||||
build:
|
||||
steps:
|
||||
- setup-go-workspace
|
||||
- script:
|
||||
name: install goveralls
|
||||
code: |
|
||||
go get github.com/mattn/goveralls
|
||||
- script:
|
||||
name: go get
|
||||
code: |
|
||||
go get
|
||||
- script:
|
||||
name: go build
|
||||
code: |
|
||||
go build ./...
|
||||
- script:
|
||||
name: go test
|
||||
code: |
|
||||
go test ./...
|
||||
- script:
|
||||
name: coveralls
|
||||
code: |
|
||||
goveralls -v -service wercker.com -repotoken $COVERALLS_TOKEN
|
||||
|
Reference in New Issue
Block a user