implement Translator.translateBritish(string) method
This commit is contained in:
@@ -78,7 +78,97 @@ class Translator {
|
||||
|
||||
translateBritish(string) {
|
||||
|
||||
const britishOnlyKeys = Object.keys(britishOnly).sort((a, b) => b.length - a.length);
|
||||
|
||||
const britishToAmericanSpelling = {};
|
||||
|
||||
Object.keys(americanToBritishSpelling).forEach(key => {
|
||||
const value = americanToBritishSpelling[key];
|
||||
britishToAmericanSpelling[value] = key;
|
||||
});
|
||||
|
||||
const britishToAmericanSpellingKeys = Object.keys(britishToAmericanSpelling).sort((a, b) => b.length - a.length);
|
||||
|
||||
const britishToAmericanTitles = {};
|
||||
|
||||
Object.keys(americanToBritishTitles).forEach(key => {
|
||||
const value = americanToBritishTitles[key];
|
||||
britishToAmericanTitles[value] = key;
|
||||
});
|
||||
|
||||
const britishToAmericanTitlesKeys = Object.keys(britishToAmericanTitles).sort((a, b) => b.length - a.length);
|
||||
|
||||
britishOnlyKeys.forEach(key => {
|
||||
|
||||
const regex = new RegExp(`\\s${key}\\.|${key}\\s`, 'i');
|
||||
|
||||
const match = string.match(regex);
|
||||
|
||||
if (match) {
|
||||
|
||||
const replace = `<span class="highlight">${britishOnly[key]}</span>`;
|
||||
const text = match[0].trim().replace('.','');
|
||||
|
||||
string = string.replace(text, replace);
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
britishToAmericanSpellingKeys.forEach(key => {
|
||||
|
||||
const regex = new RegExp(`\\s${key}|${key}\\s`, 'i');
|
||||
|
||||
const match = string.match(regex);
|
||||
|
||||
if (match) {
|
||||
|
||||
const replace = `<span class="highlight">${britishToAmericanSpelling[key]}</span>`
|
||||
const text = match[0].trim();
|
||||
|
||||
string = string.replace(text, replace);
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
britishToAmericanTitlesKeys.forEach(key => {
|
||||
|
||||
const regex = new RegExp(`\\s${key}|${key}\\s`, 'i');
|
||||
|
||||
const match = string.match(regex);
|
||||
|
||||
if (match) {
|
||||
|
||||
const value = britishToAmericanTitles[key];
|
||||
|
||||
const firstLetter = value.slice(0,1).toUpperCase();
|
||||
const rest = value.slice(1, value.length);
|
||||
|
||||
const title = firstLetter + rest;
|
||||
|
||||
const replace = `<span class="highlight">${title}</span>`;
|
||||
const text = match[0].trim();
|
||||
|
||||
string = string.replace(text, replace);
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
const timeRegex = /\d+.\d{2}/;
|
||||
|
||||
if (string.match(timeRegex)) {
|
||||
|
||||
const time = string.match(timeRegex)[0].replace('.', ':');
|
||||
|
||||
const replace = `<span class="highlight">${time}</span>`;
|
||||
|
||||
string = string.replace(timeRegex, replace);
|
||||
|
||||
}
|
||||
|
||||
return string;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -111,7 +111,7 @@ suite('Unit Tests', () => {
|
||||
const string = 'We watched the footie match for a while.';
|
||||
const result = translator.translateBritish(string);
|
||||
|
||||
assert.equal(result, 'We watched <span class="highlight">soccer</span> match for a while.');
|
||||
assert.equal(result, 'We watched the <span class="highlight">soccer</span> match for a while.');
|
||||
done();
|
||||
|
||||
});
|
||||
@@ -241,7 +241,7 @@ suite('Unit Tests', () => {
|
||||
const string = 'We watched the footie match for a while.';
|
||||
const result = translator.translateBritish(string);
|
||||
|
||||
assert.equal(result, 'We watched <span class="highlight">soccer</span> match for a while.');
|
||||
assert.equal(result, 'We watched the <span class="highlight">soccer</span> match for a while.');
|
||||
done();
|
||||
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user