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