画像からQuineを生成するGemを作った
AAQ - Ascii Art Quine
できること
画像からRubyのQuineをつくれます。たとえば、Octocatの画像をQuineにしてみます。
出力されるアスキーアートは自分自身を出力するRubyのプログラムになっています。
aaq Octocat.png | tee OctocatQuine.rb ruby OctocatQuine.rb
--color
オプションを付けるとカラフルになります。これもQuineになっているので、エスケープシーケンスを取り除けばRubyで実行できます。
ruby OctocatQuine.rb --color ruby OctocatQuine.rb --color | ruby -ne 'puts $_.gsub(/\e.*?m/, "")' | ruby # エスケープシーケンスを除いて実行
インストール
以下の環境で動作確認しています。
rmagickを使っているので、 ImageMagickを先にインストールしておきます。 ImageMagickのバージョン7を入れてしまうと、rmagickのインストール時にエラー1が出てしまうので、バージョン6をインストールします。
brew install imagemagick@6 echo 'export PATH="/usr/local/opt/imagemagick@6/bin:${PATH}"' >> ~/.bash_profile echo 'export PKG_CONFIG_PATH="/usr/local/opt/imagemagick@6/lib/pkgconfig:${PKG_CONFIG_PATH}"' >> ~/.bash_profile
gemでaaqをインストールします。
gem install aaq
動作確認します。
$ aaq -v
aaq 0.1.2
Enjoy!
参考
Quineの作り方
gifはasciinemaとasciicast2gifを使いました。
asciinema rec screen.cast docker run --rm -v $PWD:/data asciinema/asciicast2gif -s 1.8 -t monokai screen.cast screen.gif
Gemの公開方法
色のエスケープシーケンス