Skip to content

Commit 022ef71

Browse files
committed
Tidied up 'Convert to NATO alphabet' operation
1 parent 0fad891 commit 022ef71

File tree

2 files changed

+51
-129
lines changed

2 files changed

+51
-129
lines changed

src/core/operations/ConvertToNATOAlphabet.mjs

+47-125
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ class ConvertToNATOAlphabet extends Operation {
1818

1919
this.name = "Convert to NATO alphabet";
2020
this.module = "Default";
21-
this.description = "Convert a text to NATO alphabet.";
22-
this.infoURL = "https://en.wikipedia.org/wiki/NATO_phonetic_alphabet";
21+
this.description = "Converts characters to their representation in the NATO phonetic alphabet.";
22+
this.infoURL = "https://wikipedia.org/wiki/NATO_phonetic_alphabet";
2323
this.inputType = "string";
2424
this.outputType = "string";
2525
this.args = [];
@@ -31,130 +31,52 @@ class ConvertToNATOAlphabet extends Operation {
3131
* @returns {string}
3232
*/
3333
run(input, args) {
34-
let result = "";
35-
36-
const text = input.toUpperCase();
37-
38-
for (let i = 0; i < text.length; i++) {
39-
switch (text.charAt(i)) {
40-
case "A":
41-
result += "alfa ";
42-
break;
43-
case "B":
44-
result += "bravo ";
45-
break;
46-
case "C":
47-
result += "charlie ";
48-
break;
49-
case "D":
50-
result += "delta ";
51-
break;
52-
case "E":
53-
result += "echo ";
54-
break;
55-
case "F":
56-
result += "foxtrot ";
57-
break;
58-
case "G":
59-
result += "golf ";
60-
break;
61-
case "H":
62-
result += "hotel ";
63-
break;
64-
case "I":
65-
result += "india ";
66-
break;
67-
case "J":
68-
result += "juliett ";
69-
break;
70-
case "K":
71-
result += "kilo ";
72-
break;
73-
case "L":
74-
result += "lima ";
75-
break;
76-
case "M":
77-
result += "mike ";
78-
break;
79-
case "N":
80-
result += "november ";
81-
break;
82-
case "O":
83-
result += "oscar ";
84-
break;
85-
case "P":
86-
result += "papa ";
87-
break;
88-
case "Q":
89-
result += "quebec ";
90-
break;
91-
case "R":
92-
result += "romeo ";
93-
break;
94-
case "S":
95-
result += "sierra ";
96-
break;
97-
case "T":
98-
result += "tango ";
99-
break;
100-
case "U":
101-
result += "uniform ";
102-
break;
103-
case "V":
104-
result += "victor ";
105-
break;
106-
case "W":
107-
result += "whiskey ";
108-
break;
109-
case "X":
110-
result += "xray ";
111-
break;
112-
case "Y":
113-
result += "yankee ";
114-
break;
115-
case "Z":
116-
result += "zulu ";
117-
break;
118-
case " ":
119-
result += " ";
120-
break;
121-
case "0":
122-
result += "zero ";
123-
break;
124-
case "1":
125-
result += "one ";
126-
break;
127-
case "2":
128-
result += "two ";
129-
break;
130-
case "3":
131-
result += "three ";
132-
break;
133-
case "4":
134-
result += "four ";
135-
break;
136-
case "5":
137-
result += "five ";
138-
break;
139-
case "6":
140-
result += "six ";
141-
break;
142-
case "7":
143-
result += "seven ";
144-
break;
145-
case "8":
146-
result += "eight ";
147-
break;
148-
case "9":
149-
result += "nine ";
150-
break;
151-
default:
152-
result += text.charAt(i) + " ";
153-
}
154-
}
155-
156-
return result;
34+
return input.replace(/[a-z0-9,/.]/ig, letter => {
35+
return lookup[letter.toUpperCase()];
36+
});
15737
}
15838
}
15939

40+
const lookup = {
41+
"A": "Alfa ",
42+
"B": "Bravo ",
43+
"C": "Charlie ",
44+
"D": "Delta ",
45+
"E": "Echo ",
46+
"F": "Foxtrot ",
47+
"G": "Golf ",
48+
"H": "Hotel ",
49+
"I": "India ",
50+
"J": "Juliett ",
51+
"K": "Kilo ",
52+
"L": "Lima ",
53+
"M": "Mike ",
54+
"N": "November ",
55+
"O": "Oscar ",
56+
"P": "Papa ",
57+
"Q": "Quebec ",
58+
"R": "Romeo ",
59+
"S": "Sierra ",
60+
"T": "Tango ",
61+
"U": "Uniform ",
62+
"V": "Victor ",
63+
"W": "Whiskey ",
64+
"X": "X-ray ",
65+
"Y": "Yankee ",
66+
"Z": "Zulu ",
67+
"0": "Zero ",
68+
"1": "One ",
69+
"2": "Two ",
70+
"3": "Three ",
71+
"4": "Four ",
72+
"5": "Five ",
73+
"6": "Six ",
74+
"7": "Seven ",
75+
"8": "Eight ",
76+
"9": "Nine ",
77+
",": "Comma ",
78+
"/": "Fraction bar ",
79+
".": "Full stop ",
80+
};
81+
16082
export default ConvertToNATOAlphabet;

tests/operations/tests/ConvertToNATOAlphabet.mjs

+4-4
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,18 @@ TestRegister.addTests([
1414
recipeConfig: [
1515
{
1616
op: "Convert to NATO alphabet",
17-
args: [""]
17+
args: []
1818
}
1919
]
2020
},
2121
{
2222
name: "Convert to NATO alphabet: full alphabet with numbers",
23-
input: "abcdefghijklmnopqrstuvwxyz0123456789",
24-
expectedOutput: "alfa bravo charlie delta echo foxtrot golf hotel india juliett kilo lima mike november oscar papa quebec romeo sierra tango uniform victor whiskey xray yankee zulu zero one two three four five six seven eight nine ",
23+
input: "abcdefghijklmnopqrstuvwxyz0123456789,/.",
24+
expectedOutput: "Alfa Bravo Charlie Delta Echo Foxtrot Golf Hotel India Juliett Kilo Lima Mike November Oscar Papa Quebec Romeo Sierra Tango Uniform Victor Whiskey X-ray Yankee Zulu Zero One Two Three Four Five Six Seven Eight Nine Comma Fraction bar Full stop ",
2525
recipeConfig: [
2626
{
2727
op: "Convert to NATO alphabet",
28-
args: [""]
28+
args: []
2929
}
3030
]
3131
}

0 commit comments

Comments
 (0)