Sha256: b2873ec6b5b48a143758f05d39b03e2bdbb32c3eb8a126f99a5e5380943618cf

Contents?: true

Size: 635 Bytes

Versions: 1

Compression:

Stored size: 635 Bytes

Contents

class Module
  def namespace_free_name
    self.name.match( /(\w*?)$/ )[1]
  end

  def attr_accessor_with_default_setter( *syms, &block )
    raise 'Default value in block required' unless block
    syms.each do | sym |
      module_eval do
        attr_writer( sym )
        define_method( sym ) do | |
          class << self; self; end.class_eval do 
            attr_reader( sym )
          end

          if instance_variables.include? "@#{sym}"
            instance_variable_get( "@#{sym}" )
          else
            instance_variable_set( "@#{sym}", block.call )
          end
        end
      end
    end
    nil
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
contextr-0.0.1 lib/core_ext/module.rb