(function (factory) { if (typeof module === "object" && typeof module.exports === "object") { var v = factory(require, exports); if (v !== undefined) module.exports = v; } else if (typeof define === "function" && define.amd) { define(["require", "exports", "../cssLanguageTypes"], factory); } })(function (require, exports) { /*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.getBrowserLabel = exports.textToMarkedString = exports.getEntryDescription = exports.browserNames = void 0; const cssLanguageTypes_1 = require("../cssLanguageTypes"); exports.browserNames = { E: 'Edge', FF: 'Firefox', S: 'Safari', C: 'Chrome', IE: 'IE', O: 'Opera' }; function getEntryStatus(status) { switch (status) { case 'experimental': return '⚠️ Property is experimental. Be cautious when using it.️\n\n'; case 'nonstandard': return '🚨️ Property is nonstandard. Avoid using it.\n\n'; case 'obsolete': return '🚨️️️ Property is obsolete. Avoid using it.\n\n'; default: return ''; } } function getEntryDescription(entry, doesSupportMarkdown, settings) { let result; if (doesSupportMarkdown) { result = { kind: 'markdown', value: getEntryMarkdownDescription(entry, settings) }; } else { result = { kind: 'plaintext', value: getEntryStringDescription(entry, settings) }; } if (result.value === '') { return undefined; } return result; } exports.getEntryDescription = getEntryDescription; function textToMarkedString(text) { text = text.replace(/[\\`*_{}[\]()#+\-.!]/g, '\\$&'); // escape markdown syntax tokens: http://daringfireball.net/projects/markdown/syntax#backslash return text.replace(//g, '>'); } exports.textToMarkedString = textToMarkedString; function getEntryStringDescription(entry, settings) { if (!entry.description || entry.description === '') { return ''; } if (typeof entry.description !== 'string') { return entry.description.value; } let result = ''; if (settings?.documentation !== false) { if (entry.status) { result += getEntryStatus(entry.status); } result += entry.description; const browserLabel = getBrowserLabel(entry.browsers); if (browserLabel) { result += '\n(' + browserLabel + ')'; } if ('syntax' in entry) { result += `\n\nSyntax: ${entry.syntax}`; } } if (entry.references && entry.references.length > 0 && settings?.references !== false) { if (result.length > 0) { result += '\n\n'; } result += entry.references.map(r => { return `${r.name}: ${r.url}`; }).join(' | '); } return result; } function getEntryMarkdownDescription(entry, settings) { if (!entry.description || entry.description === '') { return ''; } let result = ''; if (settings?.documentation !== false) { if (entry.status) { result += getEntryStatus(entry.status); } if (typeof entry.description === 'string') { result += textToMarkedString(entry.description); } else { result += entry.description.kind === cssLanguageTypes_1.MarkupKind.Markdown ? entry.description.value : textToMarkedString(entry.description.value); } const browserLabel = getBrowserLabel(entry.browsers); if (browserLabel) { result += '\n\n(' + textToMarkedString(browserLabel) + ')'; } if ('syntax' in entry && entry.syntax) { result += `\n\nSyntax: ${textToMarkedString(entry.syntax)}`; } } if (entry.references && entry.references.length > 0 && settings?.references !== false) { if (result.length > 0) { result += '\n\n'; } result += entry.references.map(r => { return `[${r.name}](${r.url})`; }).join(' | '); } return result; } /** * Input is like `["E12","FF49","C47","IE","O"]` * Output is like `Edge 12, Firefox 49, Chrome 47, IE, Opera` */ function getBrowserLabel(browsers = []) { if (browsers.length === 0) { return null; } return browsers .map(b => { let result = ''; const matches = b.match(/([A-Z]+)(\d+)?/); const name = matches[1]; const version = matches[2]; if (name in exports.browserNames) { result += exports.browserNames[name]; } if (version) { result += ' ' + version; } return result; }) .join(', '); } exports.getBrowserLabel = getBrowserLabel; });