1 件の投稿を表示中 (合計 2 個)
  • 作成者
    投稿
  • #4405
    kamuycikap
    メンバー

    Ver6からActiveRubyが利用できると言う事でさっそく利用してみたのですが、下記のようなプログラムを実行することが出来ません。
    Ruby既存のクラスにたいしてメソッドを追加する内容です。

    EmEditorのマニュアルに記載されている下記内容に
    「JavaScript、VBScript 以外の言語の使用方法は、サポートの対象外となります。

    との下りがあるのですが、言語の使用方法とは違うとの認識で記載させていただきます。

    このプログラムは別の開発環境で目的の通り動作するプログラムです。

    <テストした環境>
    統合開発環境:RDE

    ———————————–
    #language = “RubyScript”

    class String
    def em_msg
    return self + ” is Good Editor!!” + “n”
    end
    end

    buf = “EmEditor”

    #Rubyのコンソール表示メッセージが下記になるのでコメント化
    #print buf.em_msg

    #EmEditorなので下記の命令でエディターに文字表示させたい
    Window.document.write( “#{buf.em_msg}” );

    —————————————————

    上記プログラムをRDE上にて実行すると

    EmEditor is Good Editor!!

    とコンソールに表示されます。
    目的通りの実行結果です。

    しかしながら、EmEditor上で実行するとエラーになってしまいます。
    何故でしょうか?
    「undefined method `em_msg’ for “EmEditor”:String」

    これはEmEditorのサポート外なのでしょうか?
    Rubyの文法についてのスレッドを立てるのは間違いだと思うのですが、まともに動作するスクリプトが実行できないのは納得出来ない部分です。

    #4406
    ShuHei
    メンバー

    試しにIEからActiveScript rubyを使った処理を
    書いてみたところ同じ現象が発生したので
    十中八九ActiveScript Ruby側の実装でしょう。

    EmEditor側とは特に関係ないかと思います。

    emtest

    class Emstring < String
    def em_msg
    return self + " is good editor.n"
    end
    end

    class String
    def em_msg
    return self + " is good editor.n"
    end
    end

    buf = Emstring.new("EmEditor")
    buf2 = "EmEditor"
    @window.document.write buf.em_msg
    @window.document.write buf2.em_msg # エラーで停止する
    @window.document.write buf.em_msg

    取り急ぎEmeditor側から対応するのはムリそうな
    のでStringを継承して対応してみてはいかがでしょう?

    上記プログラムをRDE上にて実行すると

    EmEditor is Good Editor!!

    とコンソールに表示されます。
    目的通りの実行結果です。

    これもOLE(だっけ?)からrubyに渡して処理するか、
    直接rubyインタプリタで処理するかという違いでしょうね。

1 件の投稿を表示中 (合計 2 個)
  • このトピックに返信するにはログインしてください。