class Origen::SubBlocks::Placeholder
Attributes
Public Class Methods
Source
# File lib/origen/sub_blocks.rb, line 477 def initialize(owner, name, attributes) @owner = owner @name = name @attributes = attributes end
Public Instance Methods
Source
# File lib/origen/sub_blocks.rb, line 531 def ==(obj) if obj.is_a?(Placeholder) materialize == obj.materialize else materialize == obj end end
Also aliased as: equal?
Source
# File lib/origen/sub_blocks.rb, line 483 def add_attributes(attrs) @attributes = @attributes.merge(attrs) end
Source
# File lib/origen/sub_blocks.rb, line 488 def class klass end
Make this appear like a sub-block to any application code
Source
# File lib/origen/sub_blocks.rb, line 504 def inspect "<SubBlock: #{name}>" end
Make it look like a sub-block in the console to avoid confusion
Source
# File lib/origen/sub_blocks.rb, line 493 def is_a?(klass) # Because sub_blocks are stored in a hash.with_indifferent_access, the value is tested # against being a Hash or Array when it is added to the hash. This prevents the class being # looking up and loaded by the autoload system straight away, especially if the sub-block # has been specified to lazy load return false if klass == Hash || klass == Array klass == self.klass || klass == Placeholder end
Make this appear like a sub-block to any application code
Source
# File lib/origen/sub_blocks.rb, line 556 def klass @klass ||= begin class_name = attributes.delete(:class_name) tmp_class = nil if class_name begin tmp_class = "::#{owner.namespace}::#{class_name}" klass = eval(tmp_class) rescue NameError => e raise if e.message !~ /^uninitialized constant (.*)$/ || tmp_class !~ /#{Regexp.last_match(1)}/ begin tmp_class = "::#{class_name}" klass = eval(tmp_class) rescue NameError => e raise if e.message !~ /^uninitialized constant (.*)$/ || tmp_class !~ /#{Regexp.last_match(1)}/ begin tmp_class = "#{owner.class}::#{class_name}" klass = eval(tmp_class) rescue NameError => e raise if e.message !~ /^uninitialized constant (.*)$/ || tmp_class !~ /#{Regexp.last_match(1)}/ puts "Could not find class: #{class_name}" raise 'Unknown sub block class!' end end end else klass = Origen::SubBlock end unless klass.respond_to?(:includes_origen_model) puts 'Any class which is to be instantiated as a sub_block must include Origen::Model,' puts "add this to #{klass}:" puts '' puts ' include Origen::Model' puts '' fail 'Sub block does not include Origen::Model!' end klass end end
Source
# File lib/origen/sub_blocks.rb, line 516 def materialize block = nil file = attributes.delete(:file) load_block = attributes.delete(:load_block) dir = attributes.delete(:dir) || owner.send(:export_dir) block = owner.send(:instantiate_sub_block, name, klass, attributes) if file require File.join(dir, file) block.extend owner.send(:export_module_names_from_path, file).join('::').constantize end block.load_block(load_block) if load_block block.owner = owner block end
Source
# File lib/origen/sub_blocks.rb, line 508 def method_missing(method, *args, &block) materialize.send(method, *args, &block) end
Source
# File lib/origen/sub_blocks.rb, line 512 def respond_to?(method, include_private = false) materialize.respond_to?(method, include_private) end
Source
# File lib/origen/sub_blocks.rb, line 552 def to_json(*args) materialize.to_json(*args) end