Sha256: cfe2f62da16e45c3aa35d149ee71b02c0c5accdc787c6ee44673924d8aec5c57
Contents?: true
Size: 833 Bytes
Versions: 2
Compression:
Stored size: 833 Bytes
Contents
# frozen_string_literal: true module Nina class Builder # A way to call methods from initalization proc on base_class class Initialization < BasicObject def initialize(builder) @builder = builder @abstract_factory = builder.abstract_factory @allow_list = @abstract_factory.factories.keys @atts = {} end def method_missing(method, *args, **kwargs, &block) return super unless @allow_list.include?(method) @atts[method] ||= @abstract_factory.create(method, *args, **kwargs, &block) .tap { |o| @builder.send(:update, method, o) } end def respond_to_missing?(method, _include_private = false) @allow_list.include?(method) end def to_h @atts.dup end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
nina-0.2.1 | lib/nina/builder/initialization.rb |
nina-0.2.0 | lib/nina/builder/initialization.rb |