TIR/3.parser/csv
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
前提条件
- これはtir <-> csv 相互変換ツールです。
- このツールでサポートできないcsv形式はユーザー作成です
- このツールはこれ以上機能を増やす予定はありません。
- 変更があるとすればtir versionが変わった時くらいでしょう
- それとこれはparserの作り方のチュートリアルを兼ねています
- usageの表示とか本質的でない部分は別ファイルに分けるのは...
- チュートリアルといってもあまり細々とコメントを入れる気...
- 変数名などを工夫してなるべく自明なコードにしたいです
- わかりやすいことが第一です
- わかりやすさのため、拡張性・美しさ、これらは犠牲にして...
* CSV パーサー [#qf1c3ea6]
** パーサーprobe [#yebdd24f]
- command name
-- tir discover
-- tir probe
-- tir resolve
-- tir select-parser
-- in: file
-- out: tir-parser-name, reason
-- id: コマンド名tir-*, option --tir-capability
** CSVパーサーを作ります [#qb59d6dc]
- pythonの定番CSVパーサーを使う
- シバンを指定してコマンドとして使えるようにする
- 出力形式:NDJSON:1レコード分読んで1レコード出力できるの...
-- { "kind":"grid", "row":[ "aaa", "bbb", "ccc" ] }
-- 表形式の行データー(1行だけです。複数行不可です)
-- row: 行内容を表す。列の数だけ値を並べる
-- row: 全部文字列、なければ空文字列
-- row: 一つの表の中で列数が必ずしも一致する必要はない
- 使用例
-- tir-csv parse file :csv形式のfileを読み込んでNDJSON形...
-- 成功した場合はstderrには何も表示しない。失敗した場合は...
--- これで成功、失敗を見分ける
----
ここから先は後で
-- tir-csv unparse file :標準入力からNDJSON形式で読み込ん...
-- 成功した場合はstderrには何も表示しない。失敗した場合は...
--- これで成功、失敗を見分ける
-- tir-md show :JSON形式で情報を書き出す
--- { name:name, desc:description, extensions={ txt, md } }
-- tir-md --version:バージョン表示
-- 自作する場合は独自サブコマンドは作らないこと。オプショ...
-- 自作する場合はparse file, showは必ず作成すること。他は...
----
csvの独自フォーマットは属性値が最後の行にある。
一方NDJOSN正規形は属性が最初にないといけない。
だからファイルの最後を読んで属性を解析する必要がある。
- lseek, pread
終了行:
前提条件
- これはtir <-> csv 相互変換ツールです。
- このツールでサポートできないcsv形式はユーザー作成です
- このツールはこれ以上機能を増やす予定はありません。
- 変更があるとすればtir versionが変わった時くらいでしょう
- それとこれはparserの作り方のチュートリアルを兼ねています
- usageの表示とか本質的でない部分は別ファイルに分けるのは...
- チュートリアルといってもあまり細々とコメントを入れる気...
- 変数名などを工夫してなるべく自明なコードにしたいです
- わかりやすいことが第一です
- わかりやすさのため、拡張性・美しさ、これらは犠牲にして...
* CSV パーサー [#qf1c3ea6]
** パーサーprobe [#yebdd24f]
- command name
-- tir discover
-- tir probe
-- tir resolve
-- tir select-parser
-- in: file
-- out: tir-parser-name, reason
-- id: コマンド名tir-*, option --tir-capability
** CSVパーサーを作ります [#qb59d6dc]
- pythonの定番CSVパーサーを使う
- シバンを指定してコマンドとして使えるようにする
- 出力形式:NDJSON:1レコード分読んで1レコード出力できるの...
-- { "kind":"grid", "row":[ "aaa", "bbb", "ccc" ] }
-- 表形式の行データー(1行だけです。複数行不可です)
-- row: 行内容を表す。列の数だけ値を並べる
-- row: 全部文字列、なければ空文字列
-- row: 一つの表の中で列数が必ずしも一致する必要はない
- 使用例
-- tir-csv parse file :csv形式のfileを読み込んでNDJSON形...
-- 成功した場合はstderrには何も表示しない。失敗した場合は...
--- これで成功、失敗を見分ける
----
ここから先は後で
-- tir-csv unparse file :標準入力からNDJSON形式で読み込ん...
-- 成功した場合はstderrには何も表示しない。失敗した場合は...
--- これで成功、失敗を見分ける
-- tir-md show :JSON形式で情報を書き出す
--- { name:name, desc:description, extensions={ txt, md } }
-- tir-md --version:バージョン表示
-- 自作する場合は独自サブコマンドは作らないこと。オプショ...
-- 自作する場合はparse file, showは必ず作成すること。他は...
----
csvの独自フォーマットは属性値が最後の行にある。
一方NDJOSN正規形は属性が最初にないといけない。
だからファイルの最後を読んで属性を解析する必要がある。
- lseek, pread
ページ名: