

Humanize: my first open source package, mostly a rewrite - dewmop
https://github.com/taijinlee/humanize

======
coderdude
You should check out the 'quantification' features of this Python lib called
Pattern: <http://www.clips.ua.ac.be/pages/pattern-en>

    
    
      >>> from pattern.en import quantify
      >>> print quantify(['goose', 'goose', 'duck', 'chicken', 'chicken', 'chicken'])
      >>> print quantify('carrot', amount=1000)
      >>> print quantify({'carrot': 100, 'parrot': 20})
     
      several chickens, a pair of geese and a duck
      hundreds of carrots
      dozens of carrots and a score of parrots
    

This is useful functionality to include. It's practically cheating to port
Python to JavaScript so it shouldn't be hard to adapt the relevant parts of
the code to your project. (Well, depending on how much of it depends on the
pluralization/singularization portions of Pattern.)

~~~
gouranga
That's awesome. I needed that last week ironically.

Thanks for posting.

~~~
sjwright
Ironically?

~~~
gouranga
coincidental; unexpected.

Bloody pedants! Learn English.

~~~
sjwright
Irony is not coincidence, unexpected or otherwise.

~~~
gouranga
Open a dictionary and take a look...

Here I saved you the effort seeing as you're obviously incapable:

[http://m.dictionary.com/d/?q=ironic&o=0&l=dir](http://m.dictionary.com/d/?q=ironic&o=0&l=dir)

~~~
sjwright
Irony isn't a concept that lends itself to a trivial definition. That
particular dictionary definition you cite isn't _completely_ wrong, but it
does suffer greatly from being overly terse.

The Merriam-Webster definition is _much_ better: <http://www.merriam-
webster.com/dictionary/irony>

\--

Furthermore, dictionary definitions aren't two way streets, not everything
that fits a description therefore matches the word. Imitate, the verb, can
mean _to make a copy of_. "Please wait while I imitate the receipt for you."

------
wyuenho
This is nice if you just want a really really lightweight date humanizer with
no i18n support. If you want a full-blown date/time
parser/formatter/humanizer, I highly recommend moment.js

<http://momentjs.com/>

~~~
dewmop
Thanks, I had no idea momentjs existed. It's a lot fancier, and likely less
buggy ;)

------
gojomo

      humanize.filesize(1234567890); // '1.15 Gb'
    

You should use a capital 'B' for byte filesizes to avoid confusion with
'b'its.

And, you might want to let the user choose between decimal or binary prefixes
(rather than the 'kilo' redefinition).

1234567890 bytes is 1.23 GB in pedantic application of SI naming, as used by
MacOS and Ubuntu GUIs after a certain point.

1234567890 bytes is 1.15 GiB by the IEC standard for base-2 units, which is
also "1.15 GB" by the older we-hope-context-makes-things-clear tradition.

See the approach of python humanize for one way to parameterize the output:

<http://pypi.python.org/pypi/humanize>

And see the Ubuntu Units Policy for some reasonable suggestions for when to
use which kinds of units:

<https://wiki.ubuntu.com/UnitsPolicy>

------
chewxy
hah I clicked on it thinking it was the python package Humanize. Still, pretty
cool

