日本語プログラミング言語MindでCSVライブラリを書いてみる…ですが、すっかりエンバグしたソースを公開したままになっていたので修正しました。(おはずかしい…w)
分解したCSVのデータを保持する配列のクリアタイミングが変だったり、「CSVファイルから一行読みだし」って言いながらCSVファイルを全行読んでいたりともうやりたい放題でした。とほほ。
今後の対応としては、「CSVファイルから一行読みだし」という処理単語はMindらしく構造体を返す単語にしたいところです。構造体はMind7からは型紙(C言語の構造体とか、S/370のDSECTとか..)を適用できるらしいのでちょっとカッコよくなっているはず。
あと、読み出し結果をメモリーを確保して返すようにするとオブジェクトっぽいですよね。できるのかなぁ。
Mindのドキュメントをもうちょっと読み込まないとなぁ。いよいよになったら 作者の片桐明さん(@likekilly)にTwitterで聞いてみてわ?!という かのしまさん(@hidetoap)の助言も頂いたので…(う、他力本願…)
というわけで、恥ずかしいソース公開いきます。
まずわ、CSVライブラリ改良(したのか?!)版w
※ ※ CSVライブラリ ※ 2012/1/28 kuni ※ CSVファイルは ファイル。 CSVデータは 256個の 文字列実体。 CSVファイルの読み出し準備とは (文字列->・) ファイル名は 文字列 ファイル名に 入れ ファイル名で CSVファイルを オープンして エラー? ならば 「!! ファイルのオープンに失敗しました !!:」と ファイル名を 合成して 重大エラーする つぎに。 一文字指定分断とは (文字、文字列->文字列、文字列) 分断文字は 変数 分解元文字列は 文字列 発見位置は 変数 分断文字と 分解元文字列に 入れ 分断文字で 分解元文字列から 一文字検索し 発見位置に 入れ 発見位置が ゼロ以外 ならば 発見位置で 分解元文字列を 分断したものと 分解元文字列を さもなければ 分解元文字列と 「」を つぎに 返す。 CSV文字列を分解とは (文字列->・) 分解元文字列は 文字列 カウンタは 変数 分解元文字列に 入れ CSVデータを クリアして カウンタに 1を 入れ ここから ','で 分解元文字列を 一文字指定分断して CSVデータ(カウンタ)と 分解元文字列に 入れ 分解元文字列が 「」と 等しい文字列 ならば 打ち切り つぎに カウンタを 一つ増加し 繰り返す。 CSVファイルから一行読みだしとは (文字列->・) ワーク文字列は 文字列 CSVファイルから 一行読み出し ワーク文字列に 入れ データ終わり? ならば 終わり つぎに ワーク文字列で CSV文字列を分解すること。 CSVファイルをクローズとは CSVファイルを クローズする。
ほんで、これをテストするためのテストソースは、こちらです。
以前も書きましたが、test.csvっていうテスト用CSVファイルを作らないと怒りますw
※ ※ CSVライブラリのテスト ※ CSVデータを一行分表示とは CSVデータ(1個目)を 表示して "/"を 表示し CSVデータ(2個目)を 表示して "/"を 表示し CSVデータ(3個目)を 表示して "/"を 表示し CSVデータ(4個目)を 表示して "/"を 表示して 改行すること。 メインとは "test.csv"で CSVファイルの読み出し準備して ここから CSVファイルから一行読みだし データ終わり? ならば 打ち切り つぎに CSVデータを一行分表示して 繰り返して CSVファイルをクローズする。
コメント