module AdvAccessor::DSL::BaseInclude
Public Instance Methods
adv_accessor(name,&b)
click to toggle source
# File lib/adv_accessor/dsl.rb, line 44 def adv_accessor(name,&b) @adv_accessor ||= Hash.new { |h,k| h[k] = AdvAccessor::Base.new(:method => name) } base = @adv_accessor[name] dsl = AdvAccessor::DSL::Create.new(:base => base) complex_block = lambda do block = b if b.arity == 0 block = lambda { |a| a.null_value = b } end block end create_writer = lambda do define_method("#{name}=") do |arg| base.value = arg end end create_simple = lambda do define_method(name) do base.value end create_writer[] end create_complex = lambda do define_method(name) do AdvAccessor::DSL::Access.new(:base => base) end create_writer[] end if block_given? complex_block[][dsl] if dsl.complex create_complex[] else create_simple[] end end end