Sha256: 3cd01637372eaa37c193c690909d41c61ab50a6a2da0a4fdc812610dd95c38f1

Contents?: true

Size: 766 Bytes

Versions: 5

Compression:

Stored size: 766 Bytes

Contents

require 'forwardable'

module SonJay

  def self.ModelArray(entry_class)
    Class.new(ModelArray).tap{ |c|
      c.send :entry_class=, entry_class
    }
  end

  class ModelArray
    include ActsAsModel
    extend Forwardable

    class << self
      attr_accessor :entry_class
      private :entry_class=
    end

    def initialize
      @entries = []
    end

    def sonj_content
      self
    end

    def additional
      entry = self.class.entry_class.new
      @entries << entry
      entry
    end

    def load_data(data)
      data.each do |entry_data|
        additional.sonj_content.load_data entry_data
      end
    end

    def_delegators :@entries, *[
      :[] ,
      :empty? ,
      :entries ,
      :length ,
      :to_json ,
    ]

  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
son_jay-0.4.1 lib/son_jay/model_array.rb
son_jay-0.4.0 lib/son_jay/model_array.rb
son_jay-0.3.0 lib/son_jay/model_array.rb
son_jay-0.2.0.alpha lib/son_jay/model_array.rb
son_jay-0.1.1.alpha lib/son_jay/model_array.rb