Skip to content

Refactor RubyToBlocksConverter to use register pattern consistently #394

@takaokouji

Description

@takaokouji

Refactor RubyToBlocksConverter to use register pattern consistently

概要 (Summary)

RubyToBlocksConverterの実装方式を統一するため、古いonSendパターンを使用しているファイルを新しいregisterパターンに変更する。

現状 (Current State)

新しい形式(register関数を使用)- 変更不要

  • control.js (混在しているため要クリーンアップ)
  • mesh.js
  • event.js
  • wedo2.js
  • microbit.js
  • video.js
  • microbit_more.js
  • text2speech.js
  • koshien.js

古い形式(onSend関数を使用)- 変更対象

  • boost.js
  • variables.js
  • looks.js
  • translate.js
  • sound.js
  • my-blocks.js
  • sensing.js
  • smalrubot_s1.js
  • makeymakey.js
  • operators.js
  • pen.js
  • motion.js
  • ev3.js
  • music.js
  • gdx_for.js

混在形式 - クリーンアップ対象

  • control.js (新旧両方の実装が存在)

変更方針 (Refactoring Strategy)

新しいパターンの特徴

const SomeConverter = {
    register: function (converter) {
        // converter.registerCallMethod を使用してメソッドを登録
        converter.registerCallMethod('self', SomeClass, 0, params => {
            // ブロック生成ロジック
        });
    }
};

古いパターンの特徴

const SomeConverter = {
    onSend: function (receiver, name, args, rubyBlockArgs, rubyBlock, node) {
        // switch文でメソッド名を判定してブロック生成
    }
};

作業内容 (Tasks)

  1. 古い形式の15ファイルを新しいregisterパターンに変換
  2. control.jsから古いonSend実装を削除
  3. テストを実行して機能が正常に動作することを確認
  4. リント/型チェックを実行してコード品質を確認

期待される効果 (Expected Benefits)

  • コードの一貫性向上
  • 保守性の向上
  • 新しい実装パターンへの統一

テスト方法 (Testing)

  • 既存の統合テストを実行
  • 各ブロックカテゴリの変換が正常に動作することを確認

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status

    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions