#author("2026-02-02T11:15:45+09:00","","") [[FrontPage]] #author("2026-02-04T02:28:26+09:00","","") - [[TIR/TODO]] ---- #ls2 * GitHubで仕様公開 [#n9060d7c] - [[TOML:https://github.com/toml-lang]] - [[JSON5:https://github.com/JSON5]] - [[Google:Org-mode file format]] - [[Google:Nix language]] - [[Google:KDL (KDL Language)]] - [[Google:Tree-sitter]] - [[Google:EditorConfig]] tir/ ├─ spec/ ← READMEが事実上の仕様 ├─ tools/ ← tir tools ├─ parsers/ ← csv / tsv / md / etc └─ docs/ tirenvi/ ← エディタ実装(完全分離) * parser [#n17ad10d] ** spec [#x7d2b732] -- stdin, stout ** file format [#if70435d] - tec, csv - ssv 空白区切り(whitespace) -- whitespace-separated table/data: ps, ls -l, kubectl - fix column -- fixed-width format(fwf) -- columnar text/column-alighned text -- COBOL, main frame, 役所・物流・金融 -- カラム指定(fixed_width, aligned) -- EXCEL風対話型 - md : gfm - html - exel(zip + ooxml) - word(zip + ooxml) - pandoc json:複雑? - rdb + sql - JOSN, YAML, TOML - config, ini - diff, git diff --stat ** parser option [#vb6e91dd] - --mode=to-tir, [to-flat], [auto], [probe]先頭数行解析 -- to-flat実行でstderr出力なら実装なし? -- あるいはstdoutがから? - --info -- { name:name, description:desc, version:ver } - [--help] - [--extentions] -- [.tsv, .txt] * tool [#ld419034] - block取り出し、戻し(file name/ block index) - merge - rows加工 - jq, sed, awk, * GitHub [#xb7526dc] tir/ ├─ core/ │ ├─ spec/ ← TIR仕様(最重要) │ ├─ schema/ ← JSON schema / version │ └─ docs/ │ ├─ tools/ │ ├─ tir-cli │ ├─ tir-normalize │ ├─ tir-probe │ └─ ... │ ├─ parsers/ │ ├─ csv/ │ ├─ tsv/ │ ├─ md/ │ ├─ html/ │ └─ ... │ ├─ examples/ │ └─ README.md * 将来 [#g10b1a74] - homebrew, apt, cargo, pip, npm * 拡張子 [#c0d05778] - 拡張子tirファイルの活用方法を考えました。 - cat hoge.md | md-parser -> origin.tir - hoge.mdをtirに変換します。 - cat origin.tir | tir blocks select 2 | tir rows swap 3 5 | tir merge origin.tir | md-parser > updated.md - tirの第2ブロックを取り出して3,5行目を入れ替えて元の第2ブロックと置き換えてmdとして保存する - tir merge origin.tir ではなくて tir merge hoge.md の方が良いか? - これだとtirファイルはいりません:NGパーサーがわからない - merge より applay - md-parser hoge.md | tir block 2 rows swap 3 5 | md-parser > updated.md * options [#a14b5b92] - オプションを後から追加して既存パーサーと衝突した場合はどうしますか -- 既存パーサーが使えなくなるかも -- -a のような一文字オプションは使わないことで予防する -- もっと良い案はありますか -- サブコマンド化 -- --txxxとかtで始まるオプションは予約とか - テーブルのパーサーとしてpandocは前段階として使えませんか - つまりパーサーはpandocフォーマットをサポートすればhtml, latex, md の独自パースは必要なくなります -- pandoc JSONはちょっと複雑?