Module: Katsuyoujin

Defined in:
lib/katsuyoujin.rb,
lib/katsuyoujin/base.rb,
lib/katsuyoujin/verb.rb,
lib/katsuyoujin/version.rb,
lib/katsuyoujin/analyzer.rb

Defined Under Namespace

Classes: Analyzer, Base, Verb

Constant Summary collapse

GODAN_IRU_ERU =
YAML.load_file(File.join(Katsuyoujin.rules, 'godan/iru_eru.yml')).freeze
GODAN_KURU_SURU =
YAML.load_file(File.join(Katsuyoujin.rules, 'godan/kuru_suru.yml')).freeze
ICHIDAN_BASE_TABLE =
YAML.load_file File.join(Katsuyoujin.rules, 'ichidan/base.yml').freeze
GODAN_BASE_TABLE =
YAML.load_file File.join(Katsuyoujin.rules, 'godan/base.yml').freeze
IRREGULAR_BASE_TABLE =
YAML.load_file File.join(Katsuyoujin.rules, 'irregular/base.yml').freeze
CONJUGATIONS =
{
  'ichidan' => YAML.load_file(File.join(rules, 'ichidan/conjugations.yml')).freeze,
  'godan' => YAML.load_file(File.join(rules, 'godan/conjugations.yml')).freeze,
  'irregular' => YAML.load_file(File.join(rules, 'irregular/conjugations.yml')).freeze
}
VERSION =
'0.0.2'

Class Method Summary collapse

Class Method Details

.conjugate(word, *args, category: nil, hiragana: true) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/katsuyoujin.rb', line 30

def self.conjugate(word, *args, category: nil, hiragana: true)
  verb = Verb.new word

  vcat = category || verb.category
  vcat = 'irregular' if ['kuru', 'suru'].include?(vcat)

  rules = args.inject(CONJUGATIONS[vcat]) { |a, e| a[e] || {} }
  return unless rules['base']

  base = Base.new(verb, rules['base']).conjugate category: category, hiragana: hiragana
  base + rules['attachment']
end

.rootObject



9
10
11
# File 'lib/katsuyoujin.rb', line 9

def self.root
  File.dirname __dir__
end

.rulesObject



13
14
15
# File 'lib/katsuyoujin.rb', line 13

def self.rules
  File.join root, 'rules'
end