From: "Florian Groß" Date: 2006-04-17T06:18:24+09:00 Subject: Re: Simple Enumerations in Rub --------------000506030501070006090308 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Rusty Geldmacher wrote: > Recently I've had to come up with a way to simulate an enumerated type > for a Rails project that I am working on. I looked around for a bit to > see what is out there and what people are doing now, but nothing I found > would satisfy all of my design requirements. I wrote up a blog entry on > the subject which discusses what our requirements were and how we > addressed them. The results are here: > > http://www.soapboxsoftware.org/articles/2006/04/15/a-simple-enumeration-pattern-for-ruby Been there, done that. See attachment. -- http://flgr.0x42.net/ --------------000506030501070006090308 Content-Type: application/x-ruby; name="enum.rb" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="enum.rb" IyBSZXByZXNlbnRzIGEgQyMgc3R5bGUgZW51bWVyYXRpb24gb2Yga25vd24gdmFsdWVzLg0K Iw0KIyBVc2FnZToNCiMgICBDb2xvciA9IEVudW0ubmV3KDpSZWQsIDpHcmVlbiwgOkJsdWUp DQojICAgQ29sb3IuaXNfYT8oRW51bSkgIyA9PiB0cnVlDQojICAgQ29sb3I6OlJlZC5pbnNw ZWN0ICMgPT4gIkNvbG9yOjpSZWQiDQojICAgQ29sb3I6OkdyZWVuLmlzX2E/KENvbG9yKSAj ID0+IHRydWUNCiMgICBDb2xvcjo6R3JlZW4uaXNfYT8oRW51bTo6TWVtYmVyKSAjID0+IHRy dWUNCiMgICBDb2xvcjo6R3JlZW4uaW5kZXggIyA9PiAxDQojICAgQ29sb3I6OkJsdWUuZW51 bSAjID0+IENvbG9yDQojICAgdmFsdWVzID0gW1syNTUsIDAsIDBdLCBbMCwgMjU1LCAwXSwg WzAsIDAsIDI1NV1dDQojICAgdmFsdWVzW0NvbG9yOjpHcmVlbl0gIyA9PiBbMCwgMjU1LCAw XQ0KIyAgIENvbG9yWzBdICMgPT4gQ29sb3I6OlJlZA0KIyAgIENvbG9yLnNpemUgIyA9PiAz DQojDQojIEVudW1zIGFyZSBlbnVtZXJhYmxlLiBFbnVtOjpNZW1iZXJzIHdpdGhpbiB0aGUg c2FtZSBFbnVtIGFyZSBjb21wYXJhYmxlLg0KY2xhc3MgRW51bSA8IE1vZHVsZQ0KICBjbGFz cyBNZW1iZXIgPCBNb2R1bGUNCiAgICBhdHRyX3JlYWRlciA6ZW51bSwgOmluZGV4DQoNCiAg ICBkZWYgaW5pdGlhbGl6ZShlbnVtLCBpbmRleCkNCiAgICAgIEBlbnVtLCBAaW5kZXggPSBl bnVtLCBpbmRleA0KICAgICAgIyBBbGxvdyBDb2xvcjo6UmVkLmlzX2E/KENvbG9yKQ0KICAg ICAgZXh0ZW5kIGVudW0NCiAgICBlbmQNCg0KICAgICMgQWxsb3cgdXNlIG9mIGVudW0gbWVt YmVycyBhcyBhcnJheSBpbmRpY2VzDQogICAgYWxpYXMgOnRvX2ludCA6aW5kZXgNCiAgICBh bGlhcyA6dG9faSA6aW5kZXgNCg0KICAgICMgQWxsb3cgY29tcGFyaXNvbiBieSBpbmRleA0K ICAgIGRlZiA8PT4ob3RoZXIpDQogICAgICBbQGVudW0sIEBpbmRleF0gPD0+IFtvdGhlci5l bnVtLCBvdGhlci5pbmRleF0NCiAgICBlbmQNCg0KICAgIGluY2x1ZGUgQ29tcGFyYWJsZQ0K ICBlbmQNCg0KICBkZWYgaW5pdGlhbGl6ZSgqc3ltYm9scywgJmJsb2NrKQ0KICAgIEBtZW1i ZXJzID0gW10NCiAgICBzeW1ib2xzLmVhY2hfd2l0aF9pbmRleCBkbyB8c3ltYm9sLCBpbmRl eHwNCiAgICAgICMgQWxsb3cgRW51bS5uZXcoOmZvbykNCiAgICAgIHN5bWJvbCA9IHN5bWJv bC50b19zLnN1YigvXlthLXpdLykgeyB8bGV0dGVyfCBsZXR0ZXIudXBjYXNlIH0udG9fc3lt DQogICAgICBtZW1iZXIgPSBFbnVtOjpNZW1iZXIubmV3KHNlbGYsIGluZGV4KQ0KICAgICAg Y29uc3Rfc2V0KHN5bWJvbCwgbWVtYmVyKQ0KICAgICAgQG1lbWJlcnMgPDwgbWVtYmVyDQog ICAgZW5kDQogICAgc3VwZXIoJmJsb2NrKQ0KICBlbmQNCg0KICBkZWYgW10oaW5kZXgpIEBt ZW1iZXJzW2luZGV4XSBlbmQNCiAgZGVmIHNpemUoKSBAbWVtYmVycy5zaXplIGVuZA0KICBh bGlhcyA6bGVuZ3RoIDpzaXplDQoNCiAgZGVmIGZpcnN0KCphcmdzKSBAbWVtYmVycy5maXJz dCgqYXJncykgZW5kDQogIGRlZiBsYXN0KCphcmdzKSBAbWVtYmVycy5sYXN0KCphcmdzKSBl bmQNCg0KICBkZWYgZWFjaCgmYmxvY2spIEBtZW1iZXJzLmVhY2goJmJsb2NrKSBlbmQNCiAg aW5jbHVkZSBFbnVtZXJhYmxlDQplbmQNCg== --------------000506030501070006090308--