๐Ÿ™ ๐Ÿ“Ž Emoji that checksum! ๐ŸŽ‰ ๐Ÿ’ฉ
Switch branches/tags
Nothing to show
Clone or download
vbatts Merge pull request #31 from emojisum/travis
travis: cleanup and work-around golint
Latest commit 31734a1 Nov 15, 2018
Permalink
Failed to load latest commit information.
emoji
.gitignore Initial commit Dec 2, 2016
.travis.yml travis: cleanup and work-around golint Nov 15, 2018
LICENSE Initial commit Dec 2, 2016
README.md emoji: update spec for combination unicode Oct 16, 2018
main.go main: shorten the parse flag Jan 27, 2018

README.md

emojisum

Build Status

๐Ÿ™ ๐Ÿ“Ž Emoji that checksum! ๐ŸŽ‰ ๐Ÿ’ฉ

A curated list of 256 emojis that are not entirely similar. Using http://www.webpagefx.com/tools/emoji-cheat-sheet/ and http://www.unicode.org/emoji/charts/full-emoji-list.html to compare them. With 256 as that is 8bit/1byte, and the hexadecimal output that is 2 hex characters.

So 2 hex positions are 1 emoji! Would you rather compare 60 hexadecimal characters or only 30 emoji?! ๐Ÿ˜บ

Specification

For information on the draft for broader practice, see the draft. Perma-URL:

Tool

build

go get github.com/emojisum/emojisum

usage

This uses github.com/kyokomi/emoji to print to the console, but also gives the string ouptut for easy pasting to github/markdown.

$> emojisum main.go 
SHA1(main.go)=  14b09535217ca8f5f47f4665e2266e686f0728b4
SHA1(main.go)=  :bird::red_car::on::crystal_ball::calendar::lemon::pray::warning::violin::lollipop::facepunch::hearts::tm::children_crossing::hourglass::heavy_plus_sign::house::ant::clap::rocket:
SHA1(main.go)=  ๐Ÿฆ ๐Ÿš— ๐Ÿ”› ๐Ÿ”ฎ ๐Ÿ“† ๐Ÿ‹ ๐Ÿ™ โš ๏ธ๐ŸŽป ๐Ÿญ ๐Ÿ‘Š โ™ฅ๏ธโ„ข๏ธ๐Ÿšธ โŒ›๏ธโž• ๐Ÿ  ๐Ÿœ ๐Ÿ‘ ๐Ÿš€ 

Like so!

SHA1(main.go)= ๐Ÿฆ๐Ÿš—๐Ÿ”›๐Ÿ”ฎ๐Ÿ“†๐Ÿ‹๐Ÿ™โš ๏ธ๐ŸŽป๐Ÿญ๐Ÿ‘Šโ™ฅ๏ธโ„ข๏ธ๐ŸšธโŒ›๏ธโž•๐Ÿ ๐Ÿœ๐Ÿ‘๐Ÿš€

pass in the checksums

Rather than relying on this simple tool to do the checksum itself, you will likely want to rely on OpenSSL or coreutils for checksumming. emojisum can just take those formats on stdin:

$> sha1sum main.go | emojisum -pg
7656835947b4c6da272023c56b6f2529511bf88b  main.go
:jp::gb::metal::goat::family::rocket::smiley_cat::swimmer::chocolate_bar::cactus::candy::smile::honeybee::house::cherries::cloud::fries::bow::wavy_dash::musical_score:  main.go
๐Ÿ‡ฏ๐Ÿ‡ต ๐Ÿ‡ฌ๐Ÿ‡ง ๐Ÿค˜ ๐Ÿ ๐Ÿ‘ช ๐Ÿš€ ๐Ÿ˜บ ๐ŸŠ ๐Ÿซ ๐ŸŒต ๐Ÿฌ ๐Ÿ˜„ ๐Ÿ ๐Ÿ  ๐Ÿ’ โ˜๏ธ๐ŸŸ ๐Ÿ™‡ ใ€ฐ๏ธ ๐ŸŽผ   main.go

Like so:

๐Ÿ‡ฏ๐Ÿ‡ต ๐Ÿ‡ฌ๐Ÿ‡ง ๐Ÿค˜ ๐Ÿ ๐Ÿ‘ช ๐Ÿš€ ๐Ÿ˜บ ๐ŸŠ ๐Ÿซ ๐ŸŒต ๐Ÿฌ ๐Ÿ˜„ ๐Ÿ ๐Ÿ  ๐Ÿ’ โ˜๏ธ๐ŸŸ ๐Ÿ™‡ ใ€ฐ๏ธ ๐ŸŽผ main.go

$> openssl sha1 main.go |emojisum -pb
SHA1(main.go)= 7656835947b4c6da272023c56b6f2529511bf88b
SHA1(main.go)= :jp::gb::metal::goat::family::rocket::smiley_cat::swimmer::chocolate_bar::cactus::candy::smile::honeybee::house::cherries::cloud::fries::bow::wavy_dash::musical_score:
SHA1(main.go)= ๐Ÿ‡ฏ๐Ÿ‡ต ๐Ÿ‡ฌ๐Ÿ‡ง ๐Ÿค˜ ๐Ÿ ๐Ÿ‘ช ๐Ÿš€ ๐Ÿ˜บ ๐ŸŠ ๐Ÿซ ๐ŸŒต ๐Ÿฌ ๐Ÿ˜„ ๐Ÿ ๐Ÿ  ๐Ÿ’ โ˜๏ธ๐ŸŸ ๐Ÿ™‡ ใ€ฐ๏ธ ๐ŸŽผ 

And like so:

SHA1(main.go)= ๐Ÿ‡ฏ๐Ÿ‡ต ๐Ÿ‡ฌ๐Ÿ‡ง ๐Ÿค˜ ๐Ÿ ๐Ÿ‘ช ๐Ÿš€ ๐Ÿ˜บ ๐ŸŠ ๐Ÿซ ๐ŸŒต ๐Ÿฌ ๐Ÿ˜„ ๐Ÿ ๐Ÿ  ๐Ÿ’ โ˜๏ธ๐ŸŸ ๐Ÿ™‡ ใ€ฐ๏ธ ๐ŸŽผ

Library

Use the golang library to access the mapped emoji words:

package main

import (
  "fmt"

  "github.com/emojisum/emojisum/emoji"
)

func main() {
  for i := 0; i < 255; i++ {
    fmt.Printf("%d (%2.2x):\n", i, i)
    for _, word := range emoji.Map(byte(i)) {
      fmt.Printf("  - %s\n", emoji.CodepointToUnicode(word))
    }
  }
}