Sha256: 524d2b5299b16874b3a7ba4c7014c5885ceb50f1023e7a6468155fb79e47245a

Contents?: true

Size: 916 Bytes

Versions: 1

Compression:

Stored size: 916 Bytes

Contents

module AxleAttributes
  module Conversions
    def self.included(base)
      if base.is_a? Class
        base.class_eval do
          cattr_accessor :target_class
          def self.use_target_class(target_class)
            self.target_class = target_class
          end
        end
      else
        base.class_eval do
          mattr_accessor :target_class
          def self.use_target_class(target_class)
            self.target_class = target_class
          end
        end
      end
    end

    class ConversionError < RuntimeError; end

    module_function

    def to_definition(*args)
      case args.first
      when AxleAttributes::Definition
        args.first
      when String
        target_class.attributes[args.first] || AxleAttributes::NullDefinition.new(target_class, args.first)
      else
        raise ConversionError.new "Can't convert #{args}.inspect to Field"
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
axle_attributes-1.13.2 lib/axle_attributes/conversions.rb