Sha256: 43deff3a9b942a25fb022f83436e7d28e143221e167ae04e2f2f1ee42cccf646

Contents?: true

Size: 1.07 KB

Versions: 8

Compression:

Stored size: 1.07 KB

Contents

# lib/apache_age/types/age_type_generator.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 AgeTypeGenerator
      def self.create_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

8 entries across 8 versions & 1 rubygems

Version Path
rails_age-0.5.3 lib/apache_age/types/age_type_generator.rb
rails_age-0.5.2 lib/apache_age/types/age_type_generator.rb
rails_age-0.5.1 lib/apache_age/types/age_type_generator.rb
rails_age-0.5.0 lib/apache_age/types/age_type_generator.rb
rails_age-0.4.1 lib/apache_age/types/age_type_generator.rb
rails_age-0.4.0 lib/apache_age/types/age_type_generator.rb
rails_age-0.3.2 lib/apache_age/types/age_type_generator.rb
rails_age-0.3.1 lib/apache_age/types/age_type_generator.rb