Help us understand the problem. What is going on with this article?

Rubyの標準出力に僕も色をつけてみた

More than 5 years have passed since last update.

『端末に出力する時に色を付けたいなぁ・・・。』と眺めていたら。。。
Ruby - 標準出力に色をつける - Qiita
『ほぉ?(☆▽☆)』と思ったので、やってみた

コード

term_color.rb
module TermColor
  COLORS = {black: 30, red: 31, green: 32, yellow: 33,  blue: 34, magenta: 35, syan: 36, white: 37, clear: nil}
  module ModuleMethods
    def method_missing(method, *args)
      if COLORS.has_key?(method)
        self.instance_eval <<-EOS
          def #{method}
            self.out_color_sequence(#{COLORS[method]})
          end
        EOS
        self.__send__(method)
      else
        super
      end
    end

    def out_color_sequence(num = nil)
      print "\e[#{num.to_s}m"
    end
  end

  extend ModuleMethods
end

if $0 == __FILE__
  TermColor.red
  puts "tomato"
  TermColor.black
  puts "coffee"
  TermColor.blue
  puts "blue hawaii"
  TermColor.blue
  puts "soda"
  TermColor.white
  puts "milk"
  TermColor.clear
end
  • 写経してもよかったのですが、ゴーストメソッドの学習がてらmethod_missingで遊んでみました。
  • 実行時に無ければメソッドを作って行くはずです。

実行結果

実行結果

  • 色が付きました!!!

・・・!!( ; ロ)゚ ゚

ところで、投稿前になって気づいたのですが・・・

まとめ

結局、gem辺りでインストールして、requireが良いようです!w
以上、ゴーストメソッドの作り方でした!(

ionis_h
数年ぶりにRuby on Railsに戻ってきて、浦島な日々を送っていたのですが、気づけばAWS三昧。 以前は、objective-cでiPhoneアプリを作ったり、JavaでAndroidアプリを作ったり。 CTFへもコソコソと参戦したりしています(=w=
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした