Class: CW::Cl

Inherits:
Object
  • Object
show all
Includes:
FileDetails
Defined in:
lib/cw/cl.rb

Overview

class Cl performs command-line processing

Constant Summary

Constants included from FileDetails

FileDetails::ABBREVIATIONS, FileDetails::AUDIO_DIR, FileDetails::BOOKMARK_FILE, FileDetails::CALLS, FileDetails::CALLS_FILENAME, FileDetails::CODE, FileDetails::CODE_FILENAME, FileDetails::CONFIG_FILENAME, FileDetails::CONFIG_PATH, FileDetails::DASH_FILENAME, FileDetails::DATA, FileDetails::DEF_AUDIO_FILENAME, FileDetails::DICT_DIR, FileDetails::DICT_FILENAME, FileDetails::DOT_AUDIO_DIR, FileDetails::DOT_CW_DIR, FileDetails::DOT_FILENAME, FileDetails::E_SPACE_FILENAME, FileDetails::HERE, FileDetails::Q_CODES, FileDetails::ROOT, FileDetails::SPACE_FILENAME, FileDetails::TEXT, FileDetails::USER_CONFIG_PATH, FileDetails::WORK_DIR

Instance Method Summary collapse

Methods included from FileDetails

#audio_dir, #audio_filename, #dash_path, #default_audio_dir, #dot_audio_dir, #dot_cw_dir, #dot_path, #e_space_path, #init_filenames, #process_audio_dir, #process_dot_audio, #process_dot_cw, #progress_file, #space_path, #user_audio_dir

Constructor Details

#initializeCl

Returns a new instance of Cl.



11
12
13
14
15
16
17
# File 'lib/cw/cl.rb', line 11

def initialize
  @tone = {
    sinewave: 0,
    sawtooth: 1,
    squarewave: 2
  }
end

Instance Method Details

#build_command_lineObject



97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# File 'lib/cw/cl.rb', line 97

def build_command_line
  [ cl_wpm,
    cl_effective_wpm,
    cl_word_spacing,
    cl_frequency,
    cl_squarewave,
    cl_sawtooth,
    cl_sinewave,
    cl_author,
    cl_title,
    cl_noise,
    cl_audio_filename,
    cl_quality,
    cl_command_line
  ].collect{|param| param}.join
end

#cl_audio_filenameObject



71
72
73
# File 'lib/cw/cl.rb', line 71

def cl_audio_filename
  "-o \"#{File.join(audio_dir, audio_filename)}\" "
end

#cl_authorObject



56
57
58
59
# File 'lib/cw/cl.rb', line 56

def cl_author
  author = Cfg.config["author"]
  author ? "-a \"#{author}\" " : ''
end

#cl_command_lineObject



92
93
94
95
# File 'lib/cw/cl.rb', line 92

def cl_command_line
  cl = Cfg.config["command_line"]
  cl ? "#{cl}" : ''
end

#cl_echo(words) ⇒ Object



118
119
120
# File 'lib/cw/cl.rb', line 118

def cl_echo words
  "echo #{words} | #{ebook2cw_path} #{build_command_line}"
end

#cl_effective_wpmObject



24
25
26
27
# File 'lib/cw/cl.rb', line 24

def cl_effective_wpm
  ewpm = Cfg.config["effective_wpm"]
  ewpm ? "-e #{ewpm} " : ''
end

#cl_frequencyObject



34
35
36
37
# File 'lib/cw/cl.rb', line 34

def cl_frequency
  freq = Cfg.config["frequency"]
  freq ? "-f #{freq} " : ''
end

#cl_full(input) ⇒ Object



122
123
124
# File 'lib/cw/cl.rb', line 122

def cl_full input
  "#{ebook2cw_path} #{build_command_line} #{input}"
end

#cl_noiseObject



66
67
68
69
# File 'lib/cw/cl.rb', line 66

def cl_noise
  Cfg.config["noise"] ?
    "-N 10 -B 800 " : ''
end

#cl_qualityObject



83
84
85
86
87
88
89
90
# File 'lib/cw/cl.rb', line 83

def cl_quality
  quality = Cfg.config["quality"]
  if quality && quality.class == 1.class
    "-q #{quality} "
  else
    coarse_quality quality
  end
end

#cl_sawtoothObject



48
49
50
# File 'lib/cw/cl.rb', line 48

def cl_sawtooth
  wave "sawtooth"
end

#cl_sinewaveObject



52
53
54
# File 'lib/cw/cl.rb', line 52

def cl_sinewave
  wave "sinewave"
end

#cl_squarewaveObject



44
45
46
# File 'lib/cw/cl.rb', line 44

def cl_squarewave
  wave 'squarewave'
end

#cl_titleObject



61
62
63
64
# File 'lib/cw/cl.rb', line 61

def cl_title
  title = Cfg.config["title"]
  title ? "-t \"#{title}\" " : ''
end

#cl_word_spacingObject



29
30
31
32
# File 'lib/cw/cl.rb', line 29

def cl_word_spacing
  ws = Cfg.config["word_spacing"]
  ws ? "-W #{ws} " : ''
end

#cl_wpmObject



19
20
21
22
# File 'lib/cw/cl.rb', line 19

def cl_wpm
  wpm = Cfg.config["wpm"]
  wpm ? "-w #{wpm} " : ''
end

#coarse_quality(quality) ⇒ Object



75
76
77
78
79
80
81
# File 'lib/cw/cl.rb', line 75

def coarse_quality(quality)
  {
    :high =>   "-q 1 ",
    :medium => "-q 5 ",
    :low =>    "-q 9 "
  }[quality]
end

#ebook2cw_pathObject



114
115
116
# File 'lib/cw/cl.rb', line 114

def ebook2cw_path
  Cfg.config["ebook2cw_path"] || 'ebook2cw'
end

#wave(type) ⇒ Object



39
40
41
42
# File 'lib/cw/cl.rb', line 39

def wave type
  return '' unless(Cfg.config["tone"].to_s == type)
  "-T #{@tone[type.to_sym]} "
end