<div dir="ltr">Damn!<br><br>You beat me to it... >:|<br><br><div class="gmail_quote">On Wed, Apr 4, 2012 at 9:52 AM, Dotan Dimet <span dir="ltr"><<a href="mailto:dotan@corky.net">dotan@corky.net</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div style="direction:ltr" bgcolor="#FFFFFF" text="#000000">
Found Moose::Util::TypeConstraints via a search, it offers a simple
enum function.<br>
The following worked as a one-liner:<br>
<br>
use Moose::Util::TypeConstraints;<br>
enum q{Col}, [qw(red blue green)];<br>
no Moose::Util::TypeConstraints;<br>
<br>
package bob;<br>
use Moose;<br>
has qw(color is rw isa Col);<br>
<br>
package main;<br>
my $bob = bob->new(color => q{green});<br>
print $bob->color; # prints "green"<br>
$bob->color(q{yellow}); # dies <br>
print $bob->color;<br>
<br>
The error you get when you set an invalid value is something like:<br>
Attribute (color) does not pass the type constraint because:
Validation failed for 'Col' with value yellow at ...<div><div class="h5"><br>
<br>
On 04/04/2012 10:08 AM, Dov Levenglick wrote:
<blockquote type="cite">
<pre>I believe (after trying) that this won't work. Either I tried this
wrong, or else Perl is looking for some module called MyEnum.pm
Best Regards,
Dov Levenglick
On Wed, Apr 4, 2012 at 09:40, Shmuel Fomberg <a href="mailto:shmuelfomberg@gmail.com" target="_blank"><shmuelfomberg@gmail.com></a> wrote:
</pre>
<blockquote type="cite">
<pre>My experience with Moose is nil, but how about something like that:
my %enum = ( A => 0, B => 1, C => 2);
subtype 'MyEnum',
as 'Str',
where { exists $enum{$_} },
message { "Wrong Enum name: $_" };
And then:
coerce 'MyEnum',
from 'Int',
via { $enum{$_} };
Shmuel.
On Wed, Apr 4, 2012 at 3:27 PM, Dov Levenglick <a href="mailto:dov.levenglick@gmail.com" target="_blank"><dov.levenglick@gmail.com></a>
wrote:
</pre>
<blockquote type="cite">
<pre>Hi,
I want to declare a 3 value'd enum equivalent - i.e. (mixing C and perl):
package My::Enum
use Moose;
typedef enum {A, B, C} enum_t; // knowledge in C - how do I
port this concept to Perl?
has 'b' => (isa => 'enum_t', is => 'rw');
1;
How would one go about doing that
Best Regards,
Dov Levenglick
_______________________________________________
Perl mailing list
<a href="mailto:Perl@perl.org.il" target="_blank">Perl@perl.org.il</a>
<a href="http://mail.perl.org.il/mailman/listinfo/perl" target="_blank">http://mail.perl.org.il/mailman/listinfo/perl</a>
</pre>
</blockquote>
<pre>_______________________________________________
Perl mailing list
<a href="mailto:Perl@perl.org.il" target="_blank">Perl@perl.org.il</a>
<a href="http://mail.perl.org.il/mailman/listinfo/perl" target="_blank">http://mail.perl.org.il/mailman/listinfo/perl</a>
</pre>
</blockquote>
<pre>_______________________________________________
Perl mailing list
<a href="mailto:Perl@perl.org.il" target="_blank">Perl@perl.org.il</a>
<a href="http://mail.perl.org.il/mailman/listinfo/perl" target="_blank">http://mail.perl.org.il/mailman/listinfo/perl</a>
</pre>
</blockquote>
<p><br>
</p>
<br></div></div><span class="HOEnZb"><font color="#888888">--
<br>This message has been scanned for viruses and
<br>dangerous content by
<a href="http://www.mailscanner.info/" target="_blank"><b>MailScanner</b></a>, and is
<br>believed to be clean.
</font></span></div>
<br>_______________________________________________<br>
Perl mailing list<br>
<a href="mailto:Perl@perl.org.il">Perl@perl.org.il</a><br>
<a href="http://mail.perl.org.il/mailman/listinfo/perl" target="_blank">http://mail.perl.org.il/mailman/listinfo/perl</a><br></blockquote></div><br></div>