Powered by SmartDoc

Shine On You Crazy Ruby

[Top] [Linux] [XML] [java] [favarite]

Last-Modified: Tue Sep 11 11:00:00 JST 2001

Shine On You Crazy Ruby

Rubyについてのメモです。

最近、オブジェクト指向スクリプト言語Rubyを使うようになりました。オブジェクト指向については理解不足、経験不足など多々ありますが、少しづつステップアップしたいと思っています。

免責事項

以下に自作のスクリプトを公開しています。使用にあたっては各人の責任においてお願いします。以下のスクリプトによって生じた、いかなる損害について当方は責任を負いません。

バグ修正、改良は自由に行ってくださって結構です。できれば、どういう改良をしたか情報提供していただければ幸いです。

Vrooom

Xerces-Ruby

Xerces-CをRubyで使うための拡張ライブラリです。

RD→SmartDoc変換

rd2sdocの説明

DelphiからRubyを256倍使ってみる

「Rubyを256倍使うための本 黄道編」が出ましたね。Apolloはいいですよ。WindowsでRubyにGUIを持たせたい場合はイチオシです。そのうち、Apolloで作ったものも紹介していきたいと思います。

「Rubyを256倍使うための本 邪道編」を参考にActiveScriptRubyをDelphiで使えるかどうか検証してみました。

前準備

  1. 当然、ActiveScriptRubyが必要です。
  2. 上記にあげた書籍の著書artonさんのHPからダウンロードできます。
  3. Microsoft Script Controlも必要です。ここからダウンロードできるそうです。
  4. 次にDelphiにRubyをタイプライブラリとして登録する。
    1. Delphiの[プロジェクト]→[タイプライブラリの取り込み]を選択
    2. Microsoft Script Control 1.0 (Version 1.0)を選択し、インストール

プログラムのサンプル

タイプライブラリとして取り込んだMicrosoft Script Controlをフォームに貼り付け、LanguageプロパティをRubyScriptに設定します。(前回書くの忘れた。2001/1/16更新)

Rubyスクリプト

 #!/usr/local/bin/ruby

 class Hello
   def initialize(msg)
     @message = msg
   end

   def say
     return "Hi " + @message
   end

 end

 def create(str)
   Hello.new(str)
 end

DelphiのPascalソース

 unit RubyTestUnit1;

 interface

 uses
   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
   StdCtrls, OleCtrls, MSScriptControl_TLB, OleServer, RSCRIPTLib_TLB;

 type
   TForm1 = class(TForm)
     RubyControl: TScriptControl;
     Edit1: TEdit;
     Button1: TButton;
     procedure Button1Click(Sender: TObject);
   private
     { Private 宣言 }
   public
     { Public 宣言 }
   end;

 var
   Form1: TForm1;

 implementation

 {$R *.DFM}

 procedure TForm1.Button1Click(Sender: TObject);
 var
   F:Textfile;
   str:string;
   buf:string;
   hello: Variant;

 begin
         AssignFile(F, ExtractFilePath(Application.ExeName) + 'hello.rb');
         try
         ReSet(F);
           while not Eof(F) do
         begin
             Readln(F, buf);
             str := str + buf;
         end;
           CloseFile(F);
   except on E:Exception do
         ShowMessage(E.Message);
   end;

         // messagebox(0, PChar(str), 'ruby test', MB_OK);

   RubyControl.AddCode(str);
   hello := RubyControl.Eval('create("' + Edit1.Text + '")');
         { VBだとRubyControl.CodeObject.create(...)という風に書けるけど... }

   messagebox(0, PChar(String(hello.say)), 'ruby test', MB_OK);
         { hello.say でRubyのHelloクラスのsayメソッドを呼び出している }
  
 end;

 end.

AcrobatのFDFファイル内のパラメータを表示する

AcrobatのFDF(Adobe Form Data Format)のキーとその値を表示するスクリプトです。

FDFでは日本語をUnicodeで格納しているため、変換によしだむさんのUconvを使用しています。

使用方法

FDF.rb fdffile

key=valueのように表示されます。getContentsメソッドでキーと値のHashを取得することもできます。

[FDF.rb v1.1]

TeXのPSファイル内の情報を表示する

TeXのdvips(k)で生成したPSファイルからフォント情報やEPSの情報などが取得できると便利ではないかと思い作りました。

まだ、追加したい機能もあるので今後バージョンアップ(使っていないクラスもあるし)する予定です。

使用方法

texpsinfo.rb PSfile

使用フォント、埋め込みフォント、埋め込みEPSのリストが標準出力に表示されます。

[texpsinfo.rb v1.1]

TeXのPSファイル内のEPSの情報を表示する

TeXのdvips(k)で生成したPSファイルに埋め込まれているEPSの個々の情報が取得できると便利ではないかと思い作りました。ファイル名、Creator、BoundingBoxがタブ区切りで標準出力に表示されます。

実行には上記のtexpsinfo.rbが必要です。

使用方法

epsinfo.rb PSfile

[epsinfo.rb v1.1]

TeXの索引に読みがなを付ける

TeXのソース内の\index{...}に読みがなを付けます。

Gotokenさんのkakasiモジュールを使用しているので、kakasi本体とkakasiモジュールが必要です。

使用方法

texidxruby.rb TeXfile

[texidxruby.rb v1.2]

リンク