class ShapeOf::Optional

Optional denotes that the usual type is a shape, but is optional (meaning if it is nil or the key is not present in the Hash, it's still true)

Public Class Methods

[](shape) click to toggle source
# File lib/shape_of.rb, line 287
def self.[](shape)
  raise TypeError, "Shape cannot be nil" if shape.nil? || shape == NilClass

  Union[shape, NilClass].tap do |this|
    new_class_name = this.name.sub('Union', 'Optional').sub(/(?<=\[).*(?=\])/, shape.inspect)
    this.instance_variable_set(:@class_name, new_class_name)
    def this.required?
      false
    end
  end
end
required?() click to toggle source
# File lib/shape_of.rb, line 299
def self.required?
  false
end