メタデータ
Nu を使用していると裏でなにか特別なことがおきているのではないかと思うことがあるでしょう。例えば、Nu がサポートしているファイル形式を忘れていて、余計に変換しようとしてしまったとしましょう。
open Cargo.toml | from toml
# => error: Expected a string from pipeline
# => - shell:1:18
# => 1 | open Cargo.toml | from toml
# => | ^^^^^^^^^ requires string input
# => - shell:1:5
# => 1 | open Cargo.toml | from toml
# => | ---------- object originates from here
エラーメッセージは、from toml
に渡したものが文字列ではなかったことだけではなく、元の値がどこから来たかも示しています。どうやってこれを知るのでしょうか。
Nu のパイプラインを流れる値には、多くの場合、メタデータと呼ばれる一連の追加情報が付加されます。これらはストアにあるアイテムにつけられているタグのようにタグと呼ばれています。これらのタグはデータには影響しませんが、データを操作する際の体験を向上させます。
もう一度open
コマンドを実行してみましょう、ただし今回は、返されるタグを確認します。
open Cargo.toml | tags
# => ────────┬───────────────────────────────────────────
# => span │ [row end start]
# => anchor │ /home/jonathant/Source/nushell/Cargo.toml
# => ────────┴───────────────────────────────────────────
現在、パイプライン上の値について2つのメタデータを追跡しています。このデータがどこから読み込まれたかをしめす anchor があることに気づくでしょう。これにより Nu はデータの表示方法をよりよく理解できるのです。
今度は span をみてみましょう。
open Cargo.toml | tags | get span
# => ───────┬────
# => start │ 5
# => end │ 15
# => ───────┴────
ここでの"start"と"end"の span は下線が行のどこにあるのかを示しています。5 から 15 まで数えてみるとそれが"Cargo.toml"ファイル名と一致することがわかるでしょう。このようにして、さきほどみたエラーはどこに下線をひくべきかをしったのです。