Module: Seimi::CLI

Defined in:
lib/seimi/cli.rb

Class Method Summary collapse

Class Method Details

.matrix_text(equation) ⇒ Object



54
55
56
57
58
59
60
61
# File 'lib/seimi/cli.rb', line 54

def matrix_text(equation)
  lines = ["元素釣合の盤に候"]
  equation.elements.each_with_index do |element, index|
    row = equation.matrix[index].map { |value| Kanji.rational(value) }.join(" ")
    lines << "#{element}: #{row}"
  end
  lines.join("\n")
end

.run(argv) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/seimi/cli.rb', line 9

def run(argv)
  command, *args = argv

  case command
  when nil, "tasuke"
    puts usage
    0
  when "--version"
    puts "seimi #{VERSION}"
    0
  when "kaibou"
    return usage_error if args.empty?

    formula = Formula.parse(args.join)
    puts formula.to_kobun
    0
  when "tsuriai"
    return usage_error if args.empty?

    equation = Equation.balance(args.join(" "))
    puts "〔反応式 釣合の覚〕"
    puts matrix_text(equation)
    puts equation.to_kobun
    0
  else
    usage_error
  end
rescue Seimi::Error => error
  warn "咎: #{error.message}"
  1
end

.usageObject



46
47
48
49
50
51
52
# File 'lib/seimi/cli.rb', line 46

def usage
  <<~TEXT
    用法: seimi kaibou <化学式> にて式を解剖し分子の量を量り申し候
    用法: seimi tsuriai "<反応式>" にて割合の数を釣り合わせ申し候。反応式は引用符にて括り給うべく候
    用法: seimi tasuke にて此の助けを開き給え
  TEXT
end

.usage_errorObject



41
42
43
44
# File 'lib/seimi/cli.rb', line 41

def usage_error
  puts usage
  2
end