Sha256: 457273967d03587c4694764aab46fc7115f65165d6bcfe461aeba8dc71084002

Contents?: true

Size: 1.05 KB

Versions: 5

Compression:

Stored size: 1.05 KB

Contents

# lib/apache_age/types/factory.rb
# Automatically generates ActiveModel::Type classes
# Dynamically builds this (as a concrete example):
# module ApacheAge
#   module Types
#     class CompanyType < ActiveModel::Type::Value
#       def cast(value)
#         case value
#         when Nodes::Company
#           value
#         when Hash
#           Nodes::Company.new(value)
#         else
#           nil
#         end
#       end
#       def serialize(value)
#         value.is_a?(Nodes::Company) ? value.attributes : nil
#       end
#     end
#   end
# end
module ApacheAge
  module Types
    class Factory
      def self.type_for(klass)
        Class.new(ActiveModel::Type::Value) do
          define_method(:cast) do |value|
            case value
            when klass
              value
            when Hash
              klass.new(value)
            else
              nil
            end
          end

          define_method(:serialize) do |value|
            value.is_a?(klass) ? value.attributes : nil
          end
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
rails_age-0.6.4 lib/apache_age/types/factory.rb
rails_age-0.6.3 lib/apache_age/types/factory.rb
rails_age-0.6.2 lib/apache_age/types/factory.rb
rails_age-0.6.1 lib/apache_age/types/factory.rb
rails_age-0.6.0 lib/apache_age/types/factory.rb