手を洗えない方のToilet紹介

~~...いや手を洗えないtoiletって色々あるとは思うのですが~~

今回は、文字列をASCII ARTに変換する`figlet`の派生プロジェクト、`toilet`の紹介を軽くしようと思います。
とか言って結構自分用メモ書きなところあるのでそれはご了承を...

---

# 1. Toiletとは

`toilet`は、 **文字列をASCII ARTに変換してくれる** ツールです。
AAに変換してくれると言っても、 `'cat'と与えたら猫のAAが出てくる`とかそういう夢のようなツールではありません。
単純に文字列を変換してくれます。

```bash
$ toilet "hello"

 #             ""#    ""#
 # mm    mmm     #      #     mmm
 #"  #  #"  #    #      #    #" "#
 #   #  #""""    #      #    #   #
 #   #  "#mm"    "mm    "mm  "#m#"
```

## Figletとの違い

  同じようなツールとして、`figlet`があります。
  結論から言ってしまうと、`Toilet`は`figlet`からの派生ツールにあたります。
  どうやら`figlet`では日本語が使えないのに対し、`toilet`は(平仮名/片仮名だけ)対応しているようです。

## [TIPS] 他のbanner系ツール

  他の有名なbanner系ツールといえば、そのまま`banner`コマンドがあります。
  しかし、これは与えられた文字列を縦向きに出力する為、`toilet`や`figlet`とはかなり違ったものになります
  ちなみに、`man banner`には以下の記述があります:

  > 出力は、適切な幅の紙に、ページ割りなしでプリントされる必要があります
  >
  >> The output should be printed on paper of the appropriate width, with no
  >> breaks between the pages.

  ...まあ、昔の印刷用のコマンドだったようですね。


# 2. インストール

  今回自分はmacユーザーなので、homebrewで仕入れました

  ```bash
  $ brew install toilet
  ```

  その他については調べてないし現状調べる気がありません(情報提供いただけるとありがたかったりします)


# 3. 使い方

  一番シンプルな使い方としては、文字列を渡すだけです

  ```bash
  $ toilet 'Qiita!!'

    mmmm    "      "      m             m      m
   m"  "m mmm    mmm    mm#mm   mmm     #      #
   #    #   #      #      #    "   #    #      #
   #    #   #      #      #    m"""#    "      "
    #mm#" mm#mm  mm#mm    "mm  "mm"#    #      #
       #
  ```

  ただし、ここからが`toilet`の真骨頂的なものです

## フォントを変える

  `toilet`には複数のフォントが同梱されています。
  フォントを指定するには、`-f`オプションを使います。

  ```bash
  $ toilet -f pagga 'Qiita!!'
  ░▄▀▄░▀█▀░▀█▀░▀█▀░█▀█░█░█
  ░█\█░░█░░░█░░░█░░█▀█░▀░▀
  ░░▀\░▀▀▀░▀▀▀░░▀░░▀░▀░▀░▀
  ```

  面白いねっ！！

  ...じゃなくって他のフォントについて気になりません？

