魔法注釈

魔法注釈 (Ruby)

公式情報

[1] comments - Documentation for Ruby 3.5, , https://docs.ruby-lang.org/en/master/syntax/comments_rdoc.html#label-Magic+Comments

構文

[2] # から始まる行内注釈に、 名前と値を : で区切って記述するようです。 >>1

[3] 例示では # の後や : の後には が1つ置かれています。 >>1 どの程度自由度があるのかドキュメント上は明らかではありません。

[4] -*- 構文を使うと名前と値の組を1つ以上まとめて行内注釈に入れることができます。 >>1 -*-

[5] top-level magic comment >>1 とそうでないものがあるようです。 ドキュメント上それらの位置付けは明確ではありませんが、 全体に適用される指令ブロック内に適用される指令の区別であるようです。

[6] # の前に文字を書けるのか、ドキュメント上は明らかではありません。 ドキュメントではブロック内に適用される指令インデントされて示されています >>1 が、どの程度自由度があるのかドキュメント上は明らかではありません。

[7] top-level magic commentファイルの最初の comment section に出現しなければならないとされます。 >>1 comment section とは何を言うのか明確ではありません。

[8] ドキュメントの encoding 指令の説明において、 top-level magic comment は最初のか、 shebang の次のになければならないとあります。 >>1 ドキュメント上明瞭ではありませんが、 encoding 指令かつ top-level magic comment である場合の規定なのでしょうか。 (top-level magic comment でない魔法注釈として encoding が使えるものなのかもよくわかりませんが。)

[13] この辺の説明の不明瞭さは、 おそらく最初に encoding:魔法注釈が導入されたようで、 その後他の指令が追加されたと思われ、 その過程でドキュメントを整理しないで書き足したために見えます。

処理

[9] 名前と値の組は指令の名前と値と解釈されます。 >>1

[10] 指令によってはドキュメント上、その配置されたの続きに適用されることが明言されているものもあります。 明記がないものがどうなのか、複数指定することはできるのか、などドキュメント上明らかでないことが多いです。

指令

[11] 指令 (directive) がいくつかあります。 >>1

[12] encoding 指令は、 coding とも書くことができ、 文字コードを指定します。 構文を注意して選べば、 EmacsRuby の両方にファイル文字コードの指定と認識させられます。 -*- coding -*-

関連

charset sniffing

コメントの中身が意味を持ってしまう

メモ