class GreekABC::Alphabet

Attributes

letters[RW]

Public Class Methods

new() click to toggle source
# File lib/greek_abc/alphabet.rb, line 12
def initialize
  @letters = ALPHABET.map.with_index(1) do |(name, letter), index|
    Letter.new(position: index, name: name, lower: letter,
               upper: letter.upcase)
  end
end

Public Instance Methods

find_letter_by(**lookup) click to toggle source
# File lib/greek_abc/alphabet.rb, line 19
def find_letter_by(**lookup)
  parameter = lookup.keys.first
  value = lookup.values.first

  unless letter_parameter?(parameter)
    raise LetterLookupError, "Letter does not have parameter `#{parameter}`"
  end

  result = @letters.find do |letter|
    letter if letter.send(parameter.to_sym) == value
  end

  unless result
    raise LetterNotFoundError, "Letter with `#{parameter}: #{value}` not found"
  end

  result
end
to_h() click to toggle source
# File lib/greek_abc/alphabet.rb, line 38
def to_h
  @letters.each_with_object({}) do |letter, hash|
    hash[letter.name.to_s] = {
      position: letter.position,
      lower: letter.lower,
      upper: letter.upper
    }
  end
end
to_s() click to toggle source
# File lib/greek_abc/alphabet.rb, line 48
def to_s
  @letters
end

Private Instance Methods

letter_parameter?(parameter) click to toggle source
# File lib/greek_abc/alphabet.rb, line 54
def letter_parameter?(parameter)
  parameters = %i[name position lower upper]
  parameters.include?(parameter)
end