JSFiddle - React, Tailwind, and code Playground
by Fernando
JavaScript
(function(w){
var morse = {
alpha:{a:'.-',b:'-...',c:'-.-.',d:'-..',e:'.',f:'..-.',g:'--.',h:'....',i:'..',j:'.---',k:'-.-',l:'.-..',m:'--',n:'-.',o:'---',p:'.--.',q:'--.-',r:'.-.',s:'...',t:'-',u:'..-',v:'...-',w:'.--',x:'-..-',y:'-.--',z:'--..'},
code:{},
maxl:0,
encode:function(string){
var p=[];
string.toLowerCase().split(" ").forEach(function(v){
var s=[];
v.split("").forEach(function(l){
s.push(morse.alpha[l]);
});
p.push(s.join(""));
})
return p.join(" ");
},
_decode:function(string){
var l = string.length, c=[];
for ( var i = 0; i<l; i++){
c.push((function(){
var p=[]; n='';
for(var ik = 1; ik<=morse.maxl; ik++){
var res = string.substr(i,ik);
if( n != res ){
n=res;
p.push(res);
}
};
return p;
})())
}
var li = c.length;
matrix = [];
var fn = function(col, st, mt){
if(!c[col]) return false;
for(var n in c[col]){
var co = c[col][n];
var sf = (mt?mt+',':'')+col+'.'+n;
if( string == st+co){
matrix.push(sf);
}else{
var ac = col+1;
for( var i=col+(1+parseInt(n)); i<li ;i++ ){
fn(i,st+co,sf);
}
}
}
}
fn(0,'','');
var list=[];
matrix.forEach(function(v){
var lis = [];
v.split(",").forEach(function(k){
var i = k.split(".");
lis.push(morse.code[c[i[0]][i[1]]]);
});
list.push(lis);
});
var res = [];
list.forEach(function(v){
v = v.join("");
if( res.indexOf(v) == -1)
res.push(v);
});
return res.sort();
},
decode:function(string){
var res = [];
string.split(" ").forEach(function(v){
res.push(morse._decode(v));
});
return res;
},
ini:function(){
var keys=[],tm={};
for (var n in morse.alpha){
var c = morse.alpha[n];
tm[c]=n;
keys.push(c);
if( morse.maxl< c.length...