NATO 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/README.md +15 -3
- data/lib/NATO/dictionary.rb +36 -26
- data/lib/NATO/parser.rb +2 -11
- data/lib/NATO/text.rb +14 -2
- data/lib/NATO/version.rb +1 -1
- data/spec/parser_spec.rb +15 -7
- data/spec/text_spec.rb +15 -2
- metadata +13 -23
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 2df6f079b6a4a5766249d54349d8964acc403d7d
|
4
|
+
data.tar.gz: 7f5dda1cf7eb20b96eda2eb2cd3818ed1e23ab8f
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: f3a61617a905376b0aec46f68b0eefecd4ba2b6097048eba0cd65c86ab82fb81567e9dcf23cdc8eff61a3482cd7ba3a94aa4dc6ec74f0a63b48df884aa81b7db
|
7
|
+
data.tar.gz: 4bb5478c0205363422a20d8a1d73a97677ab7d189c123ab1ceb5e43ca89f93a4de6887b37dd022f2250fe74a951c21a094b3e4b24d4f8811e8b454ae504ea953
|
data/README.md
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# NATO
|
2
2
|
|
3
|
+
[](https://codeclimate.com/github/lukelex/NATO)
|
4
|
+
|
3
5
|
The NATO phonetic alphabet, more accurately known as the International
|
4
6
|
Radiotelephony Spelling Alphabet, is the most widely used spelling
|
5
7
|
alphabet. NATO assigns code words acrophonically to the letters of the
|
@@ -8,8 +10,7 @@ can be pronounced and understood by those who transmit and receive
|
|
8
10
|
voice messages by radio or telephone regardless of their native
|
9
11
|
language or the presence of transmission static.
|
10
12
|
|
11
|
-
The 26 code words in the NATO phonetic alphabet are assigned to the
|
12
|
-
letters of the English alphabet in alphabetical order as follows:
|
13
|
+
The 26 code words and 10 numbers in the NATO phonetic alphabet are assigned to their respectives in the English alphabet in alphabetical order as follows:
|
13
14
|
|
14
15
|
* Alfa
|
15
16
|
* Bravo
|
@@ -37,6 +38,16 @@ letters of the English alphabet in alphabetical order as follows:
|
|
37
38
|
* X-ray
|
38
39
|
* Yankee
|
39
40
|
* Zulu
|
41
|
+
* One
|
42
|
+
* Two
|
43
|
+
* Three
|
44
|
+
* Four
|
45
|
+
* Five
|
46
|
+
* Six
|
47
|
+
* Seven
|
48
|
+
* Eight
|
49
|
+
* Nine
|
50
|
+
* Zero
|
40
51
|
|
41
52
|
## Installation
|
42
53
|
|
@@ -62,7 +73,8 @@ $ gem install NATO
|
|
62
73
|
|
63
74
|
```ruby
|
64
75
|
text = Text.new 'a8h43lnr0'
|
65
|
-
text.to_nato # "Alfa
|
76
|
+
text.to_nato # "Alfa Eight Hotel Four Three Lima November Romeo Zero"
|
77
|
+
text.pronunciation #'AL-FAH AIT HOH-TEL FOW-ER TREE LEE-MAH NO-VEM-BER ROW-ME-OH ZEE-RO'
|
66
78
|
```
|
67
79
|
|
68
80
|
## Contributing
|
data/lib/NATO/dictionary.rb
CHANGED
@@ -1,30 +1,40 @@
|
|
1
1
|
module NATO
|
2
2
|
DICTIONARY = {
|
3
|
-
:a => :Alfa,
|
4
|
-
:b => :Bravo,
|
5
|
-
:c => :Charlie,
|
6
|
-
:d => :Delta,
|
7
|
-
:e => :Echo,
|
8
|
-
:f => :Foxtrot,
|
9
|
-
:g => :Golf,
|
10
|
-
:h => :Hotel,
|
11
|
-
:i => :India,
|
12
|
-
:j => :Juliett,
|
13
|
-
:k => :Kilo,
|
14
|
-
:l => :Lima,
|
15
|
-
:m => :Mike,
|
16
|
-
:n => :November,
|
17
|
-
:o => :Oscar,
|
18
|
-
:p => :Papa,
|
19
|
-
:q => :Quebec,
|
20
|
-
:r => :Romeo,
|
21
|
-
:s => :Sierra,
|
22
|
-
:t => :Tango,
|
23
|
-
:u => :Uniform,
|
24
|
-
:v => :Victor,
|
25
|
-
:w => :Whiskey,
|
26
|
-
:x => :'X-ray',
|
27
|
-
:y => :Yankee,
|
28
|
-
:z => :Zulu
|
3
|
+
:'a' => [:Alfa, :'AL-FAH'],
|
4
|
+
:'b' => [:Bravo, :'BRAH-VOH'],
|
5
|
+
:'c' => [:Charlie, :'CHAR-LEE'],
|
6
|
+
:'d' => [:Delta, :'DELL-TAH'],
|
7
|
+
:'e' => [:Echo, :'ECK-OH'],
|
8
|
+
:'f' => [:Foxtrot, :'FOKS-TROT'],
|
9
|
+
:'g' => [:Golf, :'GOLF'],
|
10
|
+
:'h' => [:Hotel, :'HOH-TEL'],
|
11
|
+
:'i' => [:India, :'IN-DEE-AH'],
|
12
|
+
:'j' => [:Juliett, :'JEW-LEE-ETT'],
|
13
|
+
:'k' => [:Kilo, :'KEY-LOH'],
|
14
|
+
:'l' => [:Lima, :'LEE-MAH'],
|
15
|
+
:'m' => [:Mike, :'MIKE'],
|
16
|
+
:'n' => [:November, :'NO-VEM-BER'],
|
17
|
+
:'o' => [:Oscar, :'OSS-CAH'],
|
18
|
+
:'p' => [:Papa, :'PAH-PAH'],
|
19
|
+
:'q' => [:Quebec, :'KEH-BECK'],
|
20
|
+
:'r' => [:Romeo, :'ROW-ME-OH'],
|
21
|
+
:'s' => [:Sierra, :'SEE-AIR-RAH'],
|
22
|
+
:'t' => [:Tango, :'TANG-GO'],
|
23
|
+
:'u' => [:Uniform, :'YOU-NEE-FORM'],
|
24
|
+
:'v' => [:Victor, :'VIK-TAH'],
|
25
|
+
:'w' => [:Whiskey, :'WISS-KEY'],
|
26
|
+
:'x' => [:'X-ray', :'ECKS-RAY'],
|
27
|
+
:'y' => [:Yankee, :'YANG-KEY'],
|
28
|
+
:'z' => [:Zulu, :'ZOO-LOO'],
|
29
|
+
:'1' => [:One, :'WUN'],
|
30
|
+
:'2' => [:Two, :'TOO'],
|
31
|
+
:'3' => [:Three, :'TREE'],
|
32
|
+
:'4' => [:Four, :'FOW-ER'],
|
33
|
+
:'5' => [:Five, :'FIFE'],
|
34
|
+
:'6' => [:Six, :'SIX'],
|
35
|
+
:'7' => [:Seven, :'SEV-EN'],
|
36
|
+
:'8' => [:Eight, :'AIT'],
|
37
|
+
:'9' => [:Nine, :'NIN-ER'],
|
38
|
+
:'0' => [:Zero, :'ZEE-RO']
|
29
39
|
}
|
30
40
|
end
|
data/lib/NATO/parser.rb
CHANGED
@@ -5,16 +5,7 @@ class NATO::Parser
|
|
5
5
|
|
6
6
|
def natify(text)
|
7
7
|
text.split('').map do |piece|
|
8
|
-
|
9
|
-
|
10
|
-
else
|
11
|
-
NATO::DICTIONARY[piece.to_sym].to_s
|
12
|
-
end
|
13
|
-
end.join ' '
|
14
|
-
end
|
15
|
-
|
16
|
-
private
|
17
|
-
def is_numeric?(obj)
|
18
|
-
obj.to_s.match(/\A[+-]?\d+?(\.\d+)?\Z/)
|
8
|
+
NATO::DICTIONARY[piece.to_sym]
|
9
|
+
end
|
19
10
|
end
|
20
11
|
end
|
data/lib/NATO/text.rb
CHANGED
@@ -1,9 +1,21 @@
|
|
1
1
|
class NATO::Text
|
2
|
-
attr_reader :original, :natified
|
2
|
+
attr_reader :original, :natified, :pronunciation
|
3
3
|
|
4
4
|
def initialize(sentence)
|
5
5
|
@original = sentence
|
6
|
-
|
6
|
+
|
7
|
+
sentence_natified = NATO::Parser.instance.natify sentence
|
8
|
+
|
9
|
+
@natified = sentence_natified.map { |item| item.first }.join ' '
|
10
|
+
@pronunciation = sentence_natified.map { |item| item.last }.join ' '
|
11
|
+
end
|
12
|
+
|
13
|
+
def natified
|
14
|
+
@natified ||= ''
|
15
|
+
end
|
16
|
+
|
17
|
+
def pronunciation
|
18
|
+
@pronunciation ||= ''
|
7
19
|
end
|
8
20
|
|
9
21
|
def to_nato
|
data/lib/NATO/version.rb
CHANGED
data/spec/parser_spec.rb
CHANGED
@@ -8,27 +8,35 @@ module NATO
|
|
8
8
|
Then { parser.should respond_to :natify }
|
9
9
|
|
10
10
|
describe "short sentence without numbers" do
|
11
|
+
Given(:result) { [[:Alfa, :"AL-FAH"], [:Bravo, :"BRAH-VOH"], [:Charlie, :"CHAR-LEE"], [:Delta, :"DELL-TAH"], [:Echo, :"ECK-OH"]] }
|
12
|
+
|
11
13
|
When(:nato) { parser.natify 'abcde' }
|
12
14
|
|
13
|
-
Then { nato.should ==
|
15
|
+
Then { nato.should == result }
|
14
16
|
end
|
15
17
|
|
16
|
-
describe "short sentence
|
18
|
+
describe "short sentence" do
|
19
|
+
Given(:result) { [[:Seven, :"SEV-EN"], [:Tango, :"TANG-GO"], [:Papa, :"PAH-PAH"], [:Three, :TREE], [:November, :"NO-VEM-BER"], [:Yankee, :"YANG-KEY"]] }
|
20
|
+
|
17
21
|
When(:nato) { parser.natify '7tp3ny' }
|
18
22
|
|
19
|
-
Then { nato.should ==
|
23
|
+
Then { nato.should == result }
|
20
24
|
end
|
21
25
|
|
22
|
-
describe "medium sentence
|
26
|
+
describe "medium sentence" do
|
27
|
+
Given(:result) { [[:Mike, :MIKE], [:Lima, :"LEE-MAH"], [:Oscar, :"OSS-CAH"], [:Zulu, :"ZOO-LOO"], [:Juliett, :"JEW-LEE-ETT"], [:Uniform, :"YOU-NEE-FORM"], [:Whiskey, :"WISS-KEY"], [:Sierra, :"SEE-AIR-RAH"], [:Whiskey, :"WISS-KEY"], [:Kilo, :"KEY-LOH"], [:Romeo, :"ROW-ME-OH"], [:Hotel, :"HOH-TEL"], [:Foxtrot, :"FOKS-TROT"]] }
|
28
|
+
|
23
29
|
When(:nato) { parser.natify 'mlozjuwswkrhf' }
|
24
30
|
|
25
|
-
Then { nato.should ==
|
31
|
+
Then { nato.should == result }
|
26
32
|
end
|
27
33
|
|
28
|
-
describe "medium sentence
|
34
|
+
describe "medium sentence" do
|
35
|
+
Given(:result) { [[:Mike, :MIKE], [:Lima, :"LEE-MAH"], [:Zero, :"ZEE-RO"], [:One, :WUN], [:Juliett, :"JEW-LEE-ETT"], [:Uniform, :"YOU-NEE-FORM"], [:Whiskey, :"WISS-KEY"], [:Sierra, :"SEE-AIR-RAH"], [:Eight, :AIT], [:Four, :"FOW-ER"], [:Six, :SIX], [:Hotel, :"HOH-TEL"], [:Foxtrot, :"FOKS-TROT"]] }
|
36
|
+
|
29
37
|
When(:nato) { parser.natify 'ml01juws846hf' }
|
30
38
|
|
31
|
-
Then { nato.should ==
|
39
|
+
Then { nato.should == result }
|
32
40
|
end
|
33
41
|
end
|
34
42
|
end
|
data/spec/text_spec.rb
CHANGED
@@ -4,7 +4,20 @@ module NATO
|
|
4
4
|
describe Text do
|
5
5
|
Given(:text) { Text.new 'a8h43lnr0' }
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
describe "#to_nato" do
|
8
|
+
Then { text.should respond_to :to_nato }
|
9
|
+
|
10
|
+
And { text.to_nato.should == 'Alfa Eight Hotel Four Three Lima November Romeo Zero' }
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "#to_s" do
|
14
|
+
Then { text.to_s.should == ['a8h43lnr0', 'Alfa Eight Hotel Four Three Lima November Romeo Zero'] }
|
15
|
+
end
|
16
|
+
|
17
|
+
describe '#pronunciation' do
|
18
|
+
Then { text.should respond_to :pronunciation }
|
19
|
+
|
20
|
+
And { text.pronunciation.should == 'AL-FAH AIT HOH-TEL FOW-ER TREE LEE-MAH NO-VEM-BER ROW-ME-OH ZEE-RO' }
|
21
|
+
end
|
9
22
|
end
|
10
23
|
end
|
metadata
CHANGED
@@ -1,20 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: NATO
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.0.3
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Lukas Alexandre
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-03
|
11
|
+
date: 2013-05-03 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: bundler
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
@@ -22,7 +20,6 @@ dependencies:
|
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
24
|
- - ~>
|
28
25
|
- !ruby/object:Gem::Version
|
@@ -30,49 +27,43 @@ dependencies:
|
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rake
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - '>='
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - '>='
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: rspec
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - '>='
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - '>='
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: rspec-given
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - '>='
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '0'
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - '>='
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: '0'
|
78
69
|
description: NATO Phonetic Alphabet conversion tool
|
@@ -99,27 +90,26 @@ files:
|
|
99
90
|
homepage: https://github.com/lukelex/NATO
|
100
91
|
licenses:
|
101
92
|
- MIT
|
93
|
+
metadata: {}
|
102
94
|
post_install_message:
|
103
95
|
rdoc_options: []
|
104
96
|
require_paths:
|
105
97
|
- lib
|
106
98
|
required_ruby_version: !ruby/object:Gem::Requirement
|
107
|
-
none: false
|
108
99
|
requirements:
|
109
|
-
- -
|
100
|
+
- - '>='
|
110
101
|
- !ruby/object:Gem::Version
|
111
102
|
version: '0'
|
112
103
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
104
|
requirements:
|
115
|
-
- -
|
105
|
+
- - '>='
|
116
106
|
- !ruby/object:Gem::Version
|
117
107
|
version: '0'
|
118
108
|
requirements: []
|
119
109
|
rubyforge_project:
|
120
|
-
rubygems_version:
|
110
|
+
rubygems_version: 2.0.2
|
121
111
|
signing_key:
|
122
|
-
specification_version:
|
112
|
+
specification_version: 4
|
123
113
|
summary: NATO Phonetic Alphabet conversion tool
|
124
114
|
test_files:
|
125
115
|
- spec/parser_spec.rb
|