### フォントの場所について

  `toilet`用のフォントたちは、標準でいくつかインストールされています。

  > フォントは`.flf`ファイルとして`/usr/share/figlet`ディレクトリに格納されています。
  >> Fonts are located in the same /usr/share/figlet directory as .flf files
  >>
  >> [source]: https://delightlylinux.wordpress.com/2015/11/13/colored-text-with-toilet/

  どうやら`/usr/share/figlet`にあるようですが、 **homebrew勢の場合は`/usr/local/Celler/toilet/<version>/share/figlet/`以下になる**ので注意が必要です。
  そこにあるファイルの拡張子を抜いた名前を入力してやれば使えます。
  フォントの見た目を全部載せようかとも思ったけど誰かやってくれてた気がするし、こういうのって探すのが楽しかったりするので載せないでおきます。
  お気に入りのフォントを見つけてね...


  <details><summary>と思ったけど一応載せておきます、観たい方はどうぞ</summary>  
  現状、初期状態でインストールされるフォントは以下の通りです
  ascii12 bigascii9 circle future mono9 smascii9 smmono12 ascii9 bigmono12 emboss letter pagga smblock smmono9 bigascii12 bigmono9 emboss2 mono12 smascii12 smbraille  wideterm

  全フォント試してみたければ、以下のスニペットをお使いください。

  ```bash
read -p "string?: " test_string
for font in ascii12 bigascii9 circle future mono9 smascii9 smmono12 ascii9 bigmono12 emboss letter pagga smblock smmono9 bigascii12 bigmono9 emboss2 mono12 smascii12 smbraille  wideterm;do
echo "$f"
toilet -w $(tput cols) -f $font "$test_string"
done
unset test_string
  ```

  以下は、`hello world`で試してみた例です

  ```
  
   mm    mm            mmmm      mmmm                                                        mmmm            mm
   ##    ##            ""##      ""##                                                        ""##            ##
   ##    ##   m####m     ##        ##       m####m            ##      ##  m####m    ##m####    ##       m###m##
   ########  ##mmmm##    ##        ##      ##"  "##           "#  ##  #" ##"  "##   ##"        ##      ##"  "##
   ##    ##  ##""""""    ##        ##      ##    ##            ##m##m##  ##    ##   ##         ##      ##    ##
   ##    ##  "##mmmm#    ##mmm     ##mmm   "##mm##"            "##  ##"  "##mm##"   ##         ##mmm   "##mm###
   ""    ""    """""      """"      """"     """"               ""  ""     """"     ""          """"     """ ""
  
  
  
  
                 ###    ###                                       ###        #
   #    #          #      #                                         #        #
   #    #          #      #                                         #        #
   #    #  ###     #      #     ###         #.    #  ###    #:##:   #     ## #
   #    #    :#    #      #    #   #         :   :# #   #   ##  #   #    #   #
   ###### #   #    #      #    #   #        .# # #: #   #   #       #    #   #
   #    # #####    #      #    #   #         #:#:#  #   #   #       #    #   #
   #    # #        #      #    #   #         #####  #   #   #       #    #   #
   #    #     #    #.     #.   #   #         :#:#:  #   #   #       #.   #   #
   #    #  ###:    :##    :##   ###           # #    ###    #       :##   ## #
  
  
  
  Ⓗⓔⓛⓛⓞ ⓦⓞⓡⓛⓓ
  ╻ ╻┏━╸╻  ╻  ┏━┓   ╻ ╻┏━┓┏━┓╻  ╺┳┓
  ┣━┫┣╸ ┃  ┃  ┃ ┃   ┃╻┃┃ ┃┣┳┛┃   ┃┃
  ╹ ╹┗━╸┗━╸┗━╸┗━┛   ┗┻┛┗━┛╹┗╸┗━╸╺┻┛
  
   ▄    ▄        ▀▀█    ▀▀█                                       ▀▀█        █
   █    █  ▄▄▄     █      █     ▄▄▄         ▄     ▄  ▄▄▄    ▄ ▄▄    █     ▄▄▄█
   █▄▄▄▄█ █▀  █    █      █    █▀ ▀█        ▀▄ ▄ ▄▀ █▀ ▀█   █▀  ▀   █    █▀ ▀█
   █    █ █▀▀▀▀    █      █    █   █         █▄█▄█  █   █   █       █    █   █
   █    █ ▀█▄▄▀    ▀▄▄    ▀▄▄  ▀█▄█▀          █ █   ▀█▄█▀   █       ▀▄▄  ▀█▄██
  
  
  
  .  ,    'T  'T                      'T    ]
  ]  [ m,  ]   ]   m,     ,  , m,  ,m  ]   md
  ]mm[]`]  ]   ]  ]`T     \..`]`T  P ` ]  ]`T
  ]  []""  ]   ]  ] ]     ]dd ] ]  [   ]  ] ]
  ]  ['b/  'm  'm 'bP      [[ 'bP  [   'm 'bW
  
  
  
  ▗▖ ▗▖     ▗▄▖  ▗▄▖                           ▗▄▖     ▗▖
  ▐▌ ▐▌     ▝▜▌  ▝▜▌                           ▝▜▌     ▐▌
  ▐▌ ▐▌ ▟█▙  ▐▌   ▐▌   ▟█▙      █   █ ▟█▙  █▟█▌ ▐▌   ▟█▟▌
  ▐███▌▐▙▄▟▌ ▐▌   ▐▌  ▐▛ ▜▌     ▜ █ ▛▐▛ ▜▌ █▘   ▐▌  ▐▛ ▜▌
  ▐▌ ▐▌▐▛▀▀▘ ▐▌   ▐▌  ▐▌ ▐▌     ▐▙█▟▌▐▌ ▐▌ █    ▐▌  ▐▌ ▐▌
  ▐▌ ▐▌▝█▄▄▌ ▐▙▄  ▐▙▄ ▝█▄█▘     ▝█ █▘▝█▄█▘ █    ▐▙▄ ▝█▄█▌
  ▝▘ ▝▘ ▝▀▀   ▀▀   ▀▀  ▝▀▘       ▀ ▀  ▝▀▘  ▀     ▀▀  ▝▀▝▘
  
  
  
   m    m        ""#    ""#                                       ""#        #
   #    #  mmm     #      #     mmm         m     m  mmm    m mm    #     mmm#
   #mmmm# #"  #    #      #    #" "#        "m m m" #" "#   #"  "   #    #" "#
   #    # #""""    #      #    #   #         #m#m#  #   #   #       #    #   #
   #    # "#mm"    "mm    "mm  "#m#"          # #   "#m#"   #       "mm  "#m##
  
  
  
  
  
   ██    ██            ████      ████                                                        ████            ██
   ██    ██            ████      ████                                                        ████            ██
   ██    ██              ██        ██                                                          ██            ██
   ██    ██   ░████▒     ██        ██       ░████░            ██      ██  ░████░    ██░████    ██       ▒███░██
   ██    ██  ░██████▒    ██        ██      ░██████░           ██░    ░██ ░██████░   ███████    ██      ▒███████
   ████████  ██▒  ▒██    ██        ██      ███  ███           ▓█▒ ██ ▒█▓ ███  ███   ███░       ██      ███  ███
   ████████  ████████    ██        ██      ██░  ░██           ▒█▒░██░▒█▒ ██░  ░██   ██         ██      ██░  ░██
   ██    ██  ████████    ██        ██      ██    ██            █▓▒██▒██  ██    ██   ██         ██      ██    ██
   ██    ██  ██          ██        ██      ██░  ░██            ██▓██▓██  ██░  ░██   ██         ██      ██░  ░██
   ██    ██  ███░  ▒█    ██▒       ██▒     ███  ███            ███▒▒██▓  ███  ███   ██         ██▒     ███  ███
   ██    ██  ░███████    █████     █████   ░██████░            ▒██░░██▒  ░██████░   ██         █████   ▒███████
   ██    ██   ░█████▒    ░████     ░████    ░████░             ░██  ██    ░████░    ██         ░████    ▒███░██
  
  
  
  
  ┃ ┃┏━┛┃  ┃  ┏━┃  ┃┃┃┏━┃┏━┃┃  ┏━
  ┏━┃┏━┛┃  ┃  ┃ ┃  ┃┃┃┃ ┃┏┏┛┃  ┃ ┃
  ┛ ┛━━┛━━┛━━┛━━┛  ━━┛━━┛┛ ┛━━┛━━
  H   H EEEEE L     L      OOO        W   W  OOO  RRRR  L     DDDD
  H   H E     L     L     O   O       W   W O   O R   R L     D   D
  HHHHH EEEE  L     L     O   O       W W W O   O RRRR  L     D   D
  H   H E     L     L     O   O       W W W O   O R  R  L     D   D
  H   H EEEEE LLLLL LLLLL  OOO         W W   OOO  R   R LLLLL DDDD
  
  ░█░█░█▀▀░█░░░█░░░█▀█░░░█░█░█▀█░█▀▄░█░░░█▀▄
  ░█▀█░█▀▀░█░░░█░░░█░█░░░█▄█░█░█░█▀▄░█░░░█░█
  ░▀░▀░▀▀▀░▀▀▀░▀▀▀░▀▀▀░░░▀░▀░▀▀▀░▀░▀░▀▀▀░▀▀░
  ▌ ▌   ▜▜               ▜   ▌
  ▙▄▌▞▀▖▐▐ ▞▀▖ ▌  ▌▞▀▖▙▀▖▐ ▞▀▌
  ▌ ▌▛▀ ▐▐ ▌ ▌ ▐▐▐ ▌ ▌▌  ▐ ▌ ▌
  ▘ ▘▝▀▘ ▘▘▝▀   ▘▘ ▝▀ ▘   ▘▝▀▘
  
  ▗  ▖    ▝▜  ▝▜                      ▝▜    ▐
  ▐  ▌ ▄▖  ▐   ▐   ▄▖     ▖  ▖ ▄▖  ▖▄  ▐   ▄▟
  ▐▄▄▌▐▘▐  ▐   ▐  ▐▘▜     ▚▗▗▘▐▘▜  ▛ ▘ ▐  ▐▘▜
  ▐  ▌▐▀▀  ▐   ▐  ▐ ▐     ▐▟▟ ▐ ▐  ▌   ▐  ▐ ▐
  ▐  ▌▝▙▞  ▝▄  ▝▄ ▝▙▛      ▌▌ ▝▙▛  ▌   ▝▄ ▝▙█
  
  
  
  
  
   ##    ##            ####      ####                                                        ####            ##
   ##    ##            ####      ####                                                        ####            ##
   ##    ##              ##        ##                                                          ##            ##
   ##    ##   .####:     ##        ##       .####.            ##      ##  .####.    ##.####    ##       :###.##
   ##    ##  .######:    ##        ##      .######.           ##.    .## .######.   #######    ##      :#######
   ########  ##:  :##    ##        ##      ###  ###            #: ## :#  ###  ###   ###.       ##      ###  ###
   ########  ########    ##        ##      ##.  .##           :#:.##.:#: ##.  .##   ##         ##      ##.  .##
   ##    ##  ########    ##        ##      ##    ##            # :##:##  ##    ##   ##         ##      ##    ##
   ##    ##  ##          ##        ##      ##.  .##            ## ## ##  ##.  .##   ##         ##      ##.  .##
   ##    ##  ###.  :#    ##:       ##:     ###  ###            ###::##   ###  ###   ##         ##:     ###  ###
   ##    ##  .#######    #####     #####   .######.            :##..##:  .######.   ##         #####   :#######
   ##    ##   .#####:    .####     .####    .####.             .##  ##    .####.    ##         .####    :###.##
  
  
  
  
  
  
                 ███    ███                                       ███        █
   █    █          █      █                                         █        █
   █    █          █      █                                         █        █
   █    █  ███     █      █     ███         █░    █  ███    █▒██▒   █     ██▓█
   █    █ ▓▓ ▒█    █      █    █▓ ▓█        ▓▒   ▒█ █▓ ▓█   ██  █   █    █▓ ▓█
   ██████ █   █    █      █    █   █        ░█ █ █▒ █   █   █       █    █   █
   █    █ █████    █      █    █   █         █▒█▒█  █   █   █       █    █   █
   █    █ █        █      █    █   █         █████  █   █   █       █    █   █
   █    █ ▓▓  █    █░     █░   █▓ ▓█         ▒█▒█▒  █▓ ▓█   █       █░   █▓ ▓█
   █    █  ███▒    ▒██    ▒██   ███           █ █    ███    █       ▒██   ██▓█
  
  
  
  ║ ║╔═╝║  ║  ╔═║  ║║║╔═║╔═║║  ╔═
  ╔═║╔═╝║  ║  ║ ║  ║║║║ ║╔╔╝║  ║ ║
  ╝ ╝══╝══╝══╝══╝  ══╝══╝╝ ╝══╝══
  
   ▄▄    ▄▄            ▄▄▄▄      ▄▄▄▄                                                        ▄▄▄▄            ▄▄
   ██    ██            ▀▀██      ▀▀██                                                        ▀▀██            ██
   ██    ██   ▄████▄     ██        ██       ▄████▄            ██      ██  ▄████▄    ██▄████    ██       ▄███▄██
   ████████  ██▄▄▄▄██    ██        ██      ██▀  ▀██           ▀█  ██  █▀ ██▀  ▀██   ██▀        ██      ██▀  ▀██
   ██    ██  ██▀▀▀▀▀▀    ██        ██      ██    ██            ██▄██▄██  ██    ██   ██         ██      ██    ██
   ██    ██  ▀██▄▄▄▄█    ██▄▄▄     ██▄▄▄   ▀██▄▄██▀            ▀██  ██▀  ▀██▄▄██▀   ██         ██▄▄▄   ▀██▄▄███
   ▀▀    ▀▀    ▀▀▀▀▀      ▀▀▀▀      ▀▀▀▀     ▀▀▀▀               ▀▀  ▀▀     ▀▀▀▀     ▀▀          ▀▀▀▀     ▀▀▀ ▀▀
  
  
  
  ., .,     .m,  .m,                           .m,     .,
  ][ ][     'T[  'T[                           'T[     ][
  ][ ][ dWb  ][   ][   dWb      W   W dWb  WdW[ ][   dWd[
  ]WWW[]bmd[ ][   ][  ]P T[     T W P]P T[ W`   ][  ]P T[
  ][ ][]P""` ][   ][  ][ ][     ]bWd[][ ][ W    ][  ][ ][
  ][ ]['Wmm[ ]bm  ]bm 'WmW`     'W W`'WmW` W    ]bm 'WmW[
  '` '` '""   ""   ""  '"`       " "  '"`  "     ""  '"'`
  
  
   ⣇⣸ ⢀⡀ ⡇ ⡇ ⢀⡀   ⡀ ⢀ ⢀⡀ ⡀⣀ ⡇ ⢀⣸
   ⠇⠸ ⠣⠭ ⠣ ⠣ ⠣⠜   ⠱⠱⠃ ⠣⠜ ⠏  ⠣ ⠣⠼
  Ｈｅｌｌｏ  ｗｏｒｌｄ
  ```

