# File lib/mutter/mutterer.rb, line 11 def initialize obj = {} self.reset @defaults = load 'default' case obj when Hash # A style definition: expand quick-styles and merge with @styles @styles = obj.inject({}) do |h, (k, v)| h.merge k => (v.is_a?(Hash) ? v : { :match => v, :style => [k].flatten }) end when Array # An array of styles to be activated @active = obj when Symbol # A single style to be activated self << obj when String # The path of a yaml style-sheet @styles = load obj else raise ArgumentError end # # Create an instance method for each style # self.styles.keys.each do |style| (class << self; self end).class_eval do define_method style do |msg| say msg, style end end if style.is_a? Symbol end end