Re: Implement customizable number formatter
Daniel Dekany <[email protected]> Tue, 1 Sep 2015 02:25:08 +0200
| Newsgroups | gmane.comp.web.freemarker.devel |
|---|---|
| Message-ID | <[email protected]> |
U28sIHdlIGhhdmUgdGhlIGN1c3RvbSBudW1iZXIgZm9ybWF0cyBzdHVmZiwgYW5kIEkgaG9wZSBp dCdzIHZlcnkKY2xvc2UgdG8gdGhlIGZpbmFsIGZvcm0uIFlvdSBjYW4gcmVhZCBhYm91dCBpdCBo ZXJlLCB1bmRlciAiQ2hhbmdlcyBvbgp0aGUgSmF2YSBzaWRlIiBtb3N0bHk6Cmh0dHA6Ly9mcmVl bWFya2VyLm9yZy9idWlsZHMvMi4zLjI0LW5pZ2h0bHkvZG9jdW1lbnRhdGlvbi9faHRtbC92ZXJz aW9uc18yXzNfMjQuaHRtbAoKVGhlbiBzZWUgdGhlIEpVbml0IHRlc3RzIGluIHRoZSByZXBvIGhh cyBzb21lIGV4YW1wbGVzOgpodHRwczovL2dpdGh1Yi5jb20vZnJlZW1hcmtlci9mcmVlbWFya2Vy L2Jsb2IvMi4zLWdhZS9zcmMvdGVzdC9qYXZhL2ZyZWVtYXJrZXIvY29yZS9OdW1iZXJGb3JtYXRU ZXN0LmphdmEKCkJpbmFyeToKaHR0cDovL2ZyZWVtYXJrZXIub3JnL2J1aWxkcy8yLjMuMjQtbmln aHRseS9mcmVlbWFya2VyLmphcgoKTGV0IG1lIGtub3cgd2hhdCBkbyB5b3UgdGhpbmsuCgotLSAK VGhhbmtzLAogRGFuaWVsIERla2FueQoKCkZyaWRheSwgQXVndXN0IDIxLCAyMDE1LCAzOjE5OjM2 IFBNLCBFcm5zdCBQbMO8c3Mgd3JvdGU6Cgo+IEhlbGxvIERhbmllbAo+Cj4gTWFueSB0aGFua3Mg Zm9yIHlvdXIgZXh0ZW5zaXZlIHJlc3BvbnNlIQo+Cj4gSSBkaWRuJ3QgYXNrIHRvIHdvcmsgYWhh ZWFkLiBJIHdhbnRlZCB0byBjaGVjayB3aGV0aGVyIEkgY291bGQKPiBpbXBsZW1lbnQgdGhlIGZl YXRydWUgYW5kIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBpbiByZWFzb25hYmxlIHRpbWUgIAo+Cj4g QWN0dWFsbHkgSSdtIGxvb2tpbmcgZm9yIHNvbWV0aGluZyBkaWZmZXJlbnQuIFdoYXQgSSBuZWVk IGlzIGEgd2F5Cj4gdG8gbWFrZSBzdXJlICpldmVyeSogQmlnRGVjaW1hbCAob3Igd2hhdGhldmVy IHR5cGUgSSdtIGFmdGVyKSBpcwo+IHRyYW5zZm9ybWVkIHRvIGEgU3RyaW5nIGJ5IHVzZXIgZGVm aW5lZCBjb2RlLiBTaW5jZSB0aGUgZm9ybWF0dGluZwo+IGRlcGVuZHMgb24gdGhlIHZhbHVlIG9m IHRoZSBCaWdEZWNpbWFsLCBJIGNhbm5vdCB1c2UgYSBzdGF0aWMgcGF0dGVybi4KPgo+IEFzIG9m IG5vdyBJIHJlZ2lzdGVyZWQgYSAiZm9ybWF0QmlnRGVjaW1hbCgpIiBmdW5jdGlvbiB3aGljaCBk b2VzCj4gdGhpcy4gQnV0IGV2ZXJ5IG5vdyBhbmQgdGhlbiBhIGRldmVsb3BlciBmb3JnZXRzIHRv IHVzZSBpdCBhbmQgd2UgZW5kIHVwIHdpdGggd3Jvbmcgb3V0cHV0Lgo+Cj4gSSB0aGluayB3cml0 aW5nCj4KPiAke3g/c3RyaW5nKCJAZm9ybWF0QmlnRGVjaW1hbCIpfQo+Cj4gaW5zdGVhZCBvZgo+ Cj4gZm9ybWF0QmlnRGVjaW1hbCgke3ZhbHVlfSkKPgo+IGRvZXNuJ3QgYnJpbmcgYW55IGJlbmVm aXQgaW4gbXkgc2l0dWF0aW9uLgo+Cj4gUmVnYXJkcwo+IEVybnN0Cj4KPgo+Cj4gMjAxNS0wOC0y MSAxNDo1NSBHTVQrMDI6MDAgRGFuaWVsIERla2FueSA8ZGRla2FueUBmcmVlbWFpbC5odT46Cj4g SSBoYXZlbid0IHN0YXJ0ZWQgd29ya2luZyBvbiB0aGF0IHlldC4gSSAqaG9wZSogSSBjYW4gc3Rh cnQgaXQKPiB0b21vcnJvdyBvciBzby4gU28gSSdtIG5vdCB5ZXQgMTAwJSBzdXJlIGhvdyBpdCB3 aWxsIGxvb2suIEkgb25seSBrbm93Cj4gZm9yIHN1cmUgdGhhdCBpdCBtdXN0IGJlIGZpbmlzaGVk IGR1cmluZyB0aGUgbmV4dCB3ZWVrLiAoOiBTbyBJCj4gcmVjb21tZW5kIHlvdSB0byBqdXN0IHF1 aWNrbHkgc2hvdmUgaW4geW91ciBOdW1iZXJGb3JtYXQgY2xhc3Mgd2hlcmUKPiBGcmVlTWFya2Vy IGNyZWF0ZXMgdGhlIERlY2ltYWxGb3JtYXQtcywgYW5kIHdhaXQgd2hhdCB3aWxsIGhhcHBlbiBu ZXh0Cj4gd2Vlay4uLiBZb3UgY2FuJ3QgcmVhbGx5IHdvcmsgYWhlYWQuCj4KPiBUbyBhbnN3ZXIg eW91ciBxdWVzdGlvbiwgRW52aXJvbm1lbi5mb3JtYXROdW1iZXIoTnVtYmVyKSBpcyBhbmQKPiBy ZW1haW5zIGEgcG9pbnQgd2hlcmUgbnVtYmVyIGZvcm1hdHRpbmcgd2l0aCB0aGUgY3VycmVudCBm b3JtYXQgZ29lcwo+IHRocm91Z2gsIG9mIGNvdXJzZS4gVGhlIGludGVyZXN0aW5nIHRoaW5nIGlz IHRob3VnaCBpZiBob3cgd2lsbCBudW1iZXIKPiBmb3JtYXR0ZXJzIGJlIHJlcHJlc2VudGVkIChu b3QgamF2YS50ZXh0Lk51bWJlckZvcm1hdCBhbnltb3JlIFsqXSksCj4gYW5kIHdoYXQgb2JqZWN0 IHdpbGwgY3JlYXRlIHRoZW0uIFRoZSAoaW5oZXJpdGVkKSBsb2dpYyBvZiBGcmVlTWFya2VyCj4g aXMgdGhhdCB5b3Ugc3BlY2lmeSBhICpzdHJpbmcqIGFzIHRoZSAibnVtYmVyX2Zvcm1hdCIgc2V0 dGluZyAod2hpY2gKPiBjYW4gZXZlbiBiZSBjaGFuZ2VkIGluc2lkZSB0aGUgdGVtcGxhdGUsIGlu IHJ1bnRpbWUpLCBhbmQgdGhlbgo+IGludGVybmFsbHkgdGhhdCBiZWNvbWVzIHRvIGEgY2FjaGVk KCEpIERlY2ltYWxGb3JtYXQgb2JqZWN0IGZvciB0aGUKPiBjdXJyZW50IExvY2FsZS4gU28gY2Vy dGFpbmx5LCB0aGVyZSB3aWxsIGJlIHNvbWUgc2ltcGxlIGludGVyZmFjZSBsaWtlCj4gZnJlZW1h cmtlci5jb3JlLk51bWJlckZvcm1hdHRlciwgYW5kIHRoZW4geW91IHdpbGwgbmVlZCB0byByZWdp c3RlciBhCj4gZnJlZW1hcmtlci5jb3JlLk51bWJlckZvcm1hdHRlckZhY3Rvcnkgd2l0aCBhIHVu aXF1ZSBuYW1lIChsZXQncyBzYXkKPiAicHJpY2UiKSwgd2hpY2ggdGhlbiB5b3UgY2FuIHJlZmVy IHRvIGxpa2UKPiBjZmcuc2V0TnVtYmVyRm9ybWF0KCJAcHJpY2UiKSwgPCNzZXR0aW5nIG51bWJl ckZvcm1hdD0iQHByaWNlIj4sCj4gJHt4P3N0cmluZygiQHByaWNlIil9LCBldGMuIEFuZCBzbyB0 aGVyZSwgdGhlIGZhY3RvcnkgaGFzIGEgY2hhbmNlIHRvCj4gY2FjaGUuIEZ1cnRoZXJtb3JlLCBh ZnRlciB0aGUgbnVtYmVyIGZvcm1hdCBzdHJpbmcgd2FzIGRlbGVnYXRlZCB0bwo+IHRoZSBOdW1i ZXJGb3JtYXRGYWN0b3J5IGJhc2VkIG9uIHRoZSBuYW1lIGFmdGVyIHRoZSAiQCIsIGl0IHdpbGwg Z2V0Cj4gdGhlIGZvcm1hdCBzdHJpbmcgZm9yIHBhcnNpbmcsIHNvIHRoYXQgc3R1ZmYgbGlrZSAi QHByaWNlIDAuMDAiIGNhbiBiZQo+IGltcGxlbWVudGVkLiBTbyB0aG9zZSBhcmUgbXkgaW5pdGlh bCB0aG91Z2h0cy4gKEkgd2lsbCByZXZpZXcgaG93IGRhdGUKPiBmb3JtYXR0aW5nIHdvcmtzLCB3 aGljaCBoYXMgYSBzaW1pbGFybHkgZmFuY3kgYXJjaGl0ZWN0dXJlIGZvciBhCj4gd2hpbGUsIG9u bHkgdGhhdCdzIG5vdCBhIHB1YmxpYyBBUEkuLi4geWV0LikKPgo+ICo6IFdoeSBub3QgTnVtYmVy Rm9ybWF0PyBUd28gcmVhc29uczoKPgo+ICAgIChhKSBPbmUgaW1wb3J0YW50IGdvYWwgb2YgcGx1 Z2dhYmxlIG51bWJlciBmb3JtYXR0ZXJzIHdpbGwgYmUKPiAgICAgICAgYXV0b21hdGljIHVuaXQg cHJpbnRpbmcuIEluIHNvbWUgYXBwcywgdGhlIHRlbXBsYXRlIGF1dGhvcnMKPiAgICAgICAgYXJl bid0IHN1cHBvc2VkIHRvIHByaW50IHRoZSB1bml0cyBtYW51YWxseS4gTGlrZSAke3ByaWNlfSwK PiAgICAgICAgd2hlcmUgcHJpY2UgaXMgYSBudW1iZXIsIHNob3VsZCBhdXRvbWF0aWNhbGx5IHBy aW50ICIxMDAwIEVVUiIKPiAgICAgICAgb3Igc3VjaC4gVGhhdCByZXF1aXJlcyB0aGUgZm9ybWF0 dGVyIHRvIGdldCB0aGUKPiAgICAgICAgVGVtcGxhdGVOdW1iZXJNb2RlbCBpbnN0ZWFkIG9mIGp1 c3QgdGhlIE51bWJlciwgYXMgaXQncyB0aGUKPiAgICAgICAgVGVtcGxhdGVOdW1iZXJNb2RlbCB0 aGF0IGNhcnJpZXMgdGhlIHJlcXVpcmVkIG1ldGEtaW5mb3JtYXRpb24uCj4KPiAgICAoYikgTnVt YmVyIGZvcm1hdCBpcyB3YXkgdG9vIGJsb2F0ZWQgaWYgdXNlcnMgbWVhbnQgdG8gaW1wbGVtZW50 IGl0Cj4gICAgICAgIGZvciBzb21lIGFkLWhvYyBudW1iZXIgZm9ybWF0Lgo+Cj4gLS0KPiBUaGFu a3MsCj4gIERhbmllbCBEZWthbnkKPgo+Cj4gRnJpZGF5LCBBdWd1c3QgMjEsIDIwMTUsIDExOjIw OjEyIEFNLCBFcm5zdCBQbMO8c3Mgd3JvdGU6Cj4KPj4gSGVsbG8KPj4KPj4gRnJvbQo+PiBodHRw Oi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzMyMTExMjM0L2hvdy10by1pbXBsZW1lbnQt bG9naWMtZm9yLWJpZ2RlY2ltYWwtcmVuZGVyaW5nLWluLWZyZWVtYXJrZXIKPj4gSSBsZWFybmRl ZCwgdGhhdCBzb21lIGtpbmQgb2YgcGx1Z2FibGUgbnVtYmVyIGZvcm1hdHRlciBzaG91bGQgY29t ZSBzb29uLgo+Pgo+PiBJcyB0aGVyZSBhbHJlZGF5IGFueSBjb2RlIG9uIGdpdGh1YiBmb3IgdGhp cz8KPj4KPj4gSWYgbm90LCB3aGF0J3MgdGhlIGdlbmVyYWwgYXByb2FjaCBhZGQgdGhpcyBmdW5j dGlvbmFsaXR5PyBBZnRlcgo+PiBoYXZpbmcgYSBsb29rIGF0IHRoZSBzb3VyY2VzLCBJIHRoaW5r IEkgY291bGQgYnVpbHQgdGhpcyBpbnRvCj4+IEVudmlyb25tZW4uZm9ybWF0TnVtYmVyKE51bWJl ciBudW1iZXIpLiBJcyB0aGlzIHRoZSBpbnRlbmRlZCB3YXkgdG8gaW1wbGVtZW50IHRoaXM/Cj4+ Cj4+IFJlZ2FyZHMKPj4gRXJuc3QKPj4KPgo+CgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkZyZWVNYXJrZXItZGV2 ZWwgbWFpbGluZyBsaXN0CkZyZWVNYXJrZXItZGV2ZWxAbGlzdHMuc291cmNlZm9yZ2UubmV0Cmh0 dHBzOi8vbGlzdHMuc291cmNlZm9yZ2UubmV0L2xpc3RzL2xpc3RpbmZvL2ZyZWVtYXJrZXItZGV2 ZWwK