Sha256: 4c7178da365bebe9c604cdb1e7340c3255f0acf1ba1843b31e8b20930442bdba
Contents?: true
Size: 1.04 KB
Versions: 2
Compression:
Stored size: 1.04 KB
Contents
class Frenetic class StructureRegistry class Rebuilder attr_reader :signatures, :resource def initialize(signatures, resource, attributes, key, signature) @signatures, @resource, @attributes, @key, @signature = signatures, resource, attributes, key, signature end def call destroy! signatures[@key] = @signature Struct.new(@key, *@attributes.keys, &structure_instance_methods) end def destroy! return unless exists? signatures.delete(@key) Struct.send(:remove_const, @key) end def exists? Struct.constants.include?(@key.to_sym) end private def structure_instance_methods method_builders = resource.class.ancestors[1..-1].map do |ancestor| ancestor.instance_variable_get('@_structure_block') end.compact _resource = resource Proc.new do method_builders.each do |builder| instance_exec(_resource, &builder) end end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
frenetic-3.0.1 | lib/frenetic/structure_registry/rebuilder.rb |
frenetic-3.0.0 | lib/frenetic/structure_registry/rebuilder.rb |