class Origen::Parameters::Set
Constants
- OVERRIDE_HASH_METHODS
Allow these parameter names to be valid. When used, they will override the methods of the same name provided by the
Hash
class.- OVERRIDE_METHODS
Allow these parameter names to be valid. When used, they will override the methods of the same name provided by another class.
Attributes
name[RW]
path[RW]
top_level[RW]
Public Class Methods
new(options = {})
click to toggle source
# File lib/origen/parameters/set.rb, line 16 def initialize(options = {}) if options[:top_level] @top_level = self @path = '' @owner = options[:owner] end end
Public Instance Methods
[](key)
click to toggle source
Calls superclass method
# File lib/origen/parameters/set.rb, line 105 def [](key) val = super val.is_a?(Proc) ? val.call : val end
available_contexts()
click to toggle source
# File lib/origen/parameters/set.rb, line 37 def available_contexts owner._parameter_sets.keys end
Also aliased as: contexts
context()
click to toggle source
Returns the current parameter context
# File lib/origen/parameters/set.rb, line 32 def context owner._parameter_current end
Also aliased as: current_context
copy_defaults_from(set)
click to toggle source
# File lib/origen/parameters/set.rb, line 42 def copy_defaults_from(set) set.each do |name, val| if val.is_a?(Set) self[name] ||= new_subset(name) self[name].copy_defaults_from(val) else self[name] = val end end end
define(parent = nil) { |self, parent| ... }
click to toggle source
# File lib/origen/parameters/set.rb, line 24 def define(parent = nil, &_block) @defining = true yield self, parent @defining = false finalize unless Origen::Parameters.transaction_open end
defining?()
click to toggle source
# File lib/origen/parameters/set.rb, line 116 def defining? return true if Origen::Parameters.transaction_open if top_level? @defining else top_level.defining? end end
each() { |key, call| ... }
click to toggle source
Calls superclass method
# File lib/origen/parameters/set.rb, line 95 def each super do |key, val| if val.is_a?(Proc) yield key, val.call else yield key, val end end end
finalize()
click to toggle source
# File lib/origen/parameters/set.rb, line 138 def finalize freeze each { |_name, val| val.finalize if val.is_a? Set } end
live()
click to toggle source
# File lib/origen/parameters/set.rb, line 159 def live owner._request_live_parameter self end
live?()
click to toggle source
# File lib/origen/parameters/set.rb, line 155 def live? owner._live_parameter_requested? end
method_missing(method, *args, &block)
click to toggle source
Calls superclass method
# File lib/origen/parameters/set.rb, line 53 def method_missing(method, *args, &block) if defining? if args.length == 0 self[method] ||= new_subset(method) elsif args.length > 1 super else m = method.to_s.sub('=', '').to_sym self[m] = args.first end else if args.length != 0 super else if !key?(method) nil else val = self[method] if val.is_a?(Set) val else if live? Live.new(owner: owner, path: path, name: method) else if val.is_a?(Proc) val.call(*args) else val end end end end end end end
new_subset(name)
click to toggle source
# File lib/origen/parameters/set.rb, line 143 def new_subset(name) set = Set.new set.name = name set.top_level = top_level if path == '' set.path = name.to_s else set.path = "#{path}.#{name}" end set end
owner()
click to toggle source
# File lib/origen/parameters/set.rb, line 126 def owner if top_level? @owner else top_level.owner end end
test(*args, &block)
click to toggle source
Test seems to be some kind of reserved word, that doesn’t trigger the method_missing
, so re-defining it here to allow a param group called ‘test’
# File lib/origen/parameters/set.rb, line 112 def test(*args, &block) method_missing(:test, *args, &block) end
to_flat_hash(options = {})
click to toggle source
# File lib/origen/parameters/set.rb, line 164 def to_flat_hash(options = {}) options = { delimiter: '.' }.update(options) flatten_params(self, options[:delimiter]).first end
top_level?()
click to toggle source
# File lib/origen/parameters/set.rb, line 134 def top_level? top_level == self end
Private Instance Methods
flatten_params(param_hash, delimiter, name = nil, results_hash = {})
click to toggle source
# File lib/origen/parameters/set.rb, line 173 def flatten_params(param_hash, delimiter, name = nil, results_hash = {}) param_hash.each do |k, v| if v.is_a? Origen::Parameters::Set name.nil? ? name = k.to_s : name << "#{delimiter}#{k}" (results_hash, name) = flatten_params(v, delimiter, name, results_hash) else if name.nil? results_hash[k] = v else results_hash["#{name}#{delimiter}#{k}"] = v if k == param_hash.keys.last name = name.include?(delimiter) ? name.split(delimiter)[0..-2].join(delimiter) : nil end end end end [results_hash, name] end