class Dry::Initializer::Builders::Reader

@private

Public Class Methods

[](definition) click to toggle source
# File lib/dry/initializer/builders/reader.rb, line 8
def self.[](definition)
  new(definition).call
end
new(definition) click to toggle source
# File lib/dry/initializer/builders/reader.rb, line 18
def initialize(definition)
  @target = definition.target
  @ivar   = definition.ivar
  @null   = definition.null
  @reader = definition.reader
end

Public Instance Methods

call() click to toggle source
# File lib/dry/initializer/builders/reader.rb, line 12
def call
  lines.flatten.compact.join("\n")
end

Private Instance Methods

attribute_line() click to toggle source
# File lib/dry/initializer/builders/reader.rb, line 35
def attribute_line
  return unless @reader

  "attr_reader :#{@target}" unless @null
end
lines() click to toggle source
# File lib/dry/initializer/builders/reader.rb, line 25
def lines
  [undef_line, attribute_line, method_lines, type_line]
end
method_lines() click to toggle source
# File lib/dry/initializer/builders/reader.rb, line 41
def method_lines
  return unless @reader
  return unless @null

  [
    "def #{@target}",
    "  #{@ivar} unless Dry::Initializer::UNDEFINED == #{@ivar}",
    "end"
  ]
end
type_line() click to toggle source
# File lib/dry/initializer/builders/reader.rb, line 52
def type_line
  "#{@reader} :#{@target}" if %i[private protected].include? @reader
end
undef_line() click to toggle source
# File lib/dry/initializer/builders/reader.rb, line 29
def undef_line
  "undef :#{@target} if method_defined?(:#{@target})" \
    "  || private_method_defined?(:#{@target})" \
    "  || protected_method_defined?(:#{@target})"
end