module Stockboy::DSL
Mixin for defining DSL
methods
Public Instance Methods
dsl_attr(attr, options={})
click to toggle source
Define ambiguous attr reader/writers for DSL
readability
@example
dsl.some_option = "new value" # => some_option = "new value" dsl.some_option "new value" # => some_option = "new value" dsl.some_option # => some_option
@visibility private @scope class
# File lib/stockboy/dsl.rb, line 30 def dsl_attr(attr, options={}) if options.fetch(:attr_accessor, true) attr_reader attr if options.fetch(:attr_reader, true) attr_writer attr if options.fetch(:attr_writer, true) end class_eval <<-___, __FILE__, __LINE__ class DSL < Stockboy::ConfiguratorBlock def #{attr}(*arg) case arg.size when 0 @instance.#{attr} when 1 @instance.#{attr} = arg.first else @instance.#{attr} = *arg end end def #{attr}=(arg) @instance.#{attr} = arg end end ___ if attr_alias = options[:alias] alias_method attr_alias, attr alias_method :"#{attr_alias}=", :"#{attr}=" class_eval <<-___, __FILE__, __LINE__ class DSL < Stockboy::ConfiguratorBlock alias_method :#{attr_alias}, :#{attr} alias_method :#{attr_alias}=, :#{attr}= end ___ end attr end