Created
November 23, 2018 02:42
-
-
Save kalysr/7069d0ad3ab982eea749536ba1e1eb7f to your computer and use it in GitHub Desktop.
timeAgo, pluralize, escapeHtml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
export function timeAgo(time, label = 'ago') { | |
const between = Date.now() / 1000 - Number(time); | |
let lb = ' ' + label; | |
let secPerMinute = 60; | |
let secPerHour = secPerMinute * 60; | |
let secPerDay = secPerHour * 24; | |
let secPerMonth = secPerDay * 30; | |
let secPerYear = secPerDay * 365; | |
if (between < secPerHour) { | |
if (~~(between / secPerMinute) === 0) | |
return 'now'; | |
return pluralize(~~(between / secPerMinute), ' min') + lb; | |
} else if (between < secPerDay) { | |
return pluralize(~~(between / secPerHour), ' hour') + lb; | |
} else if (between < secPerMonth) { | |
return pluralize(~~(between / secPerDay), ' day') + lb; | |
} else if (between < secPerYear) { | |
return pluralize(~~(between / secPerMonth), ' month') + lb; | |
} else { | |
return pluralize(~~(between / secPerYear), ' year') + lb; | |
} | |
} | |
function pluralize(time, label) { | |
if (time === 1) { | |
return time + label | |
} | |
return time + label + 's' | |
} | |
export function escapeHtml(text) { | |
if (!text) return ""; | |
return text | |
.replace(/&/g, "&") | |
.replace(/</g, "<") | |
.replace(/>/g, ">") | |
.replace(/"/g, """) | |
.replace(/'/g, "'"); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment