module Goo::PropsInit
Public Class Methods
append_features(klass)
click to toggle source
Calls superclass method
# File lib/goocanvas.rb, line 34 def self.append_features(klass) super arity = klass.instance_method(:initialize).arity raise 'the initialize method of a class including PropsInit must have a fixed arity' if arity < 0 args_list = (1..arity).collect { |i| "param#{i}" }.join(", ") klass.module_eval <<-END alias :_initialize :initialize def initialize(#{args_list}, *args) _initialize(#{args_list}) init_props(*args) end alias :_set_property :set_property def set_property(prop_name, value) pspec = self.class.property(prop_name) value = value.to_goo if pspec.value_type.name =~ /^GooCairo/ and value.respond_to?(:to_goo) _set_property(prop_name, value) end END end
Public Instance Methods
init_props(*args)
click to toggle source
# File lib/goocanvas.rb, line 29 def init_props(*args) hash = Goo.args_to_hash(args) hash.each_pair { |key, value| set_property(key.to_s.gsub(/-/, '_').to_sym, value) } end