emojisum/emoji
Vincent Batts 6bb1d12c09
go: bah, golang and nested modules
this aspect of golang modules is a mess. You can not have a top-level
`package main` that has its own go.mod, and then also export a
sub-directory that has its own go.mod for cleaner dependency imports by
outside importers.

So by removing this, you're subject to the top-level go.mod of the
project. Otherwise the top-level main.go needs to be moved to a nested
./cmd/emojisum/ directory, which is a break for any packagers. 😵

Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
2021-11-23 11:24:31 -05:00
..
Makefile emoji: fix the template output for markdown 2017-02-07 14:09:07 -05:00
README.md remove pointer references 2019-11-02 08:44:48 -04:00
emojimap.json emoji: use the "cute" airplane first 2021-11-23 11:08:14 -05:00
list.md emoji: forgot to regen the files after airplane 2021-11-23 11:10:02 -05:00
map.go emoji: adding a helper to parse a hex string into codepoint 2018-10-22 15:19:50 +01:00
map_gen.go emoji: forgot to regen the files after airplane 2021-11-23 11:10:02 -05:00
map_json.go Use Go 1.17 go:build comment 2021-11-01 19:13:49 -07:00

README.md

Emoji Working Group

Category: Informational

emoji checksum mapping

Status of This Document

This document provides information for the community. This document does not specify a standard of any kind. It is open to suggestions and discussion for improvements. This document is presently a draft and will apply versioning of the documents as needed. Distribution of this document is unlimited.

Notices

Permission is granted to copy and distribute this document for any purpose and without charge, including translations into other languages and incorporation into compilations, provided that the copyright notice and this notice are preserved, and that any substantive changes or deletions from the original are clearly marked.

The latest version of the canonical JSON is the URL: https://raw.githubusercontent.com/emojisum/emojisum/master/emoji/emojimap.json The latest version of this spec the URL: https://github.com/emojisum/emojisum/blob/master/emoji/README.md Related documentation in can be found at the URL: github.com/emojisum/emojisum

Abstract

This document specifies a practice of mapping an 8bit byte to one of a corresponding list of 256 emoji strings.

The emojimap.json JSON is the authority of ordering. There is a generated visualiztion of this JSON document at list.md. While this directory contains golang source that is is importable by golang projects, other languages can fetch the ordered list of the JSON document and do their own emojisum comparison or rendering.

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119.

Introduction

Purpose

The purpose of this practice is provide simplified way to convey checksums for visual comparison.

Intended Audience

This is intended for use by implementors of software to convey checksums or validate conveyed checksums or unique fingerprints.

Details

By operating on an 8bit byte, this provides the oportunity for 256 permutations. Most checksums convey in a hexadecimal notation, there showing a par of case-insensitive hexadecimal characters per byte (16*16 = 256). Having a mapping of 256 emojis this thereby reduces the number of characters (or emojis) needed to convey the checksum. In example, a SHA1 checksum is 40 hexadecimal characters long, whereas an SHA1-emojisum is only 20 emojis.

The emojimap

In the common document emojimap.json there is an ordered list of arrays. Each array contains a set of strings that are either a human readable word or the human readable unicode point. For example, byte 0xe8 (position 232) is [":nauseated_face:", "U+1F922"].

For more complex and visually similar emoji there are times that the unicode is a combination. This is the case for flags and people. For example, byte 0xd9 (position 217) includes :surfer:, U+1F3C4, and U+1F3C4U+200DU+2642U+FEOF. When there is a combination, implementations MUST split on the "U+".

References