Module: Conifer::ClassMethods

Defined in:
lib/conifer.rb

Overview

rubocop:disable Metrics/ParameterLists

Instance Method Summary collapse

Instance Method Details

#conifer(name, prefix: nil, dir: nil, format: :yml, method: ::File.basename(name.to_s, ".#{format}"), singleton: false, allowed_classes: []) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/conifer.rb', line 13

def conifer(name, prefix: nil, dir: nil, format: :yml, method: ::File.basename(name.to_s, ".#{format}"),
            singleton: false, allowed_classes: [])
  dir ||= ::File.expand_path(::File.dirname(caller_locations.first.path))

  body = proc do
    return instance_variable_get("@conifer_#{method}") if instance_variable_defined?("@conifer_#{method}")

    instance_variable_set "@conifer_#{method}",
                          Conifer::File.new(name, prefix: prefix, dir: dir, allowed_classes: allowed_classes)
                            .tap(&:validate!)
  end

  singleton ? define_singleton_method(method, &body) : define_method(method, &body)
end