Module: JLPT::KanjiDetails

Defined in:
lib/jlpt/core/kanji_details.rb

Overview

Kanji Details Inspector.

Provides stroke count, radical, On'yomi, Kun'yomi, and JLPT levels for Kanji.

Constant Summary collapse

DATA_PATH =
File.expand_path('../data/kanji_details.json', __dir__)
MUTEX =
Mutex.new

Class Method Summary collapse

Class Method Details

.details_for_text(text) ⇒ Array<Hash>

Get details for all unique kanji in text

Parameters:

  • text (String)

    Japanese text

Returns:

  • (Array<Hash>)

    array of kanji detail hashes



33
34
35
36
# File 'lib/jlpt/core/kanji_details.rb', line 33

def details_for_text(text)
  kanji_list = Kanji.extract(text)
  kanji_list.filter_map { |k| lookup(k) }
end

.lookup(char) ⇒ Hash?

Lookup Kanji details for a single character

Parameters:

  • char (String)

    Kanji character

Returns:

  • (Hash, nil)

    kanji details hash or default details



20
21
22
23
24
25
26
27
# File 'lib/jlpt/core/kanji_details.rb', line 20

def lookup(char)
  return nil if char.nil? || char.to_s.strip.empty?

  kanji_char = char.to_s.strip[0]
  return nil unless kanji_char.match?(/[\u4E00-\u9FFF]/)

  fetch_details(kanji_char)
end