28 July 2014
カラム指向ターミナルカラーライブラリ「colcolor」にcyclicオプションを付けました!
先日、カラム指向ターミナルカラーライブラリ「colcolor」というのを公開しまして。
colcolorはStringクラスにcolco
というメソッドを挿します。colcoでは引数として複数の色名を受け取って単語区切りで文字を彩色します。こんな感じです。
require "colcolor"
DATA.each_line.with_index do |line, i|
puts line.colco(:green, :yellow, :blue, :blue)
puts "-".colco(:red) * line.size if i.zero?
end
__END__
lang year designer
Ruby 1993 Yukihiro Matsumoto
Lisp 1958 John McCarthy
C++ 1983 Bjarne Stroustrup
ターミナル出力です。
cyclicオプション
で、この度cyclic
オプションをcolcoに渡せるようにしたので、紹介します。
colcolorでは渡した色数が単語数に対して不足するとき、残りの単語は色付けされないのですが、このcyclicオプションをtrue
にセットすると、与えられた色を残りの単語に対しても繰り返し適用するようになります。こんな感じです。
require "colcolor"
text =<<-EOS
A dynamic, open source programming language
with a focus on simplicity and productivity.
It has an elegant syntax that is natural to
read and easy to write.
EOS
puts text.colco(:red, :green, :blue, :yellow, cyclic:true)
ターミナル出力です。
赤、緑、青、黄が単語に対して繰り返し適用されている様子がわかります。
regexp
オプションと組み合わせると、少し面白いこともできます。regexpに/./
を渡して色区切りを文字ベースにしてみます。
require "colcolor"
text =<<-EOS
A dynamic, open source programming language
with a focus on simplicity and productivity.
It has an elegant syntax that is natural to
read and easy to write.
EOS
puts text.colco(:red, :green, :blue, :yellow, cyclic:true, regexp:/./)
ターミナル出力です。
こんなこともできます。
require "colcolor"
line = " " * 50
colors = %i(bg_red bg_yellow)
10.times do
puts line.colco(*colors.rotate!, cyclic:true, regexp:/../)
end
ターミナル出力です。
colcolor
をどうぞよろしく!
(追記:2014-7-30) オプション名を”cycle”から”cyclic”に変更しました(version 0.0.5)。
blog comments powered by Disqus