Sha256: 724357e73ef5db2e7ae99316340b3658cb6a7903894aa6de1b3550f78610ac32

Contents?: true

Size: 655 Bytes

Versions: 4

Compression:

Stored size: 655 Bytes

Contents

# typed: strict

module DataModel
	class Builtin::Boolean < Type
		include Errors

		class Arguments < T::Struct
			prop :optional, T::Boolean, default: false
		end

		sig { override.params(val: Object, coerce: T::Boolean).returns(TTypeResult) }
		def read(val, coerce: false)
			err = Error.new

			if val.nil?
				err.add(missing_error(DataModel::Boolean))
				return [val, err]
			end

			if coerce
				case val
				when "true"
					val = true
				when "false"
					val = false
				end
			end

			if !val.is_a?(TrueClass) && !val.is_a?(FalseClass)
				err.add(type_error(Boolean, val))
				return [val, err]
			end

			return [val, err]
		end
	end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
data_model-0.4.0 lib/data_model/builtin/boolean.rb
data_model-0.3.0 lib/data_model/builtin/boolean.rb
data_model-0.2.0 lib/data_model/builtin/boolean.rb
data_model-0.1.0 lib/data_model/builtin/boolean.rb