"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.calcSettingsForLanguageId = exports.calcUserSettingsForLanguage = exports.calcSettingsForLanguage = exports.isLocalInSet = exports.normalizeLocal = exports.normalizeLanguageId = exports.getDefaultLanguageSettings = void 0; const SpellSettings = __importStar(require("./CSpellSettingsServer")); const defaultLocal = 'en'; const defaultLanguageSettings = []; function getDefaultLanguageSettings() { return defaultLanguageSettings; } exports.getDefaultLanguageSettings = getDefaultLanguageSettings; function stringToList(sList) { if (typeof sList === 'string') { sList = sList .replace(/[|;]/g, ',') .split(',') .map((s) => s.trim()); } return sList; } function normalizeLanguageId(langId) { const langIds = stringToList(langId); return new Set(langIds.map((a) => a.toLowerCase())); } exports.normalizeLanguageId = normalizeLanguageId; function normalizeLanguageIdToString(langId) { return [...normalizeLanguageId(langId)].join(','); } function normalizeLocal(local) { local = stringToList(local); return new Set(local.map((local) => local.toLowerCase().replace(/[^a-z]/g, ''))); } exports.normalizeLocal = normalizeLocal; function isLocalInSet(local, setOfLocals) { const locals = normalizeLocal(local); return [...locals.values()].filter((local) => setOfLocals.has(local)).length > 0; } exports.isLocalInSet = isLocalInSet; function calcSettingsForLanguage(languageSettings, languageId, local) { languageId = languageId.toLowerCase(); const allowedLocals = normalizeLocal(local); return defaultLanguageSettings .concat(languageSettings) .filter((s) => !s.languageId || s.languageId === '*' || normalizeLanguageId(s.languageId).has(languageId)) .filter((s) => !s.local || s.local === '*' || isLocalInSet(s.local, allowedLocals)) .map((langSetting) => { const id = normalizeLanguageIdToString(langSetting.local || langSetting.languageId || 'language'); const { languageId: _languageId, local: _local, ...s } = { id, ...langSetting }; return s; }) .reduce((langSetting, setting) => ({ ...SpellSettings.mergeSettings(langSetting, setting), languageId, local, }), {}); } exports.calcSettingsForLanguage = calcSettingsForLanguage; function calcUserSettingsForLanguage(settings, languageId) { const { languageSettings = [], language: local = defaultLocal } = settings; const defaults = { allowCompoundWords: settings.allowCompoundWords, enabled: settings.enabled, }; const langSettings = { ...defaults, ...calcSettingsForLanguage(languageSettings, languageId, local), }; return SpellSettings.mergeSettings(settings, langSettings); } exports.calcUserSettingsForLanguage = calcUserSettingsForLanguage; function calcSettingsForLanguageId(baseSettings, languageId) { const langIds = ['*'].concat(languageId instanceof Array ? languageId : [languageId]); const langSettings = langIds.reduce((settings, languageId) => { return calcUserSettingsForLanguage(settings, languageId); }, baseSettings); return langSettings; } exports.calcSettingsForLanguageId = calcSettingsForLanguageId; //# sourceMappingURL=LanguageSettings.js.map