JS Humanize (Give data a human touch) (github.com)

40 points by mvrekic ↗ HN
If you are familiar with Django you are familiar with a nice set of template tags called "humanize". In essence it turns data such as "13 April 2012" into "2 days ago" or "1000000000" into "1.0 billion". JS Humanizer is a jQuery counterpart to the Django humanize template tags we wrote and thought that others might find it useful too.

24 comments

[ 2.8 ms ] story [ 77.4 ms ] thread
Is it possible to have these in a stand alone library/namespace without the need for bringing the whole of jQuery with it? Not everyone uses jQuery in their JS application and it certainly would aid those who perform server-side JS.
IMO it's especially heinous because I didn't see a single piece of jQuery use in the code (I may have missed it, though). All they seem to be requiring jQuery for is to add to the $ namespace.

That pedantry aside, it seems like a decent enough chunk of code, and it's very easy to read. More libraries should be this clean.

This is perhaps an inelegant solution but i've found it useful sometimes, you can get standalone functions of most of these by using a JS port of PHP functions called phpjs (phpjs.org), while i understand PHP is as cool as toe fungus on HN right now, its a solution.

EDIT: Actually having now looked at the code, it seems a lot of it is specifically using the phpjs library.

jQuery bit was originally intended to make it compatible with require.js loading; chetan51, Groxx - thanks for pointing it out. We removed that bit but we missed the dependancy, removed now thanks to chetan51
Nice work! Might want to update the README - it's no longer a jQuery plugin.
Sweet! Might be needing this library very soon!
This might need some internationalization support...
I totally agree. i.e. plural should be handled by i18n libraries. Same thing for the thousands separator, different locales use different separators/styles.
pferreir, just a heads-up - you've been hellbanned. This means all of your comments are automatically marked as [dead], but you can't see this.
(comment deleted)
Hellbanned? What is that supposed to mean? I don't remember having done anything wrong.
Pferreir, hellbanning is where your posts appear normally when rendered for your account, but do not show up for anyone else. Try viewing this thread using a freshly created HN account.

Don't know why this has happened to you...

Thanks for the heads up.

I mean, I noticed that I received some downvotes for a comment I made on a particular post:

http://news.ycombinator.com/item?id=2849016

But nothing that justifies a ban. I am not a troll, let alone a recurrent one. Not to mention that the practice of hellbanning is highly unfair and misleading.

Any clue on who I should contact to clear this out?

You'll probably need to start a new account, unfortunately – there doesn't appear to be any protocol for being 'unhellbanned'.
What do you mean? Hasn't anyone thought that people could be banned by mistake?

This is terribly unfair and nonsensical.

Not that I have a lot to lose by abandoning this account, but as a matter of principle it would be nice to have it back, as it is clear that I haven't done anything that deserves such a punishment.

I'm just the messenger – by no means am I in any way associated with HN.
I totally agree. i.e. plural should be handled by i18n libraries. Same thing for the thousands separator, different locales use different separators/styles.
This is great! I love how it aligns with the Django templating system as well =) Although I do agree that this might be better off a something that is framework independent. A while ago I posted an example on Forrst of how you might write a simple and pure-js shorten function: https://forrst.com/posts/JavaScript_Shorten_Function-1up
Nice idea, but seems to lack of any input escaping.

    => Humanize.truncatechars("<script>alert('yo');<\/script>", 30)
       "<script>alert('yo');</script>"

    => Humanize.linebreaks("<script>alert('yo');<\/script>")
       "<p><script>alert('yo');</script></p>"
Bug filed.

  filesizeformat (1234567890 = 1.15 Gb)
This should be either 9.20 Gb or 1.15 GB.
Two things:

1) Gb should be GiB

2) it would be lovely to see some internationalisation support.

All of them are built into Play Framework, fwiw.