vscodeのsnippetでrubyのクラスをファイル名を元に自動でセットする

確かatomではrubyのsnippetを使ってクラスを書くときに、ファイル名から自動で生成してくれたと思うのですが、 vscoderuby snippetではクラス名は ClassName 固定でセットされています。
これが煩わしいので、独自のsnippetsを書いて対応しました。

やり方

vscodeのコマンドパレットで snippets と打ち、次に言語選択でrubyを指定すると、 ~/Library/Application Support/Code/User/snippets/ruby.json が生成されます。

   "Class definition from filename": {
        "prefix": "class",
        "body": [
            "class ${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/}",
            "\t$0",
            "end"
        ],

こんな感じのsnippetを定義すればokです。  

foo_bar_baz.rb ファイルでcla と打つと(classと打たなくても、途中まででsuggestionされる) 以下が自動で入力されます。

class FooBarBaz
  
end

メデタシ、メデタシ。

少し解説

参考) vscode-rubyの定義
vscode-ruby/ruby.json at main · rubyide/vscode-ruby

ファイル名

公式ドキュメントに利用可能な変数定義が記載されています。
拡張子は不要なので、 TM_FILENAME_BASE を利用します。
Variables

passcalcase

passcalcaseへの変換ですが、非常にわかりにくいのですが、公式ドキュメントにEBNFで使えると書いています。 要は正規表現にマッチする値に対して、各種変換処理が利用できるとのことです。
Grammar#

おまけ:既存のsnippetsを非表示にする方法

ドキュメントを読んでいて気づいたのですが、不要なsnippetsを非表示にする方法の記載がありました。 Can I remove snippets from IntelliSense?

やり方は、コマンドパレットから Insert Snippetを選んで、 非表示にしたいsnippet名を入力し、非表示アイコンを押すだけ。
 

この情報がどの設定ファイルに書き込まれているのかは不明。 syncの対象になっているかなどは気になるところ。