Parsing Google Translate response
by triclozan
JavaScript
var data = '[[["not","nem"]],[["particle",["not","no","nope","nay"],[["not",["nem","ne"],,0.35656098],["no",["nem","nincs"],,0.041924916],["nope",["dehogy","nem"]],["nay",["sőt, mi több","nem"]]],"nem",19],["prefix",["non-","un-"],[["non-",["nem"],,0.03758125],["un-",["nem"]]],"nem",11],["noun",["sex","genus"],[["sex",["szex","nem","nemi aktus"]],["genus",["nemzetség","nem"]]],"nem",1]],"hu",,,[["nem",1,[["not",682,true,false],["no",317,true,false],["non",0,true,false],["is not",0,true,false],["does not",0,true,false]],[[0,3]],"nem",0,1]],0.025042934,,[["hu"],,[0.025042934]],,,,,,[["Nem!","NEM","nem működik","nem megfelelő","nem rossz","nem vagyok","nem fontos","egyáltalán nem","nem tud","nem sok","nem szükséges","nem sikerül"]]]';
var parsed;
eval('parsed=' + data);
var result = {
translatedString: parsed[0][0][1],
mainTranslation: parsed[0][0][0],
translations: []
};
if (parsed[1]) {
parsed[1].map(function (item) {
var category = {
partOfSpeech: item[0],
variants: []
};
item[2].map(function (item) {
category.variants.push({
translation: item[0],
synonyms: item[1],
frequency: item.length == 4 ? (item[3] >= 0.05 ? 2 : 1) : 0
});
});
result.translations.push(category);
});
}
function create(htmlStr) {
var frag = document.createDocumentFragment(),
temp = document.createElement('div');
temp.innerHTML = htmlStr;
while (temp.firstChild) {
frag.appendChild(temp.firstChild);
}
return frag;
}
var fragment = create('<h1>Source data</h1><pre>' + JSON.stringify(parsed, null, 4) + '</pre>');
document.body.insertBefore(fragment, document.body.childNodes[0]);
var fragment = create('<h1>Transformed result</h1><pre>' + JSON.stringify(result, null, 4) + '</pre>');
document.body.insertBefore(fragment, document.body.childNodes[0]);