Class: CW::Callsign

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

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

Instance Method Details

#*(number) ⇒ Object



50
51
52
53
54
55
56
# File 'lib/cw/callsign.rb', line 50

def * number
  calls = []
  number.times do
    calls << construct
  end
  calls
end

#callsignsObject



6
7
8
9
10
11
# File 'lib/cw/callsign.rb', line 6

def callsigns
  if @callsigns.nil?
    @callsigns = load_callsigns
  end
  @callsigns
end

#constructObject



42
43
44
45
46
47
48
# File 'lib/cw/callsign.rb', line 42

def construct
  call = ''
  0.upto(4) do |count|
    call << select_part(partial_name(count))
  end
  call.strip
end

#load_callsignsObject



13
14
15
16
17
# File 'lib/cw/callsign.rb', line 13

def load_callsigns
  File.open(CALLS_FILENAME, "r") do |calls|
    YAML::load(calls)
  end
end

#partial_name(count) ⇒ Object



38
39
40
# File 'lib/cw/callsign.rb', line 38

def partial_name count
  "partial_#{count}".to_sym
end

#rand_valObject



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

def rand_val
  rand(100)
end

#select_part(country = :uk, partial) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/cw/callsign.rb', line 24

def select_part country = :uk, partial
  pc = rand_val
  weight = callsigns[country][partial][:weight]
  tot_wt = 0
  weight.each_with_index do |wt, idx|
    tot_wt += wt
    if pc < tot_wt
      part = callsigns[country][partial][:option][idx]
      return part unless(part.class == Range)
      return part.to_a.sample
    end
  end
end