Conversation
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
Knowledge~/ の更新履歴・ADR frontmatter に未来日付が含まれており、規約/運用上修正が必要です。
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Pull request overview
コマンド語彙(INovelCommandModule.RegisterVocabulary)から、引数をそのまま cmd に委譲するだけの糖衣 preamble(Ruby def 群)をエディタ側で自動生成し、ランタイムでは生成済み .mrb を IPreambleSource として読み込めるようにする PR です。eval 不可な MRubyCS 前提で、重複する手書き糖衣を削減しつつ、手書き preamble が後勝ちで上書きできる運用を整えています。
Changes:
RegisterNovelCommandSugars()を追加し、Resources 上の生成 preamble をランタイムで読み込みつつ、Editor では DI ビルド時に語彙をキャプチャして.rbを差分更新で生成- 語彙→Ruby ソース生成ロジック(衝突/不正名スキップ含む)とファイル書き出し処理を追加
- MRubyCS.Compiler を使った EditMode テスト、ドキュメント/CHANGELOG/ADR 追記
File summaries
| File | Description |
|---|---|
| Knowledge~/log.md | ADR 追加の更新履歴を追記 |
| Knowledge~/design/decisions/index.md | 新 ADR を意思決定一覧に追加 |
| Knowledge~/design/decisions/command-sugar-generation.md | コマンド糖衣自動生成の ADR を新規追加 |
| Docs/extending.md | RegisterNovelCommandSugars() の利用手順と注意点を追記 |
| Assets/Novel/View.VContainer/NovelViewContainerExtensions.cs | RegisterNovelCommandSugars() を追加(Editor キャプチャ + Runtime 読み込み) |
| Assets/Novel/Tests/EditMode/Novel.Tests.EditMode.asmdef | MRubyCS.Compiler 参照を追加 |
| Assets/Novel/Tests/EditMode/CommandSugarGeneratorTests.cs.meta | 新規テストの meta |
| Assets/Novel/Tests/EditMode/CommandSugarGeneratorTests.cs | 生成ソースの内容検証 + MRubyCS での実コンパイル/実行テストを追加 |
| Assets/Novel/Runtime/NovelCommandSugars.cs.meta | 新規 Runtime 定数クラスの meta |
| Assets/Novel/Runtime/NovelCommandSugars.cs | Resources キー定数 + Editor キャプチャ publish イベントを追加 |
| Assets/Novel/Editor/CommandSugarGenerator.cs.meta | 新規生成器の meta |
| Assets/Novel/Editor/CommandSugarGenerator.cs | 語彙から糖衣 Ruby ソースを生成するロジックを追加 |
| Assets/Novel/Editor/CommandSugarFileWriter.cs.meta | 新規 writer の meta |
| Assets/Novel/Editor/CommandSugarFileWriter.cs | Editor でキャプチャ購読し .rb を差分更新・Import する writer を追加 |
| Assets/Novel/CHANGELOG.md | RegisterNovelCommandSugars() 追加を記載 |
Review details
Files not reviewed (4)
- Assets/Novel/Editor/CommandSugarFileWriter.cs.meta: Generated file
- Assets/Novel/Editor/CommandSugarGenerator.cs.meta: Generated file
- Assets/Novel/Runtime/NovelCommandSugars.cs.meta: Generated file
- Assets/Novel/Tests/EditMode/CommandSugarGeneratorTests.cs.meta: Generated file
- Files reviewed: 11/15 changed files
- Comments generated: 0
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
概要
基本コマンドを裸 (
screen_shake 2.0) で書かせたいプロジェクトでは、引数をそのまま渡すだけの糖衣 def を全コマンド分手書きすることになり重複記述になる。MRuby は実行時 eval 不可のため、エディタでの.rb生成で解決する。変更点
builder.RegisterNovelCommandSugars()(Novel.View.VContainer) を追加。エディタの DI ビルド時に語彙をキャプチャしてAssets/Resources/Novel/CommandSugars.rbを生成 (差分時のみ上書き) し、ランタイムで IPreambleSource として読む。新コマンドの糖衣が効くのは次の再生から**kw両対応 (screen_shake 2.0/screen_shake duration: 0.5)。渡した引数だけをcmdに流し、未指定は C# 側既定値。[NovelDescription]は def 直上コメント = Project Reference の説明になるKnowledge~/design/decisions/command-sugar-generation.md(新規 ADR)動作確認
RegisterNovelCommandSugars()を足して一度再生すると CommandSugars.rb が生成され、次の再生から裸呼びが効く