module DefInitialize::AccessorsBuilder

Public Class Methods

build(accessors, readers_mode:, writers_mode:) click to toggle source
# File lib/def_initialize/accessors_builder.rb, line 6
def build(accessors, readers_mode:, writers_mode:)
  check_option!(readers_mode)
  check_option!(writers_mode)

  result = ''.dup

  if readers_mode
    result << "#{readers_mode}\n"
    result << "attr_reader #{accessors.join(', ')}\n"
  end

  if writers_mode
    result << "#{writers_mode}\n"
    result << "attr_writer #{accessors.join(', ')}\n"
  end

  result
end

Private Class Methods

check_option!(value) click to toggle source
# File lib/def_initialize/accessors_builder.rb, line 27
def check_option!(value)
  return unless value
  return if %w[private public protected].include?(value.to_s)

  raise ArgumentError,
        "Uknown value #{value}. Must be :private, :public, :protected or nil"
end