Sha256: 966b88c9cdf0e97e257493ac52865acb0d1622d13e78059437e04b5f1b360cc9
Contents?: true
Size: 1.52 KB
Versions: 1
Compression:
Stored size: 1.52 KB
Contents
module Dry module Initializer require_relative "initializer/exceptions/default_value_error" require_relative "initializer/exceptions/type_constraint_error" require_relative "initializer/exceptions/params_order_error" require_relative "initializer/attribute" require_relative "initializer/param" require_relative "initializer/option" require_relative "initializer/builder" require_relative "initializer/instance_dsl" require_relative "initializer/class_dsl" # rubocop: disable Style/ConstantName Mixin = self # for compatibility to versions below 0.12 # rubocop: enable Style/ConstantName UNDEFINED = Object.new.tap do |obj| obj.define_singleton_method(:inspect) { "Dry::Initializer::UNDEFINED" } end.freeze extend Dry::Initializer::ClassDSL def param(*args) __initializer_builder__.param(*args).call(__initializer_mixin__) end def option(*args) __initializer_builder__.option(*args).call(__initializer_mixin__) end private def __initializer_mixin__ @__initializer_mixin__ ||= Module.new end def __initializer_builder__(**settings) @__initializer_builder__ ||= Dry::Initializer::Builder.new(settings) end def inherited(klass) builder = @__initializer_builder__.dup mixin = Module.new klass.instance_variable_set :@__initializer_builder__, builder klass.instance_variable_set :@__initializer_mixin__, mixin builder.call(mixin) klass.include mixin super end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
dry-initializer-1.4.1 | lib/dry/initializer.rb |