d11 theme
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

97 lines
4.1 KiB

"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