⛪️チャペルをASCII Artで表示してみたい
mwedアドベントカレンダー1日目の記事です。今年からみんなのウェディングでもアドベントカレンダーを始めました! 初日、初年ですので、少し肩を温めるネタ、やりたいけどやれてなかったことをテーマでいきたいと思います。
チャペル
みんなのウェディングは結婚式の口コミサイトを運営しているサービスです。 そこで、結婚式といえば、、、とりあえずチャペルでしょ!
ということでターミナル上にShellにログインするたびにASCIIArtでチャペルを表示していきます。
ASCII Art
githubでAsciiArtと検索すると結構な数が引っかかります。 結構人力だった。笑
下ごしらえ
# .zshrc export MYZSH=$HOME/.zsh function loadlib() { lib=$1 [[ -f $lib ]] && . $lib || echo "Could not load $lib" } function _main() { for zsh in $MYZSH/*.zsh; do loadlib $zsh done } _main
まずは起動時にzshrcが読まれたときに実行するスクリプトを記述します。
github.com ここを参考どころか、そのまま使わせてもらいました。
これであとは.zshディレクトリ配下にShell ScrpitをおいてあげればOKです。
はじめの一歩
文字を出力する
とりあえず読み込まれたらHelloWorldの文字を出す。
$ vim .zsh/sample.zsh echo "HelloWorld"
いい感じですね。 しかし色がなくて寂しいですね。
色を変更する
調べて見たところ
\e[31m
などで色を変更できるらしいのでそれを使ってみます。
ちなみに今回はechoを使うのでそちらでも色を付けることができました。
echo "\e[31mHelloWorld" echo "\e[32mHappyWedding"
つけた場合こんな感じ。
チャペルを作る
ちょっとこれだと寂しいので色々中身をいじってみます。
やりたいこと
- チャペルのASCIIART作成
- 花火の色を読み込みごとに変更
これらをやるのにShellScriptを書きました。
ヒアドキュメントを使ってみる
chapel=`cat << Chapel ( \e[31mHappy Wedding!!\e[m ) (_________ ___) \e[0;${col}m \ / \e[m \ / _|_ \e[0;${col}m * \e[m \/ | \e[0;${col}m / \ \e[m / \ \e[37m | \e[m /~~~\ /~[+]~\ /~~~~~~~\ \e[32m $%& \e[m /_________\ \e[32m #%$%$ \e[m | | \e[32m#$%&%$&\e[m | ### | \e[32m &%&$& \e[m | ### | __________|_|___|___###___|_!-!_______ / Minnna no Wedding AdventCalender! Chapel`
こんな感じで、ヒアドキュメントをまずはcatで変数にぶっこんで、 それをあとでechoで表示させました。
GithubのShellScriptをみてみると意外とこの方法が多かったので採用しました。
で、せっかくなのでRubyも使ってみる
今回はヒアドキュメントを使って、ShellScript内にRubyのコードを展開して、 ランダムな値をArray Sampleを使って弾き出し、それを花火の色を毎回変更することにします。
terminalで使える色は以下を参考にしました。
col=$(ruby << EOM puts [31, 32, 33, 34, 35, 36, 37].sample EOM )
pickup random number from arrayはShellScriptで書けますが、Rubyを少し入れたかったのです。
リポジトリ
今回のリポジトリはこちらに作りました。
結果
今回はASCII ART初挑戦でした。 最終的にこのようになりました。
今後はもう少し頑張りたいですね。
明日12/2のmwedアドベントカレンダーはまさくんのRubyのI/Oクラスについて語ってくれるそうです! 楽しみですね!