class Module

Public Instance Methods

bool_accessor(*args) click to toggle source
# File lib/sup/util.rb, line 105
def bool_accessor *args
  bool_reader(*args)
  bool_writer(*args)
end
bool_reader(*args) click to toggle source
# File lib/sup/util.rb, line 101
def bool_reader *args
  args.each { |sym| class_eval %Q{ def #{sym}?; @#{sym}; end } }
end
bool_writer(*args;) click to toggle source
# File lib/sup/util.rb, line 104
def bool_writer *args; attr_writer(*args); end
defer_all_other_method_calls_to(obj) click to toggle source
# File lib/sup/util.rb, line 110
def defer_all_other_method_calls_to obj
  class_eval %Q{
    def method_missing meth, *a, &b; @#{obj}.send meth, *a, &b; end
    def respond_to?(m, include_private = false)
      @#{obj}.respond_to?(m, include_private)
    end
  }
end
yaml_properties(*props) click to toggle source
# File lib/sup.rb, line 22
def yaml_properties *props
  props = props.map { |p| p.to_s }
  vars = props.map { |p| "@#{p}" }
  klass = self
  path = klass.name.gsub(%r::/, "/")

  klass.instance_eval do
    define_method(:to_yaml_properties) { vars }
    define_method(:to_yaml_type) { "!#{Redwood::YAML_DOMAIN},#{Redwood::YAML_DATE}/#{path}" }
  end

  YAML.add_domain_type("#{Redwood::YAML_DOMAIN},#{Redwood::YAML_DATE}", path) do |type, val|
    klass.new(*props.map { |p| val[p] })
  end
end