[phobos] string-to-bool conversions in std.conv

Andrei Alexandrescu andrei at erdani.com
Mon Jun 14 12:48:53 PDT 2010


Looks good to me.

Andrei

Lars Tandle Kyllingstad wrote:
> I'd like to add the following to std.conv, to enable parse!bool(string)
> and to!bool(string).  This will fix bug 3386 (and to some extent 1733
> and 3223).  It will also require a minor change to std.string.icmp(),
> shown at the bottom.  Objections?
> 
> 
> // std.conv:
> Target parse(Target, Source)(ref Source s)
>     if (isSomeString!Source && is(Target==bool))
> {
>     if (s.length >= 4 && icmp(s[0 .. 4], "true")==0)
>     {
>         s = s[4 .. $];
>         return true;
>     }
>     if (s.length >= 5 && icmp(s[0 .. 5], "false")==0)
>     {
>         s = s[5 .. $];
>         return false;
>     }
>     conv_error!(Source, Target)(s);
>     assert(0);
> }
> 
> 
> unittest
> {
>     auto t = "TrueType";
>     assert (parse!bool(t) == true);
>     assert (t == "Type");
> 
>     auto f = "False killer whale";
>     assert (parse!bool(f) == false);
>     assert (f == " killer whale");
> 
>     try {
>         auto m = "maybe?";
>         parse!bool(m);
>         assert(false);
>     }
>     catch(ConvError e) { }
> }
> 
> 
> // std.string, line 137:
> -   int icmp(in char[] s1, in char[] s2)
> +   int icmp(C1, C2)(in C1[] s1, in C2[] s2)
> 
> 
> _______________________________________________
> phobos mailing list
> phobos at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/phobos


More information about the phobos mailing list