Sha256: b5c7b2986db4f3cbcb771aa37f63144fcbcfede2c77aac517afbd05fe0808814

Contents?: true

Size: 547 Bytes

Versions: 7

Compression:

Stored size: 547 Bytes

Contents

module Fiveruns::Dash
  
  module Typable
    
    def self.included(base)
      name = base.name.demodulize.underscore
      base.class_eval %{
        def self.#{name}_type
          @#{name}_type ||= name.demodulize.underscore.sub(/_#{name}$/, '').to_sym
        end
      }
      base.extend ClassMethods
    end
    
    module ClassMethods
      
      def inherited(klass)
        types[klass.__send__("#{name.demodulize.underscore}_type")] = klass
      end

      def types
        @types ||= {}
      end
      
    end
    
  end
  
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
fiveruns-dash-ruby-0.7.0 lib/fiveruns/dash/typable.rb
fiveruns-dash-ruby-0.7.1 lib/fiveruns/dash/typable.rb
fiveruns-dash-ruby-0.7.2 lib/fiveruns/dash/typable.rb
fiveruns-dash-ruby-0.7.3 lib/fiveruns/dash/typable.rb
fiveruns-dash-ruby-0.7.4 lib/fiveruns/dash/typable.rb
fiveruns-dash-ruby-0.7.5 lib/fiveruns/dash/typable.rb
fiveruns-dash-ruby-0.7.6 lib/fiveruns/dash/typable.rb