@stackend/api
Version:
JS bindings to api.stackend.com
61 lines • 1.85 kB
JavaScript
;
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