Sha256: 5424f1c87e3af3b00e6d10cc7dbe8b8eb7c2f5421fd81a42fe9773abe23ba1eb

Contents?: true

Size: 1.46 KB

Versions: 3

Compression:

Stored size: 1.46 KB

Contents

require 'rails_clafer/gcard'
require 'rails_clafer/card'
require 'rails_clafer/clafer_element'
require 'rails_clafer/association'
require 'rails_clafer/ref_clafer'
require 'rails_clafer/sub_clafer'


module RailsClafer
  class ClaferModel
    class << self
      def init(settings)

      end

      def assoc_src
        @assoc_src ||= associations.inject({}) do |result, assoc| 
          (result[assoc.src] ||= []) << assoc
          result
        end
      end

      def assoc_dst
        @assoc_dst ||= associations.inject({}) do |result, assoc| 
          (result[assoc.dst] ||= []) << assoc
          result
        end 
      end

      def abstract_clafers
        @abstract_clafers ||= clafers.select{|clafer| clafer.is_abstract?}
      end

      def clafer_by_name(name)
        @clafer_map ||= Hash[clafers.collect {|clafer| [clafer.name, clafer]}]
        @clafer_map[name]
      end

      def associations
        @associations ||= rails_models.collect { |model| 
          model.reflect_on_all_associations.select { |ar_assoc|
            !ar_assoc.belongs_to?
          }.collect{ |ar_assoc| 
            Association.from_ar_assoc(model, ar_assoc)
          }
        }.flatten
      end

      def clafers
        @clafers ||= ClaferElement.from_rails_models rails_models
      end

      def rails_models
        @rails_models ||= ActiveRecord::Base.descendants
      end

      def claferize_name(class_name)
        class_name.sub("::", "__")
      end
    end

  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
rails_clafer-0.1.5 lib/rails_clafer/clafer_model.rb
rails_clafer-0.1.4 lib/rails_clafer/clafer_model.rb
rails_clafer-0.1.3 lib/rails_clafer/clafer_model.rb