Sha256: 2cc17723277c38946285639561fd11c3b750b80d4396ed86237dd2b01a44de0a

Contents?: true

Size: 787 Bytes

Versions: 2

Compression:

Stored size: 787 Bytes

Contents

module Sprig
  class Directive
    attr_reader :attributes

    def initialize(args)
      @attributes = begin
        case
        when args.is_a?(Hash)
          args
        when args < ActiveRecord::Base
          { :class => args }
        else
          raise ArgumentError, argument_error_message
        end
      end
    end

    def klass
      @klass ||= attributes.fetch(:class) { raise ArgumentError, argument_error_message }
    end

    def options
      @options ||= attributes.except(:class)
    end

    def datasource
      @datasource ||= Source.new(klass.to_s.tableize, options)
    end

    private

    def argument_error_message
      'Sprig::Directive must be instantiated with an '\
      'ActiveRecord subclass or a Hash with :class defined'
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
sprig-0.1.1 lib/sprig/directive.rb
sprig-0.1.0 lib/sprig/directive.rb