class Dry::Initializer::Builders::Reader
@private
def self.[](definition)
def self.[](definition) new(definition).call end
def attribute_line
def attribute_line return unless @reader "attr_reader :#{@target}" unless @null end
def call
def call lines.flatten.compact.join("\n") end
def initialize(definition)
def initialize(definition) @target = definition.target @ivar = definition.ivar @null = definition.null @reader = definition.reader end
def lines
def lines [undef_line, attribute_line, method_lines, type_line] end
def method_lines
def method_lines return unless @reader return unless @null [ "def #{@target}", " #{@ivar} unless Dry::Initializer::UNDEFINED == #{@ivar}", "end" ] end
def type_line
def type_line "#{@reader} :#{@target}" if %i[private protected].include? @reader end
def undef_line
def undef_line "undef :#{@target} if method_defined?(:#{@target})" \ " || private_method_defined?(:#{@target})" \ " || protected_method_defined?(:#{@target})" end