#author("2026-07-15T06:57:11+09:00","","") #author("2026-07-15T07:07:33+09:00","","") * Tir-embedded [#haf90997] tir-embedded は元ファイルの意味を変更しない。表の整形以外の変換は行わず、元の言語・ツール・プラグインと共存することを目的とする。 ** 目的 [#k6703ef6] - 任意のテキストファイル中の表形式データを、元のファイル形式を維持したまま tirenvi で編集可能にする - 言語ファイルの場合、コメントはコメントとして加工するので表の編集可能状態で言語のコンパイルなども可能 *** 例:python [#a71d5008] 生データ(flat) import importlib from typing import Any, Dict, TypedDict import traceback # | tabel header1 | header2 | # | cell data1 | cell data2 | # | row3 | column2 | bufferデータ(tir) import importlib from typing import Any, Dict, TypedDict import traceback | # | tabel header1 | header2 | | # | cell data1 | cell data2 | | # | row3 | column2 | ** 表の形式 [#ddcaa078] - 次のformat部分を表とみなす - セルを"|"で区切ったgfm風表形式 - "|"を2以上含み、行の最後の文字が"|"の行を表とみなす - "|"を2以上含み、行末の空白を除いた最後の文字が"|"の行を表とみなす -- 1x1の表も認める -- 保存時には行末の不要な空白は削除される - key:各行の先頭から最初の "|" の直前までの空白をのぞいた文字列 -- keyは""(空文字)も含む。(通常のtextファイルなど) -- keyはカーソル位置以下で最初見つけた表の行で決定する -- keyはファイル内で1種類だけ -- 別のkeyを使用したい場合は、カーソル位置を変更する -- 通常はコメント文字列("#", "//", '--'など)になる - 共通のkeyが連続している場合一つの表とする -- 列数が一致する必要はない。最大列数を採用する。 - セル内に"|"を含む場合は"\|"と書くこと - セル内で改行する場合は、 -- 案1. <BR> (gfm) -- 案2. &br; (pukiwiki) -- 案3. \n (??) -- 案4. その他 -- エスケープはとりあえず保留?(\<BR\> など) - セル内で改行する場合は"<br>"と書くこと - 表形式はgfm準拠。ただしデリミター("|---|")は解釈しない - flatに変換する時"|"の位置は揃えない -- 変更していない行がdiffで検出されるのを防ぐため -- 揃えたい場合はflatにしてformatterを実行すること -- tir-embeddedにformat機能をつける ** コマンド [#n5487afd] - Tir toggle : flat <-> tir 変換 - filetype に対応する parser があればそれを使用する - 対応する parser がなければ tir-embedded を使用する - その場合カーソル位置で表を抽出する - 範囲指定可能 ** 対応できない言語 [#nc4f0519] - C89: /* comment */ - FORTRAN: 一カラム目が"C" - COBOL, PL/I, アセンブラ: 固定カラム - HTML, CSS, XML: <!-- comment -->, /* comment */ - JSON: コメントがない ** Requirements Line-oriented comments (e.g. #, //, --, ", ;) are supported. Languages that only support block comments are currently not supported. Languages whose syntax depends on fixed column positions (e.g. fixed-form Fortran, COBOL) are not supported.