0.1.2 • Published 7 years ago

format-spec v0.1.2

Weekly downloads
2
License
MIT
Repository
github
Last release
7 years ago

format-spec

python-like format strings. Have a contrived example:

 > var Fruit = function(name, count) {
     this.name = name; this.count = count;
   };

 > Fruit.prototype.display = function() {
     return this.name + (this.count === 1 ? '' : 's');
   };

 > "{0} is {1.mood} and has {1.snack.count} {1.snack.display}.".format(
     "Tony",
     {
       snack: new Fruit('Orange', 4),
       mood: "hungry"
     }
   );

 < "Tony is hungry and has 4 Oranges."

or, using the module itself (imported as format_spec):

 > format_spec('{} and {}', 'cats', 'dogs');
 < "cats and dogs"

since js lacks keyword arguments, names without a position will look at the first argument. so {val} and {.val} are both equivalent to {0.val}.

if a given arg is a function, it'll be called with no arguments, and, if it's part of a nested name, with the assumption that its parent is the context. I sorta want to add some way to specify arguments, but that seems like more trouble that its worth. just make the call and pass the result into the format.

currently, only does basic interpolation, which is the part that's most useful to me, but I will add actual formatting at some point.

modifies the global String.prototype, adding a function called .format. at some point, I'll make it so that this can be configued via requirejs, but for now, calling format_spec.unbindGlobal([name]) will replace String.prototype.[name] with whatever was there when the module was loaded. name defaults to format. You can also bind whatever name you want with bindGlobal([name]), again, defaults to format.

0.1.2

7 years ago

0.1.1

7 years ago

0.1.0

7 years ago