Sha256: 6862b4209b9b8d3990f040d727a0e7847fa36fccdacd418417a6fdfb57d25ca3

Contents?: true

Size: 1011 Bytes

Versions: 1

Compression:

Stored size: 1011 Bytes

Contents

module Fin
  # Represents business domain model for a single item (Order, Deal, Instrument, etc...)
  # currently it is only used to extract common functionality from record wrappers,
  # down the road it may be subclassed from ActiveModel
  class Model
    def self.prop_reader *args
      args.each do |arg|
        aliases = [arg].flatten
        name = aliases.shift
        instance_eval do
          attr_reader name
          aliases.each { |ali| alias_method "#{ali}", name }
        end
      end
    end

    def self.prop_accessor *args
      args.each do |arg|
        aliases = [arg].flatten
        name = aliases.shift
        instance_eval do
          attr_accessor name
          aliases.each do |ali|
            alias_method "#{ali}", name
            alias_method "#{ali}=", "#{name}="
          end
        end
      end
    end

    def initialize opts = {}
      opts.each { |key, value| send "#{key}=", value }
    end

    def index
      object_id # TODO: @repl_id?
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
fin-0.1.0 lib/fin/models/model.rb