Re: parse int error

2013-11-03 Thread Peter Eisenhower

On Wednesday, 30 October 2013 at 18:19:13 UTC, Ali Çehreli wrote:

On 10/29/2013 06:02 PM, Peter Eisenhower wrote:
I am confused as to why I cannot pass the return of the tag 
attribute

directly into the parse int.

// This works
 string s = xml.tag.attr[key];
 int key = parse!int(s);

// Compile error on these
int key = parse!int(xml.tag.attr[key]);
int key = parse!int(cast(string) cml.tag.attr[key]);


A trivial wrapper makes it convenient:

import std.xml;
import std.conv;

T getAttr(T)(DocumentParser xml, string attrName)
{
string s = xml.tag.attr[attrName];
T attr = parse!T(s);
return attr;
}

unittest
{
auto xml = new DocumentParser(`test key=1/test`);
auto key = xml.getAttr!int(key);
assert(key == 1);
}

void main()
{}

Ali


Thanks


parse int error

2013-10-29 Thread Peter Eisenhower
I am confused as to why I cannot pass the return of the tag 
attribute directly into the parse int.


// This works
 string s = xml.tag.attr[key];
 int key = parse!int(s);

// Compile error on these
int key = parse!int(xml.tag.attr[key]);
int key = parse!int(cast(string) cml.tag.attr[key]);


Re: parse int error

2013-10-29 Thread Peter Eisenhower
On Wednesday, 30 October 2013 at 01:02:45 UTC, Peter Eisenhower 
wrote:
I am confused as to why I cannot pass the return of the tag 
attribute directly into the parse int.


// This works
 string s = xml.tag.attr[key];
 int key = parse!int(s);

// Compile error on these
int key = parse!int(xml.tag.attr[key]);
int key = parse!int(cast(string) cml.tag.attr[key]);


This is the compile error

Error: template instance 
std.conv.parse!(int,const(immutable(char)[])) error instantiating