require "dry/interface"
class Animal < Dry::Interface
class Mammal < Concrete
attribute :id, Value(:mammal)
end
class Bird < Value
attribute :id, Value(:bird)
end
class Fish < Abstract
class Whale < Value
attribute :id, Value(:whale)
end
class Shark < Value
attribute :id, Value(:shark)
end
end
end
Animal.new(id: :mammal) # => Animal::Mammal
Animal.new(id: :shark) # => Animal::Fish::Shark
Project
dry-interface
Dry::Interface
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
Pull Requests
Development
Dependencies
Runtime
Project Readme