examples/tuple.rb
require "bundler/setup"
require "json"
require "blood_contracts/core"
require "pry"
module Types
class JSON < BC::Refined
def match
super do
begin
context[:parsed] = ::JSON.parse(value)
self
rescue StandardError => error
failure(error)
end
end
end
def unpack
super { |match| match.context[:parsed] }
end
end
class Symbol < BC::Refined
def match
context[:as_symbol] = value.to_sym
self
rescue StandardError => error
failure(error)
end
def unpack
super { |match| match.context[:as_symbol] }
end
end
end
Config = BC::Tuple.new do
attribute :name, Types::Symbol
attribute :config, Types::JSON
end
c = Config.new("test", '{"some": "value"}')
binding.pry