Rubyでは行番号がどうやっても無理で
Scala DSLによるBASIC実装 - Greenbear Diary (2009-04-07)
全くその通りで悔しいので、せめていんちきを。
# coding: UTF-8 require "basic" basic do 10 PRINT "Hello world!" 20 END end
以下ソース。
class << Object def const_missing(*) end end def basic(&blk) class << env = Object.new alias PRINT puts def method_missing(*) end end env.instance_eval(&blk) end
1.8 で動かすときは -Ku を。こないだちょうど「この挙動が紛らわしい」と聞いたので、ちょっと活用してみた。
追記 一発ネタとはいえ、上の basic.rb は投げやりすぎたので書き直し。
class BasicEnv alias PRINT puts def method_missing(*) end def self.const_missing(*) end end def basic(&blk) BasicEnv.new.instance_eval(&blk) end
と思ったけどこれ 1.8 で動かないな。