23. 「安心・安全・安定・信頼」できるインターネットサービスを
言語解釈器の作成
18
class CalEvent
def initialize(title)
@title = title
@date = @start_time = @end_time = nil
end
def on(date)
@date = Date.parse(date)
end
def show
print "title:#{@title}, on #{@date}, starts #{@start_time}, ends #{@end_time}n"
end
end
def event(title, &block)
cal = CalEvent.new(title)
cal.instance_eval(&block)
cal.show
end
load File.expand_path(ARGV[0])
27. 「安心・安全・安定・信頼」できるインターネットサービスを
言語解釈器の拡張
22
class CalEvent
def initialize(title)
@title = title
@date = @start_time = @end_time = nil
end
:
class Every
def initialize(method)
@method = method
@wday = nil
end
:
end
def every(method, &block)
@every = Every.new(method)
@every.instance_eval(&block)
end
:
def show
@every.generate.each { |date|
:
}
end
28. 「安心・安全・安定・信頼」できるインターネットサービスを
実行結果
23
% ruby calendar.rb calendar.txt
title:beer party, on 2013-08-03, starts 13:00, ends 17:00
title:beer party, on 2013-08-10, starts 13:00, ends 17:00
title:beer party, on 2013-08-17, starts 13:00, ends 17:00
title:beer party, on 2013-08-24, starts 13:00, ends 17:00
title:beer party, on 2013-08-31, starts 13:00, ends 17:00