Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | 1x 22x 22x 22x 1x 21x 1x 20x 1x 19x 19x 1x 18x 18x 8761x 8761x 25x | export const LANGUAGES = {}; export function addLanguage(languageDefinition) { var id = languageDefinition.id; Iif (!id) { throw new Error(`language definition missing an 'id' attribute`); } if (LANGUAGES[id]) { throw new Error(`language ${id} has already been added.`); } if (!languageDefinition.name) { throw new Error(`language definition for ${id} is missing a 'name' attribute.`); } if (!languageDefinition.getParser) { throw new Error(`language definition for ${id} is missing a 'getParser' function.`); } let parser = languageDefinition.getParser(); if (!(parser && typeof parser.parse == 'function')) { throw new Error( `getParser() function for language ${id} must return an object with a 'parse' function.` ); } LANGUAGES[id] = languageDefinition; return languageDefinition; } export function getLanguage(languageId) { Iif (!LANGUAGES[languageId]) { console.warn('Trying to get language', languageId, 'but it hasn\'t been added yet'); } return LANGUAGES[languageId]; } export function removeLanguage(languageId) { delete LANGUAGES[languageId]; } export function getLanguages() { return Object.values(LANGUAGES); } |