====== CSVをロードする ======
Streamを受け取ってArray列に展開します。
スクリプト言語の例に漏れずXtalでも文字列処理は簡単にできるんです。た、たぶん。
// stream: Iteratorのサブクラス(まあPointerStreamやFileStreamを想定していますが)
// pattern: 文字かxpegのパターン
// ret: ArrayのArray
fun load_csv(stream, pattern)
{
ret : [];
stream.scan(xpeg::eol){
line : it.prefix;
if (line.length>0){
ret.push_back(line.split(pattern)[]);
}
}
return ret;
}
こんな感じで使います。
// delimiterが";"
load_csv(FileStream("map1.csv", "r"), ";").p;
// delimiterが";"か","
load_csv(FileStream("map2.csv", "r"), xpeg::set(";,")).p;