Module: Chromate::Formattable

Defined in:
lib/chromate/formattable.rb

Overview

The ‘Formattable` module allows any class easy access to Chromate formatting, so long as it provides an `effects` method, which is expected to return an `EffectSet`.

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.format_attr(name, question_name = name.to_s + '?') ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Introduce a format attribute. Each format attribute comes with two methods, which generally differ only by addition of a ‘?’ character ( although this behavior can be overriden). The first method sets the format attribute with the given name, and the second queries whether it is set.



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/chromate/formattable.rb', line 20

def self.format_attr(name, question_name = name.to_s + '?')
  if EFFECTS.include?(name)
    module_eval("      define_method :\#{name} do\n        effects << Effect[:\#{name}]\n        self\n      end\n\n      define_method :\#{question_name} do\n        effects.include?(Effect[:\#{name}])\n      end\n    EOF\n    )\n  else\n    raise ArgumentError, \"no such effect: \#{name}\"\n  end\nend\n"

Instance Method Details

#bg(what) ⇒ Formattable

Set the background and return self.



59
60
61
62
# File 'lib/chromate/formattable.rb', line 59

def bg(what)
  effects << Color[what].as_bg
  self
end

#fg(what) ⇒ Formattable

Set the foreground and return self.



48
49
50
51
# File 'lib/chromate/formattable.rb', line 48

def fg(what)
  effects << Color[what]
  self
end

#to_sString



65
66
67
# File 'lib/chromate/formattable.rb', line 65

def to_s
  effects + self + OFF
end