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
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
|