Module: Etoji::Jikkan

Defined in:
lib/etoji/jikkan.rb

Defined Under Namespace

Classes: Kan, NotFound

Constant Summary collapse

SOURCE_FILE_PATH =
File.expand_path('../../../db/jikkan.json', __FILE__)
MEMBERS =
JSON.parse(File.read(SOURCE_FILE_PATH), symbolize_names: true).map { |attributes|
  Kan.new(
    number: attributes[:number],
    character: attributes[:character],
    character_hiragana_on: attributes[:character_hiragana_on],
    character_hiragana_kun: attributes[:character_hiragana_kun],
  )
}.freeze

Class Method Summary collapse

Class Method Details

.allObject



19
20
21
# File 'lib/etoji/jikkan.rb', line 19

def self.all
  MEMBERS
end

.find_by_number(number) ⇒ Object



23
24
25
26
# File 'lib/etoji/jikkan.rb', line 23

def self.find_by_number(number)
  @kans_by_number ||= MEMBERS.each_with_object({}) { |kan, result| result[kan.number] = kan }
  @kans_by_number[number] or raise NotFound.new("Number: #{number} is not found")
end