class Dapp::Config::Directive::Base
Attributes
dapp[R]
Public Class Methods
new(dapp:, &blk)
click to toggle source
# File lib/dapp/config/directive/base.rb, line 5 def initialize(dapp:, &blk) @dapp = dapp initialize_variables instance_eval(&blk) if block_given? end
Public Instance Methods
clone()
click to toggle source
# File lib/dapp/config/directive/base.rb, line 11 def clone _clone end
encode_with(coder)
click to toggle source
# File lib/dapp/config/directive/base.rb, line 15 def encode_with(coder) (instance_variables - [:@dapp]).each do |var| var = var.to_s coder[var.gsub('@', '')] = instance_variable_get(var) end end
Protected Instance Methods
_clone()
click to toggle source
# File lib/dapp/config/directive/base.rb, line 94 def _clone marshal_clone(self).tap do |obj| _set_ref_variables_to(obj) end end
_clone_to(obj)
click to toggle source
# File lib/dapp/config/directive/base.rb, line 100 def _clone_to(obj) obj.tap do obj.marshal_load(marshal_dump) _set_ref_variables_to(obj) end end
_set_ref_variables_to(obj)
click to toggle source
# File lib/dapp/config/directive/base.rb, line 107 def _set_ref_variables_to(obj) ref_variables.each do |ref_variable| obj.instance_variable_set(ref_variable, instance_variable_get(ref_variable)) end end
clone_variable(var, clone_method = :clone)
click to toggle source
# File lib/dapp/config/directive/base.rb, line 64 def clone_variable(var, clone_method = :clone) case var when Base then var.public_send(clone_method) when String, Symbol, Integer, TrueClass, FalseClass then var when Array, Hash then marshal_clone(var) when NilClass then nil else raise end end
directive_eval(directive, &blk)
click to toggle source
# File lib/dapp/config/directive/base.rb, line 47 def directive_eval(directive, &blk) directive.instance_eval(&blk) if block_given? directive end
do_all!(postfix)
click to toggle source
# File lib/dapp/config/directive/base.rb, line 41 def do_all!(postfix) methods .select { |m| m.to_s.end_with? postfix } .each(&method(:send)) end
initialize_variables()
click to toggle source
# File lib/dapp/config/directive/base.rb, line 37 def initialize_variables do_all!('_init_variables!') end
marshal_clone(obj)
click to toggle source
# File lib/dapp/config/directive/base.rb, line 113 def marshal_clone(obj) Marshal.load(Marshal.dump(obj)) end
marshal_dump()
click to toggle source
# File lib/dapp/config/directive/base.rb, line 83 def marshal_dump instance_variables .reject {|variable| ref_variables.include? variable} .map {|variable| [variable, instance_variable_get(variable)]} end
marshal_load(variable_values)
click to toggle source
# File lib/dapp/config/directive/base.rb, line 89 def marshal_load(variable_values) variable_values.each { |variable, value| instance_variable_set(variable, clone_variable(value)) } self end
pass_to(obj, clone_method = :clone)
click to toggle source
# File lib/dapp/config/directive/base.rb, line 57 def pass_to(obj, clone_method = :clone) passed_directives.each do |directive| obj.instance_variable_set(directive, clone_variable(instance_variable_get(directive), clone_method)) end obj end
passed_directives()
click to toggle source
# File lib/dapp/config/directive/base.rb, line 75 def passed_directives [] end
path_format(path)
click to toggle source
# File lib/dapp/config/directive/base.rb, line 26 def path_format(path) path = path.to_s path = path.chomp('/') unless path == '/' path end
ref_variables()
click to toggle source
# File lib/dapp/config/directive/base.rb, line 79 def ref_variables [:@dapp] end
sub_directive_eval() { || ... }
click to toggle source
# File lib/dapp/config/directive/base.rb, line 52 def sub_directive_eval yield if block_given? self end
validate_compliance!(pattern, value, error_code)
click to toggle source
# File lib/dapp/config/directive/base.rb, line 32 def validate_compliance!(pattern, value, error_code) return if /^#{pattern}$/ =~ value raise ::Dapp::Error::Config, code: error_code, data: { value: value, pattern: pattern } end