aubade
Version:
filesystem-based content processor
11 lines (10 loc) • 489 B
JavaScript
const separators = /[\s\][!"#$%&'()*+,./:;<=>?@\\^_{|}~-]/g;
export function escape(source) {
const symbols = { '&': '&', '<': '<', '>': '>', '"': '"', "'": ''' };
return source.replace(/[&<>"']/g, (s) => symbols[s]);
}
export function uhi(title) {
const cleaned = title.toLowerCase().replace(separators, '-');
const normalized = cleaned.replace(/`/g, '').replace(/-+/g, '-');
return normalized.replace(/^-*(.+?)-*$/, '$1'); // hyphen at the sides
}