Settings

Theme

JS Humanize (Give data a human touch)

github.com

40 points by mvrekic 14 years ago · 24 comments · 1 min read

Reader

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.

callumjones 14 years ago

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.

  • chetan51 14 years ago

    I've removed the jQuery dependency and submitted a pull request (https://github.com/milanvrekic/JS-humanize/pull/1).

  • Groxx 14 years ago

    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.

  • TamDenholm 14 years ago

    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.

  • mvrekicOP 14 years ago

    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

ctz 14 years ago

  filesizeformat (1234567890 = 1.15 Gb)
This should be either 9.20 Gb or 1.15 GB.
sirn 14 years ago

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.
whalesalad 14 years ago

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

chrisbroadfoot 14 years ago

Two things:

1) Gb should be GiB

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

chris_wot 14 years ago

This might need some internationalization support...

  • _pferreir_ 14 years ago

    I totally agree. i.e. plural should be handled by i18n libraries. Same thing for the thousands separator, different locales use different separators/styles.

  • alastairpat 14 years ago

    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.

    • Estragon 14 years ago

      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...

    • alastairpat 14 years ago

      You'll probably need to start a new account, unfortunately – there doesn't appear to be any protocol for being 'unhellbanned'.

mahmud 14 years ago

All of them are built into Play Framework, fwiw.

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection