Module: VarBlock::Globals
Class Method Summary collapse
Instance Method Summary collapse
- #getvar(var_hash, index, *options) ⇒ Object
- #with(var_hash_parent = nil, **variables) {|var_hash| ... } ⇒ Object
Class Method Details
.included(base) ⇒ Object
5 6 7 8 9 10 11 12 |
# File 'lib/var_block/globals.rb', line 5 def self.included(base) # fail if there is already same-name methods to prevent breaking dependencies # thanks to Jack, https://stackoverflow.com/questions/44156150/how-to-raise-error-when-including-a-module-that-already-has-same-name-methods overrides = instance_methods.reject { |method| base.instance_method(method).owner == self } raise "#{name} overrides #{overrides.join(', ')}" if overrides.any? base.extend self end |
Instance Method Details
#getvar(var_hash, index, *options) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/var_block/globals.rb', line 14 def getvar(var_hash, index, *) = ( - VarBlock::GetvarHandlers::OPTIONS) raise ArgumentError, "3rd argument options Array only supports #{VarBlock::GetvarHandlers::OPTIONS}. Does not support #{.map(&:inspect).join(', ')}" if .any? raise ArgumentError, "1st argument should be a VarHash object, but is found to be a #{var_hash.class}" unless var_hash.is_a? VarHash raise ArgumentError, "2nd argument :#{index} is not defined. Defined are #{var_hash.keys.map(&:inspect).join(', ')}" unless var_hash.keys.include?(index) value = var_hash[index] return_value = case value when VarArray VarBlock::GetvarHandlers::VarArrayHandler.handle(value, self, ) when Proc VarBlock::GetvarHandlers::ProcHandler.handle(value, self, ) else VarBlock::GetvarHandlers::DefaultHandler.handle(value, ) end return_value end |
#with(var_hash_parent = nil, **variables) {|var_hash| ... } ⇒ Object
34 35 36 37 38 39 40 41 42 |
# File 'lib/var_block/globals.rb', line 34 def with(var_hash_parent = nil, **variables) var_hash = VarHash.new_from_var_hash(var_hash: var_hash_parent) variables.each do |key, value| var_hash[key] = value end yield var_hash end |