Sha256: c0b89060221b41ef3421031a87f961cf0f7b6a36c191f4244d01c82633e700b6

Contents?: true

Size: 664 Bytes

Versions: 1

Compression:

Stored size: 664 Bytes

Contents

# frozen_string_literal: true

module Solid::Value
  module ClassMethods
    UNDEFINED = ::Object.new

    def new(value = UNDEFINED)
      return value if value.is_a?(self)

      UNDEFINED.equal?(value) ? super() : super(value: value)
    end

    def attribute(...)
      super(:value, ...)
    end

    def validates(...)
      super(:value, ...)
    end
  end

  def self.included(subclass)
    subclass.include Solid::Model
    subclass.extend ClassMethods
    subclass.attribute
  end

  def ==(other)
    other.is_a?(self.class) && other.value == value
  end

  def hash
    value.hash
  end

  def to_s
    value.to_s
  end

  alias_method :eql?, :==
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
solid-process-0.4.0 lib/solid/value.rb