Sha256: bfe5883220274a546f23c1b9ecec505d30210dbbb2b9ea2e3c28cc1f4538c3a5
Contents?: true
Size: 965 Bytes
Versions: 8
Compression:
Stored size: 965 Bytes
Contents
module ZTK::DSL::Core # @author Zachary Patten <zachary AT jovelabs DOT com> # @api private module Attributes def self.included(base) base.class_eval do base.send(:extend, ZTK::DSL::Core::Options::ClassMethods) base.add_option(:attribute) base.send(:extend, ZTK::DSL::Core::Attributes::ClassMethods) end end def attributes @attributes ||= Hash.new end # @author Zachary Patten <zachary AT jovelabs DOT com> module ClassMethods def attribute(key, options={}) attribute_options[key] = options send(:define_method, key) do |*args| if args.count == 0 attributes[key] ||= self.class.attribute_options[key][:default] attributes[key] else send("#{key}=", *args) end end send(:define_method, "#{key}=") do |value| attributes[key] = value end end end end end
Version data entries
8 entries across 8 versions & 1 rubygems