crunch-node/helper.js

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
}