64 lines
1.8 KiB
JavaScript
64 lines
1.8 KiB
JavaScript
// Helper functions
|
|
var crypto = require('crypto');
|
|
|
|
// sha256 hex-hashes password with supplied salt.
|
|
// Returns hex-hash string
|
|
exports.hashPassword = function(password, salt) {
|
|
var hash = crypto.createHash('sha256');
|
|
hash.update(password);
|
|
hash.update(salt);
|
|
return hash.digest('hex');
|
|
}
|
|
|
|
// Convert date() to epoch
|
|
exports.dateToEpoch = function(date) {
|
|
return Math.floor(date);
|
|
};
|
|
|
|
// Convert epoch (in seconds) to date string
|
|
exports.epochToDateString = function(epoch) {
|
|
var date = new Date(epoch);
|
|
return date.toLocaleString();
|
|
};
|
|
|
|
// Convert epoch to an ISO formatted date.
|
|
exports.epochToShortDateString = function(epoch) {
|
|
var date = new Date(epoch);
|
|
return date.toISOString().slice(0,10);
|
|
}
|
|
|
|
// Build a slug from a title string
|
|
// Returns the slug as a string
|
|
exports.makeSlug = function(str) {
|
|
str = str.replace(/^\s+|\s+$/g, ''); // trim
|
|
str = str.toLowerCase();
|
|
str = str.trim();
|
|
|
|
// remove accents, swap ñ for n, etc
|
|
var from = "àáäâèéëêìíïîòóöôùúüûñç·/_,:;&";
|
|
var to = "aaaaeeeeiiiioooouuuunc-------";
|
|
for (var i=0, l=from.length ; i<l ; i++) {
|
|
str = str.replace(new RegExp(from.charAt(i), 'g'), to.charAt(i));
|
|
}
|
|
|
|
str = str.replace(/[^a-z0-9 -]/g, '') // remove invalid chars
|
|
.replace(/\s+/g, '-') // collapse whitespace and replace by -
|
|
.replace(/-+/g, '-'); // collapse dashes
|
|
|
|
return str;
|
|
};
|
|
|
|
// Parse a string of tags
|
|
// Returns a list of tags
|
|
exports.parseTags = function(str) {
|
|
console.log('tag parse '+str);
|
|
str = str.replace(/,/g,'');
|
|
console.log('tag parse '+str);
|
|
var list = str.split(" ");
|
|
console.log('tag parse '+list);
|
|
for (var i = 0, size = list.length; i < size; i++) {
|
|
list[i] = list[i].trim();
|
|
}
|
|
console.log('tag parse '+list);
|
|
return list
|
|
}
|