Module: JLPT::ExamReadiness

Defined in:
lib/jlpt/analyzers/exam_readiness.rb

Overview

Exam Readiness and Level Coverage Evaluator.

Evaluates how well input text aligns with a target JLPT exam level (N5-N1), calculating target level vocabulary density and readiness score.

Constant Summary collapse

LEVEL_THRESHOLD_MAP =
{ n5: 1, n4: 2, n3: 3, n2: 4, n1: 5 }.freeze

Class Method Summary collapse

Class Method Details

.evaluate(text, target_level: :n3) ⇒ Hash

Evaluate readiness score for a target JLPT level

Parameters:

  • text (String)

    Japanese text

  • target_level (Symbol, String) (defaults to: :n3)

    target exam level (:n5, :n4, :n3, :n2, :n1)

Returns:

  • (Hash)

    exam readiness metrics



18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/jlpt/analyzers/exam_readiness.rb', line 18

def evaluate(text, target_level: :n3)
  target_sym = target_level.to_s.downcase.to_sym
  target_val = LEVEL_THRESHOLD_MAP[target_sym] || 3

  res = JLPT.analyze(text)
  current_val = LEVEL_THRESHOLD_MAP[res.recommended_level] || 1

  readiness = calculate_readiness_score(current_val, target_val, res.score)
  status = determine_readiness_status(readiness)

  { target_level: target_sym, current_level: res.recommended_level,
    readiness_score: readiness, status: status }
end