## フィルターをかける

  `toilet`では複数のフィルターをかけることができます。
  その一覧は`toilet --filter list`で見ることができます。

| フィルター | 説明                                     |
| :----:  | :----:                                      |
| `crop`     | crop unused blanks (わからなかった)      |
| `gay`      | 出力を虹色にします。                     |
| `metal`    | メタルっぽい色のエフェクトを追加します。 |
| `flip`     | 横向きに反転します。                     |
| `flop`     | 縦向きに反転します。                     |
| `180`      | 180度回転します。                        |
| `left`     | 反時計回りに90度回転します。             |
| `right`    | 時計回りに90度回転します。               |
| `border`   | 太線で文字の周りを囲います。             |


## 文字列の幅を指定する

  (ほんの少しだけ)長いテキストを変換させようとすると、微妙なところで折り返されてしまいます。
  これは、デフォルトでは80文字で折り返すように設定されているかららしいです。
  `-w`オプションを使用することで、文字列の幅を指定できます。

  画面いっぱいの幅を使いたい場合:

  ```
  $ toilet -w $(tput cols) "text"
  ```

  `$(tput cols)`は現在の端末の横幅を返します。

---

面白そうじゃないですか？？
時間的都合もあるのでここまでにしておきますが、 **画像に出力**したり**HTMLに出力したり**もできるようです。
ここ読むと色々書いてあって楽しいので英語わかる人は是非。
いつか翻訳しておきたい。

https://delightlylinux.wordpress.com/2015/11/13/colored-text-with-toilet/