import { Assert, UnitTest } from '@ephox/bedrock-client'; import { Arr } from '@ephox/katamari'; import * as Chars from 'ephox/polaris/pattern/Chars'; UnitTest.test('CharsTest', () => { const supported = [ 'fr', 'en_au', 'pt', 'it', 'nl', 'en_uk', 'pt_pt', 'de', 'nb', 'en_br', 'sv', 'da', 'en', 'es', 'en_gb', 'fi', 'en_us' ]; interface Extra { label: string; html: string; chars: string; } const extras: Record = { fr: { label: 'French language', html: 'http://character-code.com/french-html-codes.php || https://www.cs.tut.fi/~jkorpela/html/french.html', chars: 'àÀâÂèÈéÉêÊëËîÎïÏôÔùÙûÛüÜÿŸçÇœŒ' + 'ÀàÂâÆæÇçÈèÉéÊêËëÎîÏïÔôŒœÙùÛûÜü' }, en_au: { label: 'English (Aus)', html: '', chars: '' }, pt: { label: 'Brazilian Portuguese', html: 'http://www.geocities.ws/click2speak/unicode/chars_pt.html', chars: 'ÀàÁáÂâÃãÉéÊêÍíÒòÓóÔôÕõÚúÜüÇç' }, it: { label: 'Italian', html: 'https://mcaboni.wordpress.com/2012/01/09/107/', chars: 'àÈèéìòù' }, nl: { label: 'Dutch', html: 'http://symbolcodes.tlt.psu.edu/bylanguage/dutch.html', chars: 'ÁÉÍÓÚÝ áéíóúý ÄËÏÖÜŸ äëïöüÿ ÀÈÌÒÙ àèìòù ÂÊÎÔÛ âêîôû' }, en_uk: { label: 'English (UK)', html: '', chars: '' }, pt_pt: { label: 'European Portuguese', html: 'http://www.geocities.ws/click2speak/unicode/chars_pt.html', chars: 'ÀàÁáÂâÃãÉéÊêÍíÓóÔôÕõÚúÇç' }, de: { label: 'German', html: 'http://character-code.com/german-html-codes.php', // TINY-7908: Including \u00AD (soft hyphens) because they appear to be more common in German text chars: 'ÄäÉéÖöÜüß\u00AD' }, nb: { label: 'Norwegian', html: 'http://symbolcodes.tlt.psu.edu/bylanguage/nordic.html', chars: 'ÅåÆæØø' }, en_br: { label: 'English (British)', html: '', chars: '' }, sv: { label: 'Swedish', html: 'http://symbolcodes.tlt.psu.edu/bylanguage/nordic.html', chars: 'ÅåÄäÖö' }, da: { label: 'Danish', html: 'http://symbolcodes.tlt.psu.edu/bylanguage/nordic.html', chars: 'ÅåÆæØø' }, en: { label: 'English', html: '', chars: '' }, es: { label: 'Spanish', html: 'http://character-code.com/spanish-html-codes.php', chars: 'ÁáÉéÍíÑñÓóÚúÜü' }, en_gb: { label: 'English (GB)', html: '', chars: '' }, fi: { label: 'Finnish', html: 'http://symbolcodes.tlt.psu.edu/bylanguage/nordic.html', chars: 'ÅåÄäÖö' }, en_us: { label: 'English (US)', html: '', chars: '' } }; const regex = new RegExp(Chars.wordchar(), ''); const checkAllKnown = (label: string, str: string) => { const chars = str.split(''); const breaks = Arr.filter(chars, (c) => { return !regex.test(c); }); const leftovers = breaks.join('').trim(); Assert.eq( 'Test: ' + label + '\nExpected all characters in: \n\n"' + str + '" to be known. \nUnknown: ' + leftovers, 0, leftovers.length ); }; Arr.each(supported, (code) => { const info = extras[code]; checkAllKnown(info.label, info.chars); }); });