Tango 0.99.5 Jascha リリース
http://dsource.org/projects/tango/forums/topic/409
Tangoの最新版がリリースされました。
今回のバージョンからXMLの利用が可能となっています。
ためしにDOMのほうを使ってこんなコードを書いてみました。
import tango.text.xml.Document;
import tango.text.xml.XmlPrinter;
import tango.group.file;
import tango.group.stream;
void main()
{
scope doc = new Document!(char);
scope buf = new GrowBuffer(4096, 1024);
scope fmt = new FormatOutput(buf);
doc.header;
doc.root.element( null, "element" )
.attribute( null, "attrib1", "value" )
.attribute( null, "attrib2" )
.element( null, "child", "value" );
scope dXmlPrinter = new XmlPrinter!(char);
fmt(dXmlPrinter(doc)).flush;
scope doc2 = new Document!(char);
auto str = cast(char[])buf.slice;
doc2.parse(str);
bool dPassed = false;
foreach (node; doc.query["element"]["child"])
{
assert( dPassed==false );
dPassed = true;
assert( node.name == "child" );
assert( node.value == "value" );
}
assert( dPassed );
alias Document!(char).Node Node;
alias XmlPath!(char).NodeSet NodeSet;
static Node getNode(NodeSet set, int idx=0)
{
foreach (node; set.nth(idx))
{
return node;
}
return Node.init;
}
auto node = getNode(doc2.query["element"]);
assert( node.name == "element" );
assert( node.getAttribute("attrib1").value == "value");
assert( node.getAttribute("attrib2").value == "");
node = getNode(doc2.query["element"]["child"]);
assert( node.name == "child" );
assert( node.value == "value" );
node = doc2.root.firstChild;
assert( node.name == "element", node.name );
assert( node.getAttribute("attrib1").value == "value");
assert( node.getAttribute("attrib2").value == "");
version (FileOutput)
{
doc2.header;
scope dXmlPrinter2 = new XmlPrinter!(char);
scope strm = new TextFileOutput("test.txt");
strm(dXmlPrinter(doc2)).flush;
}
}
う~ん、もうちょっとインターフェース良くなるといいんだけど…
とりあえずは、できるみたい。
D言語がバージョンアップしました。
http://www.digitalmars.com/d/2.0/changelog.html
今回のバージョンアップで、構造体にデストラクタが使えるようになりました。
他にはPhobosのアップデートが中心です。
また、今回のアップデートによって、PhobosのThreadの致命的バグが取れたそうで、安心して使えるようになった…とのこと。試していないけど。
D1.0系のほうは、バグフィックスが中心。目立った変化はなしでした。
しっかし、こういう更新が中心になると、Blogとかのほうがわかりやすいよなぁ…移転するかなぁ…
久しぶりに
⑨でもわかるパチュリーのD言語講座を更新しました。
今回は Tango のIO関係の話について触れました。
文章書くよりアイコン決めるほうが面倒だったり…
第04講 TangoのIO
ここから見ることができますよ
TangoのIOは、 opCall 以外は割と使いやすくて、わかりやすい印象です。
opCall自体も、慣れると割と使いやすかったりしますが…
けど、どっちかっていうと C++ の << のオーバーロードのほうがしっくりくる気もします。
<< を忌避して opCall 使ってたんじゃ結局同じ気もしますしね…