Skip to content

Instantly share code, notes, and snippets.

@egorvinogradov
Created October 18, 2017 19:12
Show Gist options
  • Select an option

  • Save egorvinogradov/2a11b293a4311a51d14e7e40268d6d4b to your computer and use it in GitHub Desktop.

Select an option

Save egorvinogradov/2a11b293a4311a51d14e7e40268d6d4b to your computer and use it in GitHub Desktop.
const capitalizationMark = '000001';
const space = '000000';
function decodeString(word, binaryEncoded){
var dict = {};
word.split('').forEach(function(letter){
if (/[A-Z]/.test(letter)) {
binaryEncoded = binaryEncoded.replace(/^000001/, '');
}
var code = binaryEncoded.substr(0,6);
dict[letter.toLowerCase()] = code;
binaryEncoded = binaryEncoded.substr(6);
});
return dict;
}
function generateDict(pairs){
var dict = {};
for (var word in pairs) {
var binaryEncoded = pairs[word];
var tempDict = decodeString(word, binaryEncoded);
Object.assign(dict, tempDict);
}
return dict;
}
var dict = generateDict({
'code': '100100101010100110100010',
'Braille': '000001110000111010100000010100111000111000100010',
'The quick brown fox jumped over the lazy dog': '000001011110110010100010000000111110101001010100100100101000000000110000111010101010010111101110000000110100101010101101000000010110101001101100111100100010100110000000101010111001100010111010000000011110110010100010000000111000100000101011101111000000100110101010110110',
});
function encodeString(word, dict){
return word.split('').map(function(letter){
var code = '';
if (/[A-Z]/.test(letter)) {
code+= capitalizationMark;
}
code+= dict[letter.toLowerCase()];
return code;
})
.join('');
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment