Skip to content

Commit cb73f25

Browse files
committed
Added public method for getting morse characters
Updated README.md
1 parent 99fbc79 commit cb73f25

File tree

5 files changed

+53
-9
lines changed

5 files changed

+53
-9
lines changed

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ $ yarn add morsify
2727
var morsify = require('morsify');
2828
var encoded = morsify.encode('SOS'); // .../---/...
2929
var decoded = morsify.decode('.../---/...'); // S O S
30+
var characters = morsify.characters(); // {'1': {'A': '.-', ...}, ..., '11': {'ㄱ': '.-..', ...}}
3031
var audio = morsify.audio('SOS'), oscillator = audio.oscillator; // OscillatorNode
3132
audio.play(); // play audio
3233
audio.stop(); // stop audio
@@ -39,6 +40,7 @@ Or alternatively, you can also use the library directly with including the sourc
3940
<script>
4041
var encoded = morsify.encode('SOS'); // .../---/...
4142
var decoded = morsify.decode('.../---/...'); // S O S
43+
var characters = morsify.characters(); // {'1': {'A': '.-', ...}, ..., '11': {'ㄱ': '.-..', ...}}
4244
var audio = morsify.audio('SOS');
4345
var oscillator = audio.oscillator; // OscillatorNode
4446
var context = audio.context; // AudioContext
@@ -72,6 +74,7 @@ Set the priority option according to the list below.
7274
var cyrillic = morsify.encode('Ленинград', { priority: 5 }) // .-.././-./../-./--./.-./.-/-..
7375
var greek = morsify.decode('.../.-/--./.-/.--./.--', { priority: 6 }) // Σ Α Γ Α Π Ω
7476
var hebrew = morsify.decode('––– –... ––– –. ––. .. .–.. –––', { dash: '', dot: '.', space: ' ', priority: 7 }) // ה ב ה נ ג י ל ה
77+
var characters = morsify.characters({ dash: '', dot: '' }); // {'1': {'A': '•–', ...}, ..., '11': {'ㄱ': '•–••', ...}}
7578
var arabicAudio = morsify.audio('البُراق‎‎', { // generates the morse .-/.-../-.../.-./.-/--.- then generates the audio from it
7679
unit: 0.1, // period of one unit, in seconds, 1.2 / c where c is speed of transmission, in words per minute
7780
oscillator: {

dist/morsify.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
11
{
22
"name": "morsify",
3-
"version": "0.2.4",
3+
"version": "0.3.0",
44
"description": "Morse code translator and decoder which also generates audio.",
55
"keywords": [
66
"morse",
7-
"morse code",
87
"morse alphabet",
98
"morse audio",
10-
"morse translator",
9+
"morse characters",
10+
"morse code",
1111
"morse decoder",
1212
"morse encoder",
13+
"morse translator",
1314
"morsify"
1415
],
1516
"license": "MIT",

src/morsify.js

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -90,13 +90,26 @@
9090
}
9191
};
9292

93-
var swapCharacters = function (options) {
94-
var swapped = {};
93+
var getCharacters = function (opts, usePriority) {
94+
var options = getOptions(opts), mapped = {};
9595
for (var set in characters) {
96+
mapped[set] = {};
9697
for (var key in characters[set]) {
97-
var mapped = characters[set][key].replace(/0/g, options.dot).replace(/1/g, options.dash);
98-
if (typeof swapped[mapped] === 'undefined') {
99-
swapped[mapped] = key;
98+
mapped[set][key] = characters[set][key].replace(/0/g, options.dot).replace(/1/g, options.dash);
99+
}
100+
}
101+
if (usePriority !== true) {
102+
delete mapped[0];
103+
}
104+
return mapped;
105+
};
106+
107+
var swapCharacters = function (options) {
108+
var swapped = {}, mappedCharacters = getCharacters(options, true);
109+
for (var set in mappedCharacters) {
110+
for (var key in mappedCharacters[set]) {
111+
if (typeof swapped[mappedCharacters[set][key]] === 'undefined') {
112+
swapped[mappedCharacters[set][key]] = key;
100113
}
101114
}
102115
}
@@ -192,6 +205,7 @@
192205
};
193206

194207
return {
208+
characters: getCharacters,
195209
decode: decode,
196210
encode: encode,
197211
audio: audio

test/morsify.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,4 +158,30 @@ describe('morsify', function () {
158158
t.equal(morsify.decode('---/.---/./../-/...', options), 'ㅍ ㅎ ㅏ ㅑ ㅓ ㅕ');
159159
t.equal(morsify.decode('.-/-./..../.-./-../..-', options), 'ㅗ ㅛ ㅜ ㅠ ㅡ ㅣ');
160160
});
161+
it('returns mapped characters', function () {
162+
var characters = morsify.characters();
163+
t.equal(characters[1]['A'], '.-');
164+
t.equal(characters[2]['0'], '-----');
165+
t.equal(characters[3]['.'], '.-.-.-');
166+
t.equal(characters[4]['Ç'], '-.-..');
167+
t.equal(characters[5]['Я'], '.-.-');
168+
t.equal(characters[6]['Ω'], '.--');
169+
t.equal(characters[7]['א'], '.-');
170+
t.equal(characters[8]['ا'], '.-');
171+
t.equal(characters[9]['ا'], '.-');
172+
t.equal(characters[10]['ア'], '--.--');
173+
t.equal(characters[11]['ㄱ'], '.-..');
174+
characters = morsify.characters({ dash: '–', dot: '•', space: ' ' });
175+
t.equal(characters[1]['A'], '•–');
176+
t.equal(characters[2]['0'], '–––––');
177+
t.equal(characters[3]['.'], '•–•–•–');
178+
t.equal(characters[4]['Ç'], '–•–••');
179+
t.equal(characters[5]['Я'], '•–•–');
180+
t.equal(characters[6]['Ω'], '•––');
181+
t.equal(characters[7]['א'], '•–');
182+
t.equal(characters[8]['ا'], '•–');
183+
t.equal(characters[9]['ا'], '•–');
184+
t.equal(characters[10]['ア'], '––•––');
185+
t.equal(characters[11]['ㄱ'], '•–••');
186+
});
161187
});

0 commit comments

Comments
 (0)