絵文字のためのライブラリ EmojiOne

作成/更新

EmojiOne とは

EmojiOne はオープンソースな絵文字ライブラリ. このように絵文字を表示させることができる (右). :smiley: (CMS 変更に際し、絵文字は表示されなくなりました。)

使い方

使い方は emojione/emojione が詳しい.

用意されている JSDeliver の CDN を使うと楽だ. 他にも NPM を使ったインストールもできる (ref: INSTALLATION.md).

<script src="https://cdn.jsdelivr.net/npm/emojione@3.1.2/lib/js/emojione.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/emojione@3.1.2/extras/css/emojione.min.css"/>

同レポジトリのディレクトリ /examples/ には, EmojiOne の使用例が記載されている. JavaScript であれば,

  • .shortnameToImage(str)
  • .toImage(str) :point_left:
  • .toShort(str)
  • .unicodeToImage(str)
  • .shortnameToUnicode(str)

の 5 つのメソッドが用意されている (ref: JAVASCRIPT.md).

メソッド .toImage(str)

5 つのメソッドのうち, ひとつだけ例を挙げる. メソッド .toImage(str) は, ショートコード (コロンで囲まれた文字列で EmojiOne の絵文字と対応するもの) や unicode 絵文字の含まれる文字列を受け取り, それらを EmojiOne の絵文字に変換する.

emojione.toImage('ピザ :pizza:');

上の例では文字列「ピザ :pizza:」が得られる.

#entry-content 内を対象に, 絵文字の変換を行いたい. ただし, code タグ内のショートコードは変換しない. これは, 次のように実装できる.

try {

    // #entry-content があるか.
    const entry_content = document.getElementById("entry-content");
    if (! entry_content)
        throw new Error("No DOM elements of #entry-content.");

    // #entry-content 内の code タグ内の ":" をエスケープする.
    const code_tags = entry_content.getElementsByTagName('code');
    for (let code of code_tags)
        code.innerHTML = code.innerHTML.replace(/:/g, '\\:');

    // #entry-content 全体を変換.
    entry_content.innerHTML = emojione.toImage(entry_content.innerHTML);

    // エスケープした code タグ内 ":" を元に戻す.
    for (let code of code_tags)
        code.innerHTML = code.innerHTML.replace(/\\:/g, ':');

} catch (e) {

    console.log(e.message);

}