Re: Implement customizable number formatter

Daniel Dekany <[email protected]> Fri, 21 Aug 2015 21:46:33 +0200
Newsgroups gmane.comp.web.freemarker.devel
Message-ID <[email protected]>
RnJpZGF5LCBBdWd1c3QgMjEsIDIwMTUsIDM6MTk6MzYgUE0sIEVybnN0IFBsw7xzcyB3cm90ZToK
Cj4gSGVsbG8gRGFuaWVsCj4KPiBNYW55IHRoYW5rcyBmb3IgeW91ciBleHRlbnNpdmUgcmVzcG9u
c2UhCj4KPiBJIGRpZG4ndCBhc2sgdG8gd29yayBhaGFlYWQuIEkgd2FudGVkIHRvIGNoZWNrIHdo
ZXRoZXIgSSBjb3VsZAo+IGltcGxlbWVudCB0aGUgZmVhdHJ1ZSBhbmQgY3JlYXRlIGEgcHVsbCBy
ZXF1ZXN0IGluIHJlYXNvbmFibGUgdGltZSAgCj4KPiBBY3R1YWxseSBJJ20gbG9va2luZyBmb3Ig
c29tZXRoaW5nIGRpZmZlcmVudC4gV2hhdCBJIG5lZWQgaXMgYSB3YXkKPiB0byBtYWtlIHN1cmUg
KmV2ZXJ5KiBCaWdEZWNpbWFsIChvciB3aGF0aGV2ZXIgdHlwZSBJJ20gYWZ0ZXIpIGlzCj4gdHJh
bnNmb3JtZWQgdG8gYSBTdHJpbmcgYnkgdXNlciBkZWZpbmVkIGNvZGUuIFNpbmNlIHRoZSBmb3Jt
YXR0aW5nCj4gZGVwZW5kcyBvbiB0aGUgdmFsdWUgb2YgdGhlIEJpZ0RlY2ltYWwsIEkgY2Fubm90
IHVzZSBhIHN0YXRpYyBwYXR0ZXJuLgo+Cj4gQXMgb2Ygbm93IEkgcmVnaXN0ZXJlZCBhICJmb3Jt
YXRCaWdEZWNpbWFsKCkiIGZ1bmN0aW9uIHdoaWNoIGRvZXMKPiB0aGlzLiBCdXQgZXZlcnkgbm93
IGFuZCB0aGVuIGEgZGV2ZWxvcGVyIGZvcmdldHMgdG8gdXNlIGl0IGFuZCB3ZSBlbmQgdXAgd2l0
aCB3cm9uZyBvdXRwdXQuCj4KPiBJIHRoaW5rIHdyaXRpbmcKPgo+ICR7eD9zdHJpbmcoIkBmb3Jt
YXRCaWdEZWNpbWFsIil9Cj4KPiBpbnN0ZWFkIG9mCj4KPiBmb3JtYXRCaWdEZWNpbWFsKCR7dmFs
dWV9KQo+Cj4gZG9lc24ndCBicmluZyBhbnkgYmVuZWZpdCBpbiBteSBzaXR1YXRpb24uCgpJdCBz
b3VuZHMgbGlrZSBzb21ldGhpbmcgdGhhdCB5b3Ugd2lsbCBiZSBhYmxlIHRvIGhhbmRsZSBlYXNp
bHkgd2l0aAp0aGUgcGxhbm5lZCBmb3JtYXR0ZXIgZmVhdHVyZS4gWW91IGhhdmUgYSBzaGFyZWQg
c2luZ2xldG9uCkNvbmZpZ3VyYXRpb24gb2JqZWN0LCBhbmQgdGhlcmUgeW91IGNhbGwgc2V0TnVt
YmVyRm9ybWF0KFN0cmluZykgd2l0aAoiQGZvcm1hdEJpZ0RlY2ltYWwiIG9yIHdoYXRldmVyIHlv
dSB3aWxsIGNhbGwgaXQuIEFzIHlvdXIgcmVnaXN0ZXJlZApmb3JtYXR0ZXIsIGFuZCBoZW5jZSB5
b3VyIG93biBKYXZhIGNvZGUgZ2V0cyB0aGUgTnVtYmVyIHRvIGZvcm1hdCAodGhlCndob2xlIFRl
bXBsYXRlTnVtYmVyTW9kZWwsIGFjdHVhbGx5KSwgaXQgY2FuIGRlY2lkZSB3aGF0IHRvIGRvIGJh
c2VkCm9uIHRoZSBudW1iZXIgdHlwZSBhbmQgdmFsdWUuIChQYXJzaW5nIHRoZSBwYXJ0IGFmdGVy
IHRoZSBAbmFtZSBpcwphbHNvIGVudGlyZWx5IHVwIHRvIHRoZSBjdXN0b20gbnVtYmVyIGZvcm1h
dHRlcjsgdGhlIDAuMDAgcGF0dGVybnMgd2FzCmp1c3QgYW4gZXhhbXBsZS4pIFNvLCBpbiB0aGUg
dGVtcGxhdGUgeW91IGp1c3Qgd3JpdGUgJHt4fS4KCi0tIApUaGFua3MsCiBEYW5pZWwgRGVrYW55
Cgo+IFJlZ2FyZHMKPiBFcm5zdAo+Cj4KPgo+IDIwMTUtMDgtMjEgMTQ6NTUgR01UKzAyOjAwIERh
bmllbCBEZWthbnkgPGRkZWthbnlAZnJlZW1haWwuaHU+Ogo+IEkgaGF2ZW4ndCBzdGFydGVkIHdv
cmtpbmcgb24gdGhhdCB5ZXQuIEkgKmhvcGUqIEkgY2FuIHN0YXJ0IGl0Cj4gdG9tb3Jyb3cgb3Ig
c28uIFNvIEknbSBub3QgeWV0IDEwMCUgc3VyZSBob3cgaXQgd2lsbCBsb29rLiBJIG9ubHkga25v
dwo+IGZvciBzdXJlIHRoYXQgaXQgbXVzdCBiZSBmaW5pc2hlZCBkdXJpbmcgdGhlIG5leHQgd2Vl
ay4gKDogU28gSQo+IHJlY29tbWVuZCB5b3UgdG8ganVzdCBxdWlja2x5IHNob3ZlIGluIHlvdXIg
TnVtYmVyRm9ybWF0IGNsYXNzIHdoZXJlCj4gRnJlZU1hcmtlciBjcmVhdGVzIHRoZSBEZWNpbWFs
Rm9ybWF0LXMsIGFuZCB3YWl0IHdoYXQgd2lsbCBoYXBwZW4gbmV4dAo+IHdlZWsuLi4gWW91IGNh
bid0IHJlYWxseSB3b3JrIGFoZWFkLgo+Cj4gVG8gYW5zd2VyIHlvdXIgcXVlc3Rpb24sIEVudmly
b25tZW4uZm9ybWF0TnVtYmVyKE51bWJlcikgaXMgYW5kCj4gcmVtYWlucyBhIHBvaW50IHdoZXJl
IG51bWJlciBmb3JtYXR0aW5nIHdpdGggdGhlIGN1cnJlbnQgZm9ybWF0IGdvZXMKPiB0aHJvdWdo
LCBvZiBjb3Vyc2UuIFRoZSBpbnRlcmVzdGluZyB0aGluZyBpcyB0aG91Z2ggaWYgaG93IHdpbGwg
bnVtYmVyCj4gZm9ybWF0dGVycyBiZSByZXByZXNlbnRlZCAobm90IGphdmEudGV4dC5OdW1iZXJG
b3JtYXQgYW55bW9yZSBbKl0pLAo+IGFuZCB3aGF0IG9iamVjdCB3aWxsIGNyZWF0ZSB0aGVtLiBU
aGUgKGluaGVyaXRlZCkgbG9naWMgb2YgRnJlZU1hcmtlcgo+IGlzIHRoYXQgeW91IHNwZWNpZnkg
YSAqc3RyaW5nKiBhcyB0aGUgIm51bWJlcl9mb3JtYXQiIHNldHRpbmcgKHdoaWNoCj4gY2FuIGV2
ZW4gYmUgY2hhbmdlZCBpbnNpZGUgdGhlIHRlbXBsYXRlLCBpbiBydW50aW1lKSwgYW5kIHRoZW4K
PiBpbnRlcm5hbGx5IHRoYXQgYmVjb21lcyB0byBhIGNhY2hlZCghKSBEZWNpbWFsRm9ybWF0IG9i
amVjdCBmb3IgdGhlCj4gY3VycmVudCBMb2NhbGUuIFNvIGNlcnRhaW5seSwgdGhlcmUgd2lsbCBi
ZSBzb21lIHNpbXBsZSBpbnRlcmZhY2UgbGlrZQo+IGZyZWVtYXJrZXIuY29yZS5OdW1iZXJGb3Jt
YXR0ZXIsIGFuZCB0aGVuIHlvdSB3aWxsIG5lZWQgdG8gcmVnaXN0ZXIgYQo+IGZyZWVtYXJrZXIu
Y29yZS5OdW1iZXJGb3JtYXR0ZXJGYWN0b3J5IHdpdGggYSB1bmlxdWUgbmFtZSAobGV0J3Mgc2F5
Cj4gInByaWNlIiksIHdoaWNoIHRoZW4geW91IGNhbiByZWZlciB0byBsaWtlCj4gY2ZnLnNldE51
bWJlckZvcm1hdCgiQHByaWNlIiksIDwjc2V0dGluZyBudW1iZXJGb3JtYXQ9IkBwcmljZSI+LAo+
ICR7eD9zdHJpbmcoIkBwcmljZSIpfSwgZXRjLiBBbmQgc28gdGhlcmUsIHRoZSBmYWN0b3J5IGhh
cyBhIGNoYW5jZSB0bwo+IGNhY2hlLiBGdXJ0aGVybW9yZSwgYWZ0ZXIgdGhlIG51bWJlciBmb3Jt
YXQgc3RyaW5nIHdhcyBkZWxlZ2F0ZWQgdG8KPiB0aGUgTnVtYmVyRm9ybWF0RmFjdG9yeSBiYXNl
ZCBvbiB0aGUgbmFtZSBhZnRlciB0aGUgIkAiLCBpdCB3aWxsIGdldAo+IHRoZSBmb3JtYXQgc3Ry
aW5nIGZvciBwYXJzaW5nLCBzbyB0aGF0IHN0dWZmIGxpa2UgIkBwcmljZSAwLjAwIiBjYW4gYmUK
PiBpbXBsZW1lbnRlZC4gU28gdGhvc2UgYXJlIG15IGluaXRpYWwgdGhvdWdodHMuIChJIHdpbGwg
cmV2aWV3IGhvdyBkYXRlCj4gZm9ybWF0dGluZyB3b3Jrcywgd2hpY2ggaGFzIGEgc2ltaWxhcmx5
IGZhbmN5IGFyY2hpdGVjdHVyZSBmb3IgYQo+IHdoaWxlLCBvbmx5IHRoYXQncyBub3QgYSBwdWJs
aWMgQVBJLi4uIHlldC4pCj4KPiAqOiBXaHkgbm90IE51bWJlckZvcm1hdD8gVHdvIHJlYXNvbnM6
Cj4KPiAgICAoYSkgT25lIGltcG9ydGFudCBnb2FsIG9mIHBsdWdnYWJsZSBudW1iZXIgZm9ybWF0
dGVycyB3aWxsIGJlCj4gICAgICAgIGF1dG9tYXRpYyB1bml0IHByaW50aW5nLiBJbiBzb21lIGFw
cHMsIHRoZSB0ZW1wbGF0ZSBhdXRob3JzCj4gICAgICAgIGFyZW4ndCBzdXBwb3NlZCB0byBwcmlu
dCB0aGUgdW5pdHMgbWFudWFsbHkuIExpa2UgJHtwcmljZX0sCj4gICAgICAgIHdoZXJlIHByaWNl
IGlzIGEgbnVtYmVyLCBzaG91bGQgYXV0b21hdGljYWxseSBwcmludCAiMTAwMCBFVVIiCj4gICAg
ICAgIG9yIHN1Y2guIFRoYXQgcmVxdWlyZXMgdGhlIGZvcm1hdHRlciB0byBnZXQgdGhlCj4gICAg
ICAgIFRlbXBsYXRlTnVtYmVyTW9kZWwgaW5zdGVhZCBvZiBqdXN0IHRoZSBOdW1iZXIsIGFzIGl0
J3MgdGhlCj4gICAgICAgIFRlbXBsYXRlTnVtYmVyTW9kZWwgdGhhdCBjYXJyaWVzIHRoZSByZXF1
aXJlZCBtZXRhLWluZm9ybWF0aW9uLgo+Cj4gICAgKGIpIE51bWJlciBmb3JtYXQgaXMgd2F5IHRv
byBibG9hdGVkIGlmIHVzZXJzIG1lYW50IHRvIGltcGxlbWVudCBpdAo+ICAgICAgICBmb3Igc29t
ZSBhZC1ob2MgbnVtYmVyIGZvcm1hdC4KPgo+IC0tCj4gVGhhbmtzLAo+ICBEYW5pZWwgRGVrYW55
Cj4KPgo+IEZyaWRheSwgQXVndXN0IDIxLCAyMDE1LCAxMToyMDoxMiBBTSwgRXJuc3QgUGzDvHNz
IHdyb3RlOgo+Cj4+IEhlbGxvCj4+Cj4+IEZyb20KPj4gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29t
L3F1ZXN0aW9ucy8zMjExMTIzNC9ob3ctdG8taW1wbGVtZW50LWxvZ2ljLWZvci1iaWdkZWNpbWFs
LXJlbmRlcmluZy1pbi1mcmVlbWFya2VyCj4+IEkgbGVhcm5kZWQsIHRoYXQgc29tZSBraW5kIG9m
IHBsdWdhYmxlIG51bWJlciBmb3JtYXR0ZXIgc2hvdWxkIGNvbWUgc29vbi4KPj4KPj4gSXMgdGhl
cmUgYWxyZWRheSBhbnkgY29kZSBvbiBnaXRodWIgZm9yIHRoaXM/Cj4+Cj4+IElmIG5vdCwgd2hh
dCdzIHRoZSBnZW5lcmFsIGFwcm9hY2ggYWRkIHRoaXMgZnVuY3Rpb25hbGl0eT8gQWZ0ZXIKPj4g
aGF2aW5nIGEgbG9vayBhdCB0aGUgc291cmNlcywgSSB0aGluayBJIGNvdWxkIGJ1aWx0IHRoaXMg
aW50bwo+PiBFbnZpcm9ubWVuLmZvcm1hdE51bWJlcihOdW1iZXIgbnVtYmVyKS4gSXMgdGhpcyB0
aGUgaW50ZW5kZWQgd2F5IHRvIGltcGxlbWVudCB0aGlzPwo+Pgo+PiBSZWdhcmRzCj4+IEVybnN0
Cj4+Cj4KPgoKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpGcmVlTWFya2VyLWRldmVsIG1haWxpbmcgbGlzdApGcmVl
TWFya2VyLWRldmVsQGxpc3RzLnNvdXJjZWZvcmdlLm5ldApodHRwczovL2xpc3RzLnNvdXJjZWZv
cmdlLm5ldC9saXN0cy9saXN0aW5mby9mcmVlbWFya2VyLWRldmVsCg==