Class: Morsby::CLI

Inherits:
Object
  • Object
show all
Defined in:
lib/morsby/cli.rb

Constant Summary collapse

PUNCTUATION_CODES =
{
  '?' => '..--..',
  '.' => '.-.-.-',
  ',' => '--..--',
  '/' => '-..-.',
  '-' => '-....-',
  '(' => '-.--.',
  ')' => '-.--.-'
}
DEFAULT_DOT_UNIT =

デフォルト(ビギナーモード)とプロモードの音長

0.15
PRO_DOT_UNIT =
0.08

Instance Method Summary collapse

Instance Method Details

#run(argv) ⇒ Object

モールス仕様: 短音=1拍、長音=3拍、文字内パーツ間=1拍、文字間=3拍、単語間=7拍だが、文字間は3だと短く感じたので4に修正した単語間はスペースで分割し、その際7拍分空ける



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/morsby/cli.rb', line 31

def run(argv)
  @language = :ja
  if (lang_index = argv.index("--lang")) || (lang_index = argv.index("-lang"))
    desired_lang = argv[lang_index + 1]
    @language = :en if desired_lang && desired_lang.downcase == "en"
    argv.delete_at(lang_index + 1)
    argv.delete_at(lang_index)
  end

  # プロモード判定
  @dot_unit = DEFAULT_DOT_UNIT
  if (pro_index = argv.index("--pro"))
    @dot_unit = PRO_DOT_UNIT
    argv.delete_at(pro_index)
  end

  @dash_unit = @dot_unit * 3
  @intra_char_gap = @dot_unit
  @letter_gap = @dot_unit * 3
  @word_gap = @dot_unit * 7

  if argv.empty?
    print_help
    return
  end

  input_str = argv.join(" ")
  if input_str.start_with?("-h") || input_str.start_with?("-help")
    print_help
    return
  elsif input_str.start_with?("-learn")
    @mode = :learn
    learn_mode_interactive
  else
    @mode = :output
    unless play_installed? && !on_windows?
      show_audio_error_message
      return
    end
    convert_and_sound(input_str)
  end
end