Sha256: 7dd38cbfe4709a6efde2783612d7421dd5feb75a3496046c138793d0162172ee

Contents?: true

Size: 683 Bytes

Versions: 5

Compression:

Stored size: 683 Bytes

Contents

module Bunnicula
  module DslBase
    def dsl_attr(*args)
      options = args.extract_options!
      [args].flatten.each {|attr|create_property_for(attr,options)}
    end

    private

    def create_property_for(attr,options)
      class_eval <<-end_eval
      @@dsl_attr_defaults ||= {}
      @@dsl_attr_defaults['#{attr}'] = #{options[:default].inspect}

      def #{attr}(val = nil)
        return @#{attr} || @@dsl_attr_defaults['#{attr}'] unless val
        @#{attr} = val
      end
      end_eval
      if (alias_list = options[:alias])
        [alias_list].flatten.each {|attr_alias| alias_method(attr_alias, attr.to_sym)}
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
bunnicula-0.2.2 lib/bunnicula/dsl_base.rb
bunnicula-0.2.1 lib/bunnicula/dsl_base.rb
bunnicula-0.2.0 lib/bunnicula/dsl_base.rb
bunnicula-0.1.1 lib/bunnicula/dsl_base.rb
bunnicula-0.1.0 lib/bunnicula/dsl_base.rb