'use strict'; module.exports = translate; function translate(rnaStrand) { var proteins = []; if (rnaStrand) { for (var i = 0; i < rnaStrand.length; i += 3) { var protein = getProtein(rnaStrand.substring(i, i + 3)); if (protein) { if (protein === 'STOP') { break; } if (protein === 'INVALID') { throw new Error('Invalid codon'); } proteins.push(protein); } } } return proteins; } function getProtein(codon) { switch (codon) { case 'AUG': return 'Methionine'; case 'UUU': case 'UUC': return 'Phenylalanine'; case 'UUA': case 'UUG': return 'Leucine'; case 'UCU': case 'UCC': case 'UCA': case 'UCG': return 'Serine'; case 'UAU': case 'UAC': return 'Tyrosine'; case 'UGU': case 'UGC': return 'Cysteine'; case 'UGG': return 'Tryptophan'; case 'UAA': case 'UAG': case 'UGA': return 'STOP'; default: return 'INVALID'; } }