basic require_relative (hack)
opted to hack require to be getting on need require for the test helper and the files in lib/parfait General require mechanism would still be ok, but require_ralative means implementing file source, which needs to be dragged around. I'll make an issue
This commit is contained in:
parent
b13c19def3
commit
1a096110a8
@ -6,13 +6,27 @@ module Ruby
|
||||
class SendStatement < CallStatement
|
||||
|
||||
def to_vool
|
||||
return super unless @receiver.is_a?(ModuleName) and @receiver.name == :X
|
||||
args = @arguments.collect { |arg| arg.to_vool }
|
||||
Vool::MacroExpression.new(name , args)
|
||||
if @receiver.is_a?(ModuleName) and @receiver.name == :X
|
||||
args = @arguments.collect { |arg| arg.to_vool }
|
||||
return Vool::MacroExpression.new(name , args)
|
||||
end
|
||||
return require_file if( @name == :require_relative )
|
||||
return super
|
||||
end
|
||||
def to_s(depth = 0)
|
||||
at_depth( depth , "#{receiver}.#{name}(#{arguments.join(', ')})")
|
||||
end
|
||||
def require_file
|
||||
target = @arguments.first.value
|
||||
if(target == 'helper')
|
||||
file = "/test/rubyx/rt_parfait/helper.rb"
|
||||
else
|
||||
file = "/lib/parfait/#{target}.rb"
|
||||
end
|
||||
path = File.expand_path( "../../../#{file}" , __FILE__)
|
||||
source = File.read(path)
|
||||
RubyCompiler.compile( source ).to_vool
|
||||
end
|
||||
end
|
||||
class SuperStatement < SendStatement
|
||||
def initialize(args)
|
||||
|
34
test/ruby/test_require.rb
Normal file
34
test/ruby/test_require.rb
Normal file
@ -0,0 +1,34 @@
|
||||
require_relative "helper"
|
||||
|
||||
module Ruby
|
||||
class TestSendRequireHelper < MiniTest::Test
|
||||
include RubyTests
|
||||
def setup
|
||||
@lst = compile( "require_relative 'helper'").to_vool
|
||||
end
|
||||
def test_helper_class
|
||||
assert_equal Vool::ClassExpression , @lst.class
|
||||
assert_equal :ParfaitTest , @lst.name
|
||||
end
|
||||
def test_methods
|
||||
assert_equal Vool::Statements , @lst.body.class
|
||||
assert_equal Vool::MethodExpression , @lst.body.first.class
|
||||
assert_equal :setup , @lst.body.first.name
|
||||
end
|
||||
end
|
||||
class TestSendRequireparfait < MiniTest::Test
|
||||
include RubyTests
|
||||
def setup
|
||||
@lst = compile( "require_relative 'object'").to_vool
|
||||
end
|
||||
def test_helper_class
|
||||
assert_equal Vool::ClassExpression , @lst.class
|
||||
assert_equal :Object , @lst.name
|
||||
end
|
||||
def test_methods
|
||||
assert_equal Vool::Statements , @lst.body.class
|
||||
assert_equal Vool::MethodExpression , @lst.body.first.class
|
||||
assert_equal :type , @lst.body.first.name
|
||||
end
|
||||
end
|
||||
end
|
Loading…
x
Reference in New Issue
Block a user