call_sign 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +29 -0
- data/Rakefile +1 -0
- data/call_sign.gemspec +25 -0
- data/lib/call_sign/call_sign.rb +49 -0
- data/lib/call_sign/itu_prefix.rb +254 -0
- data/lib/call_sign/version.rb +3 -0
- data/lib/call_sign.rb +6 -0
- metadata +96 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: d384c9c5e7d236f591b784670ab691f13889b7a8
|
4
|
+
data.tar.gz: a9ed0718d149af8411a272321bf7006395649c84
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: b9b9e883c7f8c5713087543afe88861d33c49454ca9bc32e3606ac99e255458fa66c7dbb508d3bc52d5386700a8a64cc9e508abac12580d1968c8ae6f64274aa
|
7
|
+
data.tar.gz: 8095ca77ce9c0353dbf0f6dbd705dac1763e7773adc0672735bd78864d5ecb00939d6ed16541a026b122aabfc42364fbe19cf1b8cc0efb522ebed67413d56a0c
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2014 Kevin Elliott
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# call_sign
|
2
|
+
|
3
|
+
TODO: Write a gem description
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
gem 'call_sign'
|
10
|
+
|
11
|
+
And then execute:
|
12
|
+
|
13
|
+
$ bundle
|
14
|
+
|
15
|
+
Or install it yourself as:
|
16
|
+
|
17
|
+
$ gem install call_sign
|
18
|
+
|
19
|
+
## Usage
|
20
|
+
|
21
|
+
TODO: Write usage instructions here
|
22
|
+
|
23
|
+
## Contributing
|
24
|
+
|
25
|
+
1. Fork it ( http://github.com/kevinelliott/call_sign/fork )
|
26
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
27
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
28
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
29
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/call_sign.gemspec
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'call_sign/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "call_sign"
|
8
|
+
spec.version = CallSign::VERSION
|
9
|
+
spec.authors = ["Kevin Elliott"]
|
10
|
+
spec.email = ["kevin@welikeinc.com"]
|
11
|
+
spec.summary = %q{Handle and process ITU Call Signs}
|
12
|
+
spec.description = %q{Handle and process ITU Call Signs}
|
13
|
+
spec.homepage = "http://github.com/kevinelliott/call_sign"
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0")
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_dependency 'countries'
|
22
|
+
|
23
|
+
spec.add_development_dependency "bundler", "~> 1.5"
|
24
|
+
spec.add_development_dependency "rake"
|
25
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
module CallSign
|
2
|
+
class CallSign
|
3
|
+
|
4
|
+
EXTRACT_REGEX = /^(?<prefix>[BFGIKMNRW]{1}|[A-Z]{1}[0-9]{1}|[0-9][A-Z]|[A-Z]|[0-9A-Z]{3})(?<separator>[0-9]{1})(?<suffix>[0-9A-Z]{1,5})$/
|
5
|
+
|
6
|
+
def initialize(call_sign)
|
7
|
+
components = CallSign.extract(call_sign)
|
8
|
+
|
9
|
+
if components.is_a? Hash
|
10
|
+
@call_sign = components[:text]
|
11
|
+
@prefix = ITUPrefix.parse(components[:prefix])
|
12
|
+
@prefix_string = components[:prefix]
|
13
|
+
@separator_string = components[:separator]
|
14
|
+
@suffix_string = components[:suffix]
|
15
|
+
@text = components[:text]
|
16
|
+
@valid = true
|
17
|
+
else
|
18
|
+
@call_sign = nil
|
19
|
+
@prefix_string = nil
|
20
|
+
@separator_string = nil
|
21
|
+
@suffix_string = nil
|
22
|
+
@text = call_sign
|
23
|
+
@valid = false
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def valid?
|
28
|
+
@valid
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.extract(call_sign)
|
32
|
+
# Check for exceptions
|
33
|
+
# 1-letter prefix
|
34
|
+
# 2-letter prefix
|
35
|
+
# 3-letter prefix
|
36
|
+
# Match regex
|
37
|
+
match = EXTRACT_REGEX.match(call_sign)
|
38
|
+
return if !match
|
39
|
+
|
40
|
+
{ text: match.string, prefix: match[:prefix], separator: match[:separator], suffix: match[:suffix] }
|
41
|
+
end
|
42
|
+
|
43
|
+
|
44
|
+
def self.parse(call_sign)
|
45
|
+
CallSign.new(call_sign)
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,254 @@
|
|
1
|
+
require 'iso3166'
|
2
|
+
|
3
|
+
module CallSign
|
4
|
+
class ITUPrefix
|
5
|
+
|
6
|
+
# TODO: Find a way to refactor this into datafile without losing performance
|
7
|
+
PREFIXES = {}
|
8
|
+
|
9
|
+
# Extracted from the ITU Table of International Call Sign Series (Appendix 42)
|
10
|
+
# Ranges: http://www.itu.int/online/mms/glad/cga_callsign.sh?lng=E
|
11
|
+
# Keys: http://en.wikipedia.org/wiki/ISO_3166-1_alpha-3
|
12
|
+
PREFIXES_BY_COUNTRY = {
|
13
|
+
afg: ['T6', 'T6A'..'T6Z', 'YA', 'YAA'..'YAZ'],
|
14
|
+
ago: ['D2A'..'D3Z'],
|
15
|
+
alb: ['ZA', 'ZAA'..'ZAZ'],
|
16
|
+
and: ['C3A'..'C3Z'],
|
17
|
+
are: ['A6A'..'A6Z'],
|
18
|
+
arg: ['AYA'..'AZZ', 'L2A'..'L9Z', 'LOA'..'LWZ'],
|
19
|
+
arm: ['EKA'..'EKZ'],
|
20
|
+
asm: ['5WA'..'5WZ'],
|
21
|
+
atg: ['V2', 'V2A'..'V2Z'],
|
22
|
+
aus: ['AX', 'AXA'..'AXZ', 'VH'..'VN', 'VHA'..'VNZ', 'VZ', 'VZA'..'VZZ'],
|
23
|
+
aut: ['OEA'..'OEZ'],
|
24
|
+
aze: ['4JA'..'4KA'],
|
25
|
+
bdi: ['9UA'..'9UZ'],
|
26
|
+
bel: ['ONA'..'OTZ'],
|
27
|
+
ben: ['TY', 'TYA'..'TYZ'],
|
28
|
+
bes: ['PJ', 'PJA'..'PJZ'],
|
29
|
+
bfa: ['XT', 'XTA'..'XTZ'],
|
30
|
+
bgr: ['LZA'..'LZZ'],
|
31
|
+
bhr: ['A9A'..'A9Z'],
|
32
|
+
bhs: ['C6A'..'C6Z'],
|
33
|
+
bih: ['E7A'..'E7Z'],
|
34
|
+
blr: ['EUA'..'EWZ', 'S2A'..'S3Z'],
|
35
|
+
blz: ['V3', 'V3A'..'V3Z'],
|
36
|
+
bol: ['CPA'..'CPZ'],
|
37
|
+
bra: ['PP'..'PY', 'PPA'..'PYZ', 'ZV'..'ZZ', 'ZVA'..'ZZZ'],
|
38
|
+
brb: ['8PA'..'8PZ'],
|
39
|
+
brn: ['V8', 'V8A'..'V8Z'],
|
40
|
+
btn: ['A5A'..'A5Z'],
|
41
|
+
bwa: ['8OA'..'8OZ', 'A2A'..'A2Z'],
|
42
|
+
caf: ['TL', 'TLA'..'TLZ'],
|
43
|
+
can: ['CF'..'CK', 'CFA'..'CKZ', 'CY'..'CZ', 'CYA'..'CZZ', 'VA'..'VG', 'VAA'..'VGZ', 'VO', 'VOA'..'VOZ', 'VX'..'VY', 'VXA'..'VYZ', 'XJ'..'XO', 'XJA'..'XOZ'],
|
44
|
+
che: ['HBA'..'HBZ', 'HEA'..'HEZ'],
|
45
|
+
chl: ['3GA'..'3GZ', 'CA'..'CE', 'CAA'..'CEZ', 'XQ'..'XR', 'XQA'..'XRZ'],
|
46
|
+
chn: ['3HA'..'3UZ', 'B', 'BA'..'BZ', 'BAA'..'BZZ', 'VR', 'VRA'..'VRZ', 'XS', 'XSA'..'XSZ', 'XX', 'XXA'..'XXZ', 'XS', 'XSA'..'XSZ', 'XX', 'XXA'..'XXZ'],
|
47
|
+
civ: ['TU', 'TUA'..'TUZ'],
|
48
|
+
cmr: ['TJ', 'TJA'..'TJZ'],
|
49
|
+
cod: ['9OA'..'9TZ'],
|
50
|
+
cog: ['TN', 'TNA'..'TNZ'],
|
51
|
+
cok: ['E5A'..'E5Z'],
|
52
|
+
col: ['5JA'..'5KZ', 'HJA'..'HKZ'],
|
53
|
+
com: ['D6A'..'D6Z'],
|
54
|
+
cpv: ['D4A'..'D4Z'],
|
55
|
+
cri: ['TE', 'TEA'..'TEZ', 'TI', 'TIA'..'TIZ'],
|
56
|
+
cub: ['CL'..'CM', 'CLA'..'CMZ', 'CO', 'COA'..'COZ', 'T4', 'T4A'..'T4Z'],
|
57
|
+
cuw: ['PJA'..'PJZ'],
|
58
|
+
cyp: ['5BA'..'5BZ', 'C4A'..'C4Z', 'H2A'..'H2Z', 'P3A'..'P3Z'],
|
59
|
+
cze: ['OKA'..'OLZ'],
|
60
|
+
den: ['XP', 'XPA'..'XPZ'],
|
61
|
+
deu: ['DA'..'DR', 'DAA'..'DRZ', 'Y2A'..'Y9Z'],
|
62
|
+
dji: ['J2A'..'J2Z'],
|
63
|
+
dma: ['J7A'..'J7Z'],
|
64
|
+
dnk: ['5PA'..'5QZ', 'OUA'..'OZZ'],
|
65
|
+
dom: ['HIA'..'HIZ'],
|
66
|
+
dza: ['7RA'..'7RZ', '7TA'..'7YZ'],
|
67
|
+
ecu: ['HCA'..'HDZ'],
|
68
|
+
egy: ['6A'..'6B', '6AA'..'6BZ', 'SSA'..'SSM', 'SU', 'SUA'..'SUZ'],
|
69
|
+
eri: ['E3A'..'E3Z'],
|
70
|
+
esp: ['AMA'..'AOZ', 'EAA'..'EHZ'],
|
71
|
+
est: ['ESA'..'ESZ'],
|
72
|
+
eth: ['9EA'..'9FZ', 'ETA'..'ETZ'],
|
73
|
+
fin: ['OFA'..'OJZ'],
|
74
|
+
fji: ['3DN'..'3DZ'],
|
75
|
+
fra: ['F', 'FA'..'FZ', 'FAA'..'FZZ', 'HW'..'HY', 'HWA'..'HYZ', 'TH', 'THA'..'THZ', 'TK', 'TKA'..'TKZ', 'TM', 'TMA'..'TMZ', 'TO'..'TQ', 'TOA'..'TQZ', 'TV'..'TX', 'TVA'..'TXZ'],
|
76
|
+
fsm: ['V6', 'V6A'..'V6Z'],
|
77
|
+
gab: ['TR', 'TRA'..'TRZ'],
|
78
|
+
gbr: ['2AA'..'2ZZ', 'G', 'GA'..'GZ', 'GAA'..'GZZ', 'M', 'MA'..'MZ', 'MAA'..'MZZ', 'VP'..'VQ', 'VPA'..'VQZ', 'VS', 'VSA'..'VSZ', 'ZB'..'ZJ', 'ZBA'..'ZJZ', 'ZN'..'ZO', 'ZNA'..'ZOZ', 'ZQ', 'ZQA'..'ZQZ', 'ZB'..'ZJ', 'ZBA'..'ZJZ', 'ZN'..'ZO', 'ZNA'..'ZOZ', 'ZQ', 'ZQA'..'ZQZ'],
|
79
|
+
geo: ['4LA'..'4LZ'],
|
80
|
+
gha: ['9GA'..'9GZ'],
|
81
|
+
gin: ['3XA'..'3XZ'],
|
82
|
+
gmb: ['C5A'..'C5Z'],
|
83
|
+
gnb: ['J5A'..'J5Z'],
|
84
|
+
gnq: ['3CA'..'3CQ'],
|
85
|
+
grc: ['J4A'..'J4Z', 'SV'..'SZ', 'SVA'..'SZZ'],
|
86
|
+
grd: ['J3A'..'J3Z'],
|
87
|
+
gtm: ['TD', 'TDA'..'TDZ', 'TG', 'TGA'..'TGZ'],
|
88
|
+
guy: ['8RA'..'8RZ'],
|
89
|
+
hnd: ['HQA'..'HRZ'],
|
90
|
+
hun: ['HAA'..'HAZ', 'HGA'..'HGZ'],
|
91
|
+
hrv: ['9AA'..'9AZ'],
|
92
|
+
hti: ['4VA'..'4VZ', 'HHA'..'HHZ'],
|
93
|
+
idn: ['7AA'..'7IZ', '8AA'..'8IZ', 'JZ', 'JZA'..'JZZ', 'PK'..'PO', 'PKA'..'POZ', 'YB'..'YH', 'YBA'..'YHZ'],
|
94
|
+
ind: ['8TA'..'8YZ', 'AT'..'AW', 'ATA'..'AWZ', 'VT'..'VW', 'VTA'..'VWZ'],
|
95
|
+
irl: ['EI'..'EJ', 'EIA'..'EJZ', 'TF', 'TFA'..'TFZ'],
|
96
|
+
irn: ['9BA'..'9DZ', 'EPA'..'EQZ'],
|
97
|
+
irq: ['HN', 'HNA'..'HNZ', 'YI', 'YIA'..'YIZ'],
|
98
|
+
isr: ['4XA'..'4XZ', '4ZA'..'4ZZ'],
|
99
|
+
ita: ['I', 'IAA'..'IZZ'],
|
100
|
+
jam: ['6YA'..'6YZ'],
|
101
|
+
jor: ['JYA'..'JYZ'],
|
102
|
+
jpn: ['7JA'..'7NZ', '8JA'..'8NZ', 'JAA'..'JSZ'],
|
103
|
+
kaz: ['UN'..'UQ', 'UNA'..'UQZ'],
|
104
|
+
ken: ['5YA'..'5ZZ'],
|
105
|
+
kgz: ['EXA'..'EXZ'],
|
106
|
+
khm: ['XU', 'XUA'..'XUZ'],
|
107
|
+
kir: ['T3', 'T3A'..'T3Z'],
|
108
|
+
kna: ['V4', 'V4A'..'V4Z'],
|
109
|
+
kor: ['6KA'..'6NZ', 'D7A'..'D9Z', 'DSA'..'DTZ', 'HLA'..'HLZ'],
|
110
|
+
kwt: ['9KA'..'9KZ'],
|
111
|
+
lao: ['XW', 'XWA'..'XWZ'],
|
112
|
+
lbn: ['ODA'..'ODZ'],
|
113
|
+
lbr: ['5LA'..'5MZ', '6ZA'..'6ZZ', 'A8A'..'A8Z', 'D5A'..'D5Z', 'ELA'..'ELZ'],
|
114
|
+
lby: ['5AA'..'5AZ'],
|
115
|
+
lca: ['J6A'..'J6Z'],
|
116
|
+
lka: ['4PA'..'4SZ'],
|
117
|
+
lso: ['7PA'..'7PZ'],
|
118
|
+
ltu: ['LYA'..'LYZ'],
|
119
|
+
lux: ['LXA'..'LXZ'],
|
120
|
+
lva: ['YL', 'YLA'..'YLZ'],
|
121
|
+
mar: ['5CA'..'5GZ', 'CNA'..'CNZ'],
|
122
|
+
mco: ['3AA'..'3AZ'],
|
123
|
+
mda: ['ERA'..'ERZ'],
|
124
|
+
mdg: ['5RA'..'5SZ', '6XA'..'6XZ'],
|
125
|
+
mdv: ['8QA'..'8QZ'],
|
126
|
+
mex: ['4AA'..'4CZ', '6DA'..'6JZ', 'XA'..'XI', 'XAA'..'XIZ'],
|
127
|
+
mhl: ['V7', 'V7A'..'V7Z'],
|
128
|
+
mkd: ['Z3A'..'Z3Z'],
|
129
|
+
mli: ['TZ', 'TZA'..'TZZ'],
|
130
|
+
mlt: ['9HA'..'9HZ'],
|
131
|
+
mmr: ['XY'..'XZ', 'XYA'..'XZZ'],
|
132
|
+
mne: ['4OA'..'4OZ'],
|
133
|
+
mng: ['JTA'..'JVZ'],
|
134
|
+
moz: ['C8A'..'C9Z'],
|
135
|
+
mrt: ['5TA'..'5TZ'],
|
136
|
+
mus: ['3BA'..'3BZ'],
|
137
|
+
mwi: ['7QA'..'7QZ'],
|
138
|
+
mys: ['9MA'..'9MZ', '9WA'..'9WZ'],
|
139
|
+
nam: ['V5', 'V5A'..'V5Z'],
|
140
|
+
nga: ['5NA'..'5OZ', '5UA'..'5UZ'],
|
141
|
+
nic: ['H6A'..'H7Z', 'HT', 'HTA'..'HTZ', 'YN', 'YNA'..'YNZ'],
|
142
|
+
niu: ['E6A'..'E6Z'],
|
143
|
+
nld: ['P4A'..'P4Z', 'PAA'..'PIZ'],
|
144
|
+
nor: ['3YA'..'3YZ', 'JWA'..'JWZ', 'LAA'..'LNZ'],
|
145
|
+
npl: ['9NA'..'9NZ'],
|
146
|
+
nru: ['C2A'..'C2Z'],
|
147
|
+
nzl: ['ZK'..'ZM', 'ZKA'..'ZMZ'],
|
148
|
+
omn: ['A4A'..'A4Z'],
|
149
|
+
pak: ['6PA'..'6SZ', 'APA'..'ASZ'],
|
150
|
+
pan: ['3EA'..'3FZ', 'H3A'..'H3Z', 'H8A'..'H9Z', 'HOA'..'HPZ'],
|
151
|
+
per: ['4TA'..'4TZ', 'OAA'..'OCZ'],
|
152
|
+
phl: ['4DA'..'4IZ', 'DUA'..'DZZ'],
|
153
|
+
plw: ['T8', 'T8A'..'T8Z'],
|
154
|
+
png: ['P2A'..'P2Z'],
|
155
|
+
pol: ['3Z', '3ZA'..'3ZZ', 'HF', 'HFA'..'HFZ', 'SN'..'SR', 'SNA'..'SRZ'],
|
156
|
+
prk: ['HMA'..'HMZ', 'P5A'..'P9Z'],
|
157
|
+
prt: ['CQA'..'CUZ'],
|
158
|
+
pry: ['ZP', 'ZPA'..'ZPZ'],
|
159
|
+
pse: ['E4A'..'E4Z'],
|
160
|
+
qat: ['A7A'..'A7Z'],
|
161
|
+
rou: ['YO'..'YR', 'YOA'..'YRZ'],
|
162
|
+
rus: ['R', 'RA'..'RZ', 'RAA'..'RZZ', 'UA'..'UI', 'UAA'..'UIZ'],
|
163
|
+
rwa: ['9XA'..'9XZ'],
|
164
|
+
sau: ['7ZA'..'7ZZ', '8ZA'..'8ZZ', 'HZA'..'HZZ'],
|
165
|
+
sdn: ['6TA'..'6UZ', 'SSN'..'SSZ', 'ST', 'STA'..'STZ'],
|
166
|
+
sen: ['6VA'..'6WZ'],
|
167
|
+
sgp: ['9VA'..'9VZ', 'S6A'..'S6Z'],
|
168
|
+
slb: ['H4A'..'H4Z'],
|
169
|
+
sle: ['9LA'..'9LZ'],
|
170
|
+
slv: ['HU', 'HUA'..'HUZ', 'YS', 'YSA'..'YSZ'],
|
171
|
+
smr: ['T7', 'T7A'..'T7Z'],
|
172
|
+
som: ['6O', '6OA'..'6OZ', 'T5', 'T5A'..'T5Z'],
|
173
|
+
srb: ['YT'..'YU', 'YTA'..'YUZ'],
|
174
|
+
ssd: ['Z8A'..'Z8Z'],
|
175
|
+
stp: ['S9A'..'S9Z'],
|
176
|
+
sur: ['PZA'..'PZZ'],
|
177
|
+
svn: ['S5A'..'S5Z'],
|
178
|
+
svk: ['OMA'..'OMZ'],
|
179
|
+
swe: ['8SA'..'8SZ', 'SA'..'SM', 'SAA'..'SMZ'],
|
180
|
+
swz: ['3DA'..'3DM'],
|
181
|
+
syc: ['S7A'..'S7Z'],
|
182
|
+
syr: ['6CA'..'6CZ', 'YK', 'YKA'..'YKZ'],
|
183
|
+
tcd: ['TT', 'TTA'..'TTZ'],
|
184
|
+
tgo: ['5VA'..'5VZ'],
|
185
|
+
tha: ['E2A'..'E2Z', 'HSA'..'HSZ'],
|
186
|
+
tkm: ['EZA'..'EZZ'],
|
187
|
+
tjk: ['EYA'..'EYZ'],
|
188
|
+
tls: ['4WA'..'4WZ'],
|
189
|
+
ton: ['A3A'..'A3Z'],
|
190
|
+
tto: ['9YA'..'9ZZ'],
|
191
|
+
tun: ['TS', 'TSA'..'TSZ'],
|
192
|
+
tur: ['TA'..'TC', 'TAA'..'TCZ', 'YM', 'YMA'..'YMZ'],
|
193
|
+
tuv: ['T2', 'T2A'..'T2Z'],
|
194
|
+
tza: ['5HA'..'5IZ'],
|
195
|
+
tun: ['3VA'..'3VZ'],
|
196
|
+
uga: ['5XA'..'5XZ'],
|
197
|
+
ukr: ['EM'..'EO', 'EMA'..'EOZ', 'UR'..'UZ', 'URA'..'UZZ'],
|
198
|
+
ury: ['CVA'..'CXZ'],
|
199
|
+
usa: ['AA'..'AL', 'AAA'..'ALZ', 'K', 'KA'..'KZ', 'KAA'..'KZZ', 'N', 'NA'..'NZ', 'NAA'..'NZZ', 'W', 'WA'..'WZ', 'WAA', 'WZZ'],
|
200
|
+
uzb: ['UJ'..'UM', 'UJA'..'UMZ'],
|
201
|
+
vat: ['HVA'..'HVZ'],
|
202
|
+
vct: ['J8A'..'J8Z'],
|
203
|
+
ven: ['4MA'..'4MZ', 'YV'..'YY', 'YVA'..'YYZ'],
|
204
|
+
vnm: ['3WA'..'3WZ', 'XV', 'XVA'..'XVZ'],
|
205
|
+
vut: ['YJ', 'YJA'..'YJZ'],
|
206
|
+
yem: ['7OA'..'7OZ'],
|
207
|
+
zaf: ['S8A'..'S8Z', 'ZR'..'ZU', 'ZRA'..'ZUZ'],
|
208
|
+
zmb: ['9IA'..'9JZ'],
|
209
|
+
zwe: ['Z2A'..'Z2Z']
|
210
|
+
}
|
211
|
+
PREFIXES_BY_ORGANIZATION = {
|
212
|
+
icao: ['4YA'..'4YZ'],
|
213
|
+
uno: ['4UA'..'4UZ'],
|
214
|
+
wmo: ['C7A'..'C7Z']
|
215
|
+
}
|
216
|
+
|
217
|
+
PREFIXES_BY_COUNTRY.each_pair do |key, value|
|
218
|
+
data = { iso_3166_alpha_3: key.to_s }
|
219
|
+
value.each do |prefix_range|
|
220
|
+
if prefix_range.is_a?(Range)
|
221
|
+
prefix_range.each do |prefix|
|
222
|
+
PREFIXES[prefix] = data
|
223
|
+
end
|
224
|
+
else
|
225
|
+
PREFIXES[prefix_range] = data
|
226
|
+
end
|
227
|
+
end
|
228
|
+
end
|
229
|
+
|
230
|
+
def initialize(prefix='')
|
231
|
+
identity = identify(prefix)
|
232
|
+
puts identity
|
233
|
+
|
234
|
+
if identity.is_a? Hash
|
235
|
+
@country = ISO3166::Country.find_country_by_alpha3(identity[:iso_3166_alpha_3])
|
236
|
+
@prefix = prefix
|
237
|
+
@valid = true
|
238
|
+
else
|
239
|
+
@country = nil
|
240
|
+
@prefix = prefix
|
241
|
+
@valid = false
|
242
|
+
end
|
243
|
+
end
|
244
|
+
|
245
|
+
def identify(prefix)
|
246
|
+
PREFIXES[prefix]
|
247
|
+
end
|
248
|
+
|
249
|
+
def self.parse(prefix)
|
250
|
+
self.new(prefix)
|
251
|
+
end
|
252
|
+
|
253
|
+
end
|
254
|
+
end
|
data/lib/call_sign.rb
ADDED
metadata
ADDED
@@ -0,0 +1,96 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: call_sign
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Kevin Elliott
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-02-20 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: countries
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.5'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.5'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
description: Handle and process ITU Call Signs
|
56
|
+
email:
|
57
|
+
- kevin@welikeinc.com
|
58
|
+
executables: []
|
59
|
+
extensions: []
|
60
|
+
extra_rdoc_files: []
|
61
|
+
files:
|
62
|
+
- .gitignore
|
63
|
+
- Gemfile
|
64
|
+
- LICENSE.txt
|
65
|
+
- README.md
|
66
|
+
- Rakefile
|
67
|
+
- call_sign.gemspec
|
68
|
+
- lib/call_sign.rb
|
69
|
+
- lib/call_sign/call_sign.rb
|
70
|
+
- lib/call_sign/itu_prefix.rb
|
71
|
+
- lib/call_sign/version.rb
|
72
|
+
homepage: http://github.com/kevinelliott/call_sign
|
73
|
+
licenses:
|
74
|
+
- MIT
|
75
|
+
metadata: {}
|
76
|
+
post_install_message:
|
77
|
+
rdoc_options: []
|
78
|
+
require_paths:
|
79
|
+
- lib
|
80
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
81
|
+
requirements:
|
82
|
+
- - '>='
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: '0'
|
85
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
requirements: []
|
91
|
+
rubyforge_project:
|
92
|
+
rubygems_version: 2.2.1
|
93
|
+
signing_key:
|
94
|
+
specification_version: 4
|
95
|
+
summary: Handle and process ITU Call Signs
|
96
|
+
test_files: []
|