UNPKG

@stackend/api

Version:

JS bindings to api.stackend.com

61 lines 1.85 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.generatePermalink = exports.splitPermalink = exports.getParentPermalink = void 0; var deburr_1 = __importDefault(require("lodash/deburr")); /** * Given a permalink, calculate the parent permalink * @param permalink */ function getParentPermalink(permalink) { if (!permalink) { return null; } if (permalink.endsWith('/')) { permalink = permalink.substr(0, permalink.length - 1); } var i = permalink.lastIndexOf('/'); if (i === -1) { return null; } var p = permalink.substring(0, i); return p ? p : null; } exports.getParentPermalink = getParentPermalink; /** * Split a permalink into it's parts * @param permalink * @returns {Array|Array<string>|null} */ function splitPermalink(permalink) { if (!permalink) { return null; } return permalink.split('/'); } exports.splitPermalink = splitPermalink; /** * Generate a permalink * @param permalink * @param typingMode Allow trailing dash */ function generatePermalink(permalink, typingMode) { if (!permalink) { return null; } // FIXME: Improve this. Does not match backend with regards to national characters. Should probably use the api. var pl = permalink.toLowerCase(); pl = (0, deburr_1.default)(pl); pl = pl.replace(/[ .:,;?!+_]/g, '-'); pl = pl.replace(/[^a-z0-9\-/]/g, ''); pl = pl.replace(/^-/, ''); pl = pl.replace(/--+/, '-'); if (typeof typingMode === 'undefined' || !typingMode) { pl = pl.replace(/-$/, ''); } return !pl ? null : pl; } exports.generatePermalink = generatePermalink; //# sourceMappingURL=permalink.js.map