メタプログラミングRuby を読み始めた

Ruby の知識は全然足りない状態で読み始めた.
とりあえず,色々調べながらで最初全然進めない感じですよ.

調べたこと - Ruby

  • Rakefile - test target を簡単に刺す
  • Rakefile - default ターゲットの指定方法

gist にしようかと思ったけど,とりあえずそのまま貼る
構成としては,

Rakefile
lib/object_model/alphanumeric.rb
test/test_object_model_alphanumeric.rb

Rakefile

require 'rake/testtask'

Rake::TestTask.new

task :default => "test"

こんな感じ.

で,Perl で書き直してみた.

Makefile.PL
lib/ObjectModel/Alphanumeric.pm
t/ObjectModel_Alphanumeric.t

Makefile.PL

use inc::Module::Install;

name 'ObjectModel-Alphanumeric';
all_from 'lib/ObjectModel/Alphanumeric.pm';

WriteAll;

lib/ObjectModel/Alphanumeric.pm

package ObjectModel::Alphanumeric;

use strict;
use warnings;

# Perl5 は,そもそもネイティブなオブジェクト指向言語ではないので
# autobox を使って,スカラにメソッドを刺せるようにする
sub to_alphanumeric {
    ($_ = shift) =~ s/[^\w\s]//g;
    $_;
}

1;

t/ObjectModel_Alphanumeric.t

#!/usr/bin/env perl

use strict;
use warnings;

use Test::More;
use FindBin;
use lib qq|$FindBin::Bin/../lib|;

use ObjectModel::Alphanumeric;
use autobox SCALAR => 'ObjectModel::Alphanumeric';

is(ObjectModel::Alphanumeric::to_alphanumeric('#3, the *Magic, Number*?'), '3 the Magic Number');
is('#3, the *Magic, Number*?'->to_alphanumeric(), '3 the Magic Number');

done_testing;

ということで,とりあえず Rakefile, Makefile.PL を書く辺で止まっているけど,
順番にやっていこうと思う.

参考

メタプログラミングRuby
Paolo Perrotta
アスキー・メディアワークス
売り上げランキング: 24616