alexgutteridge-rsruby 0.5
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +11 -0
- data/License.txt +504 -0
- data/Manifest.txt +39 -0
- data/README.txt +96 -0
- data/Rakefile.rb +153 -0
- data/examples/arrayfields.rb +52 -0
- data/examples/bioc.rb +35 -0
- data/examples/dataframe.rb +35 -0
- data/examples/erobj.rb +30 -0
- data/ext/Converters.c +667 -0
- data/ext/Converters.h +77 -0
- data/ext/R_eval.c +144 -0
- data/ext/R_eval.h +40 -0
- data/ext/extconf.rb +13 -0
- data/ext/robj.c +205 -0
- data/ext/rsruby.c +182 -0
- data/ext/rsruby.h +87 -0
- data/lib/rsruby.rb +302 -0
- data/lib/rsruby/dataframe.rb +107 -0
- data/lib/rsruby/erobj.rb +105 -0
- data/lib/rsruby/robj.rb +67 -0
- data/test/table.txt +4 -0
- data/test/tc_array.rb +59 -0
- data/test/tc_boolean.rb +30 -0
- data/test/tc_cleanup.rb +22 -0
- data/test/tc_eval.rb +21 -0
- data/test/tc_extensions.rb +43 -0
- data/test/tc_init.rb +11 -0
- data/test/tc_io.rb +57 -0
- data/test/tc_library.rb +20 -0
- data/test/tc_matrix.rb +23 -0
- data/test/tc_modes.rb +264 -0
- data/test/tc_robj.rb +84 -0
- data/test/tc_sigint.rb +10 -0
- data/test/tc_to_r.rb +145 -0
- data/test/tc_to_ruby.rb +153 -0
- data/test/tc_util.rb +19 -0
- data/test/tc_vars.rb +28 -0
- data/test/test_all.rb +22 -0
- metadata +103 -0
data/test/tc_sigint.rb
ADDED
data/test/tc_to_r.rb
ADDED
@@ -0,0 +1,145 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'rsruby'
|
3
|
+
|
4
|
+
class Foo
|
5
|
+
end
|
6
|
+
|
7
|
+
class Bar
|
8
|
+
def initialize(x)
|
9
|
+
@x = x
|
10
|
+
end
|
11
|
+
def as_r
|
12
|
+
@x
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
class TestToR < Test::Unit::TestCase
|
17
|
+
|
18
|
+
def setup
|
19
|
+
@r = RSRuby.instance
|
20
|
+
#@r.gctorture(:on => true)
|
21
|
+
RSRuby.set_default_mode(RSRuby::NO_DEFAULT)
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_robj_to_r
|
25
|
+
|
26
|
+
@r.c.autoconvert(RSRuby::NO_CONVERSION)
|
27
|
+
|
28
|
+
r1 = @r.c(4)
|
29
|
+
r2 = @r.c('foo')
|
30
|
+
r3 = @r.c(['a','b'])
|
31
|
+
|
32
|
+
assert(@r['=='].call(r1,4))
|
33
|
+
assert(@r['=='].call(r2,'foo'))
|
34
|
+
assert(@r['=='].call(r3,['a','b']))
|
35
|
+
|
36
|
+
assert_equal(@r.typeof(@r.eval),'closure')
|
37
|
+
assert_equal(@r.typeof(@r.eval(@r.eval)), 'closure')
|
38
|
+
assert_equal(@r.typeof(@r.eval([@r.eval,@r.eval])), 'list')
|
39
|
+
|
40
|
+
#Same tests as above in basic mode - should be identical
|
41
|
+
@r.c.autoconvert(RSRuby::BASIC_CONVERSION)
|
42
|
+
|
43
|
+
r1 = @r.c(4)
|
44
|
+
r2 = @r.c('foo')
|
45
|
+
r3 = @r.c(['a','b'])
|
46
|
+
|
47
|
+
assert(@r['=='].call(r1,4))
|
48
|
+
assert(@r['=='].call(r2,'foo'))
|
49
|
+
assert(@r['=='].call(r3,['a','b']))
|
50
|
+
|
51
|
+
assert_equal(@r.typeof(@r.eval),'closure')
|
52
|
+
assert_equal(@r.typeof(@r.eval(@r.eval)), 'closure')
|
53
|
+
assert_equal(@r.typeof(@r.eval([@r.eval,@r.eval])), 'list')
|
54
|
+
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_empty_array_to_null
|
58
|
+
assert(@r.is_null([]))
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_boolean_to_logical
|
62
|
+
assert_equal(@r.c(true),true)
|
63
|
+
assert_equal(@r.c(true).class,true.class)
|
64
|
+
assert_equal(@r.c(false),false)
|
65
|
+
assert_equal(@r.c(false).class,false.class)
|
66
|
+
end
|
67
|
+
|
68
|
+
def test_int_to_int
|
69
|
+
@r.c.autoconvert(RSRuby::NO_CONVERSION)
|
70
|
+
assert_equal(@r.typeof(@r.c(4)), 'integer')
|
71
|
+
@r.c.autoconvert(RSRuby::BASIC_CONVERSION)
|
72
|
+
assert_equal(@r.typeof(@r.c(4)), 'integer')
|
73
|
+
end
|
74
|
+
|
75
|
+
def test_float_to_float
|
76
|
+
@r.c.autoconvert(RSRuby::NO_CONVERSION)
|
77
|
+
assert_equal(@r.typeof(@r.c(4.5)), 'double')
|
78
|
+
@r.c.autoconvert(RSRuby::BASIC_CONVERSION)
|
79
|
+
assert_equal(@r.typeof(@r.c(4.5)), 'double')
|
80
|
+
end
|
81
|
+
|
82
|
+
def test_char_to_char
|
83
|
+
@r.c.autoconvert(RSRuby::NO_CONVERSION)
|
84
|
+
assert_equal(@r.typeof(@r.c('foo')), 'character')
|
85
|
+
@r.c.autoconvert(RSRuby::BASIC_CONVERSION)
|
86
|
+
assert_equal(@r.typeof(@r.c('foo')), 'character')
|
87
|
+
end
|
88
|
+
|
89
|
+
def test_hash_to_named_vector
|
90
|
+
@r.c.autoconvert(RSRuby::NO_CONVERSION)
|
91
|
+
assert_equal(@r.typeof(@r.c(:foo => 5, :bar => 7)),'integer')
|
92
|
+
|
93
|
+
assert(@r.attributes(@r.c(:foo => 5, :bar => 7))['names'].include?('foo'))
|
94
|
+
assert(@r.attributes(@r.c(:foo => 5, :bar => 7))['names'].include?('bar'))
|
95
|
+
#TODO - these fail because of the different calling semantics in
|
96
|
+
#RSRuby
|
97
|
+
#@r.c.autoconvert(RSRuby::BASIC_CONVERSION)
|
98
|
+
#assert_equal(@r.typeof(@r.c(:foo => 5, :bar => 7)),'integer')
|
99
|
+
#assert(@r.attributes(@r.c(:foo => 5, :bar => 7))['names'].include?('foo'))
|
100
|
+
#assert(@r.attributes(@r.c(:foo => 5, :bar => 7))['names'].include?('bar'))
|
101
|
+
end
|
102
|
+
|
103
|
+
def test_array_to_vector
|
104
|
+
@r.c.autoconvert(RSRuby::NO_CONVERSION)
|
105
|
+
assert_equal(@r.length(@r.c(1,2,3,4)),4)
|
106
|
+
@r.c.autoconvert(RSRuby::BASIC_CONVERSION)
|
107
|
+
assert_equal(@r.length(@r.c(1,2,3,4)),4)
|
108
|
+
end
|
109
|
+
|
110
|
+
def test_not_convertible
|
111
|
+
#TODO - range?
|
112
|
+
assert_raises(ArgumentError){@r.c(1..10)}
|
113
|
+
end
|
114
|
+
|
115
|
+
def test_instances_not_convertible
|
116
|
+
foo = Foo.new
|
117
|
+
assert_raises(ArgumentError){@r.c(foo)}
|
118
|
+
end
|
119
|
+
|
120
|
+
def test_as_r_method
|
121
|
+
@r.c.autoconvert(RSRuby::BASIC_CONVERSION)
|
122
|
+
|
123
|
+
a = Bar.new(3)
|
124
|
+
b = Bar.new('foo')
|
125
|
+
d = Bar.new(@r.seq)
|
126
|
+
|
127
|
+
assert_equal(@r.c(a),3)
|
128
|
+
assert_equal(@r.c(b),'foo')
|
129
|
+
assert_equal(@r.c(d).call(1,3),[1,2,3])
|
130
|
+
|
131
|
+
end
|
132
|
+
|
133
|
+
def test_max_int_to_r
|
134
|
+
#TODO
|
135
|
+
end
|
136
|
+
|
137
|
+
def test_inf_to_r
|
138
|
+
#TODO
|
139
|
+
end
|
140
|
+
|
141
|
+
def test_NaN_to_r
|
142
|
+
#TODO
|
143
|
+
end
|
144
|
+
|
145
|
+
end
|
data/test/tc_to_ruby.rb
ADDED
@@ -0,0 +1,153 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'rsruby'
|
3
|
+
|
4
|
+
class TestToRuby < Test::Unit::TestCase
|
5
|
+
@@test_dir = File.expand_path File.dirname(__FILE__)
|
6
|
+
|
7
|
+
def setup
|
8
|
+
@r = RSRuby.instance
|
9
|
+
RSRuby.set_default_mode(RSRuby::NO_DEFAULT)
|
10
|
+
@r.seq.autoconvert(RSRuby::BASIC_CONVERSION)
|
11
|
+
@r.c.autoconvert(RSRuby::BASIC_CONVERSION)
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_null_to_nil
|
15
|
+
assert(@r.attributes(@r.seq).nil?)
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_factor_to_list
|
19
|
+
assert_equal(@r.factor([1,2,3,4]), ['1','2','3','4'])
|
20
|
+
assert_equal(@r.factor([1,1,1,2]), ['1','1','1','2'])
|
21
|
+
assert_equal(@r.factor(['a','b','c']), ['a','b','c'])
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_NA_int
|
25
|
+
#The formula on right should equal smallest Fixnum
|
26
|
+
#in current Ruby build (can vary)
|
27
|
+
assert_equal(@r.NA, (-1)*(2**((1.size*8)-1)))
|
28
|
+
assert(@r.is_na(@r.NA))
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_NA_string
|
32
|
+
assert_equal(@r.eval_R('as.character(NA)'), 'NA')
|
33
|
+
assert_equal(@r.as_character(@r.NA), 'NA')
|
34
|
+
assert_equal(@r.as_character(@r.NaN), 'NaN')
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_factor_NA
|
38
|
+
assert_equal(@r.factor(@r.NA) , 'NA')
|
39
|
+
assert_equal(@r.factor(@r.NaN), 'NaN')
|
40
|
+
assert_equal(@r.factor(@r.as_character('NA')), 'NA')
|
41
|
+
|
42
|
+
xi = [1,2,@r.NA,@r.NaN,4]
|
43
|
+
assert_equal(@r.factor(xi), ['1','2','NA','NaN','4'])
|
44
|
+
|
45
|
+
xd = [1.01,2.02,@r.NA,@r.NaN,4.04]
|
46
|
+
assert_equal(@r.factor(xd), ['1.01','2.02','NA','NaN','4.04'])
|
47
|
+
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_NA_list
|
51
|
+
|
52
|
+
#TODO - RPy has commented out these tests as well.
|
53
|
+
#The conversion between NA/NaN and Ruby seems a little confused
|
54
|
+
#at the moment
|
55
|
+
|
56
|
+
xi = [1,2,@r.NA,@r.NaN,4]
|
57
|
+
assert_equal(@r.as_character(xi), ['1','2','NA','NaN','4'])
|
58
|
+
#assert_equal(@r.as_numeric(xi) , [1.0,2.0,@r.NA,@r.NaN,4.0])
|
59
|
+
#assert_equal(@r.as_integer(xi) , [1,2,@r.NA,@r.NaN,4])
|
60
|
+
assert_equal(@r.factor(xi) , ['1','2','NA','NaN','4'])
|
61
|
+
assert_equal(@r.is_na(xi) , [false, false, true, true, false])
|
62
|
+
|
63
|
+
xd = [1.01,2.02,@r.NA,@r.NaN,4.04]
|
64
|
+
assert_equal(@r.as_character(xd), ['1.01','2.02','NA','NaN','4.04'])
|
65
|
+
#assert_equal(@r.as_numeric(xi) , [1.01,2.01,@r.NA,@r.NaN,4.01])
|
66
|
+
assert_equal(@r.as_integer(xd) , [1,2,@r.NA,@r.NA,4])
|
67
|
+
assert_equal(@r.factor(xd) , ['1.01','2.02','NA','NaN','4.04'])
|
68
|
+
assert_equal(@r.is_na(xd) , [false, false, true, true, false])
|
69
|
+
end
|
70
|
+
|
71
|
+
#TODO - table.txt?????????
|
72
|
+
def test_dataframe_to_list
|
73
|
+
@r.read_table.autoconvert(RSRuby::BASIC_CONVERSION)
|
74
|
+
assert_equal(@r.read_table(@@test_dir+"/table.txt", {:header => 1}),
|
75
|
+
{
|
76
|
+
'A' => ['X1','X2','X3'],
|
77
|
+
'C' => [5,8,2],
|
78
|
+
'B' => [4.0,7.0,6.0],
|
79
|
+
'D' => ['6','9','Foo']
|
80
|
+
})
|
81
|
+
end
|
82
|
+
|
83
|
+
def test_logical_to_boolean
|
84
|
+
assert_equal(@r.TRUE, true)
|
85
|
+
assert_equal(@r.T, true)
|
86
|
+
assert_equal(@r.FALSE, false)
|
87
|
+
assert_equal(@r.F, false)
|
88
|
+
end
|
89
|
+
|
90
|
+
def test_int_to_int
|
91
|
+
assert_equal(@r.as_integer(5),5)
|
92
|
+
assert_equal(@r.as_integer(-3),-3)
|
93
|
+
end
|
94
|
+
|
95
|
+
def test_float_to_float
|
96
|
+
assert_equal(@r.as_real(5),5.0)
|
97
|
+
assert_equal(@r.as_real(3.1),3.1)
|
98
|
+
assert_equal(@r.as_real(-3.1), -3.1)
|
99
|
+
end
|
100
|
+
|
101
|
+
def test_complex_to_complex
|
102
|
+
#TODO - Think about Complex support
|
103
|
+
assert_equal(@r.as_complex(Complex(1,2)), Complex(1,2))
|
104
|
+
assert_equal(@r.as_complex(Complex(1.5,-3.4)), Complex(1.5,-3.4))
|
105
|
+
end
|
106
|
+
|
107
|
+
def test_str_to_str
|
108
|
+
@r.as_data_frame.autoconvert(RSRuby::NO_CONVERSION)
|
109
|
+
assert_equal(@r.class_(@r.as_data_frame([1,2,3])), 'data.frame')
|
110
|
+
end
|
111
|
+
|
112
|
+
def test_vector_length_one
|
113
|
+
assert_equal(@r.c(1),1)
|
114
|
+
assert_equal(@r.c('foo'),'foo')
|
115
|
+
end
|
116
|
+
|
117
|
+
def test_int_vector_to_array
|
118
|
+
assert_equal(@r.seq(10),[1,2,3,4,5,6,7,8,9,10])
|
119
|
+
end
|
120
|
+
|
121
|
+
def test_float_vector_to_array
|
122
|
+
assert_equal(@r.seq(1,2,{:by => 0.5}), [1.0,1.5,2.0])
|
123
|
+
end
|
124
|
+
|
125
|
+
def test_complex_vector_to_array
|
126
|
+
assert_equal(@r.c(Complex(1,2),Complex(2,-3)),[Complex(1,2),Complex(2,-3)])
|
127
|
+
end
|
128
|
+
|
129
|
+
def test_str_vector_to_array
|
130
|
+
assert_equal(@r.c('Foo','Bar'),['Foo','Bar'])
|
131
|
+
end
|
132
|
+
|
133
|
+
def test_list_to_array
|
134
|
+
@r.list.autoconvert(RSRuby::BASIC_CONVERSION)
|
135
|
+
assert_equal(@r.list(1,2.0,'foo'),[1,2.0,'foo'])
|
136
|
+
end
|
137
|
+
|
138
|
+
def test_named_vector_to_hash
|
139
|
+
@r.c.autoconvert(RSRuby::NO_CONVERSION)
|
140
|
+
a = @r.attr__(@r.c(1,2,3), 'names', ['foo','bar','baz'])
|
141
|
+
assert_equal(a,{'foo'=>1,'bar'=>2,'baz'=>3})
|
142
|
+
assert_equal(@r.list(:foo => 1, :bar => 2, :baz => 3),{'foo'=>1,'bar'=>2,'baz'=>3})
|
143
|
+
end
|
144
|
+
|
145
|
+
def test_vector_coercion
|
146
|
+
@r.c.autoconvert(RSRuby::NO_CONVERSION)
|
147
|
+
assert_equal(@r.typeof(@r.c(1,2,3)), 'integer')
|
148
|
+
assert_equal(@r.typeof(@r.c(1,2.0,3)), 'double')
|
149
|
+
assert_equal(@r.typeof(@r.c(1,Complex(2,3),3)), 'complex')
|
150
|
+
assert_equal(@r.typeof(@r.c(1,'foo',3)), 'character')
|
151
|
+
end
|
152
|
+
|
153
|
+
end
|
data/test/tc_util.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'rsruby'
|
3
|
+
|
4
|
+
class TestUtil < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def test_as_list
|
7
|
+
#TODO
|
8
|
+
#assert_equal($r.as_lis
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_with_mode
|
12
|
+
#TODO
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_r_code
|
16
|
+
#TODO - Not sure about this. I use r.eval_R('')
|
17
|
+
#Not really a util
|
18
|
+
end
|
19
|
+
end
|
data/test/tc_vars.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'rsruby'
|
3
|
+
|
4
|
+
class TestVars < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def setup
|
7
|
+
@r = RSRuby.instance
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_get_vars
|
11
|
+
@r.eval_R("f<-function(x) x+1")
|
12
|
+
@r.assign('x',100)
|
13
|
+
@r.assign('v',(1..10).to_a)
|
14
|
+
#There is a difference here between RPy and us
|
15
|
+
#a final hash argument is treated as named arguments
|
16
|
+
#to the original function call (assign) not as a list
|
17
|
+
#to be given to the function
|
18
|
+
@r.c.autoconvert(RSRuby::NO_CONVERSION)
|
19
|
+
@r.assign('d',@r.c({'a' => 1, 'b' => 2}))
|
20
|
+
@r.c.autoconvert(RSRuby::BASIC_CONVERSION)
|
21
|
+
|
22
|
+
assert_equal(@r.x, 100)
|
23
|
+
assert_equal(@r.v, (1..10).to_a)
|
24
|
+
assert_equal(@r.d, @r.c({'a' => 1, 'b' => 2}))
|
25
|
+
assert_equal(@r.f.class, @r.c.class)
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
data/test/test_all.rb
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
#Tests all test cases for rsruby
|
2
|
+
|
3
|
+
require 'test/unit'
|
4
|
+
|
5
|
+
require 'tc_array'
|
6
|
+
require 'tc_boolean'
|
7
|
+
require 'tc_cleanup'
|
8
|
+
require 'tc_eval'
|
9
|
+
require 'tc_extensions'
|
10
|
+
require 'tc_init'
|
11
|
+
#require 'tc_io'
|
12
|
+
require 'tc_library'
|
13
|
+
require 'tc_matrix'
|
14
|
+
require 'tc_modes'
|
15
|
+
require 'tc_robj'
|
16
|
+
#require 'tc_sigint'
|
17
|
+
require 'tc_to_ruby'
|
18
|
+
require 'tc_to_r'
|
19
|
+
require 'tc_util'
|
20
|
+
require 'tc_vars'
|
21
|
+
|
22
|
+
|
metadata
ADDED
@@ -0,0 +1,103 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: alexgutteridge-rsruby
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: "0.5"
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Alex Gutteridge
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2008-11-19 00:00:00 -08:00
|
13
|
+
default_executable:
|
14
|
+
dependencies: []
|
15
|
+
|
16
|
+
description: RSRuby is a bridge library for Ruby giving Ruby developers access to the full R statistical programming environment. RSRuby embeds a full R interpreter inside the running Ruby script, allowing R methods to be called and data passed between the Ruby script and the R interpreter. Most data conversion is handled automatically, but user-definable conversion routines can also be written to handle any R or Ruby class.
|
17
|
+
email: ag357@cam.ac.uk
|
18
|
+
executables: []
|
19
|
+
|
20
|
+
extensions:
|
21
|
+
- ext/extconf.rb
|
22
|
+
extra_rdoc_files:
|
23
|
+
- README.txt
|
24
|
+
- History.txt
|
25
|
+
- License.txt
|
26
|
+
- examples/bioc.rb
|
27
|
+
- examples/dataframe.rb
|
28
|
+
- examples/arrayfields.rb
|
29
|
+
- examples/erobj.rb
|
30
|
+
files:
|
31
|
+
- History.txt
|
32
|
+
- License.txt
|
33
|
+
- Manifest.txt
|
34
|
+
- README.txt
|
35
|
+
- Rakefile.rb
|
36
|
+
- examples/arrayfields.rb
|
37
|
+
- examples/bioc.rb
|
38
|
+
- examples/dataframe.rb
|
39
|
+
- examples/erobj.rb
|
40
|
+
- ext/Converters.c
|
41
|
+
- ext/Converters.h
|
42
|
+
- ext/R_eval.c
|
43
|
+
- ext/R_eval.h
|
44
|
+
- ext/extconf.rb
|
45
|
+
- ext/robj.c
|
46
|
+
- ext/rsruby.c
|
47
|
+
- ext/rsruby.h
|
48
|
+
- lib/rsruby.rb
|
49
|
+
- lib/rsruby/dataframe.rb
|
50
|
+
- lib/rsruby/erobj.rb
|
51
|
+
- lib/rsruby/robj.rb
|
52
|
+
- test/table.txt
|
53
|
+
- test/tc_array.rb
|
54
|
+
- test/tc_boolean.rb
|
55
|
+
- test/tc_cleanup.rb
|
56
|
+
- test/tc_eval.rb
|
57
|
+
- test/tc_extensions.rb
|
58
|
+
- test/tc_init.rb
|
59
|
+
- test/tc_io.rb
|
60
|
+
- test/tc_library.rb
|
61
|
+
- test/tc_matrix.rb
|
62
|
+
- test/tc_modes.rb
|
63
|
+
- test/tc_robj.rb
|
64
|
+
- test/tc_sigint.rb
|
65
|
+
- test/tc_to_r.rb
|
66
|
+
- test/tc_to_ruby.rb
|
67
|
+
- test/tc_util.rb
|
68
|
+
- test/tc_vars.rb
|
69
|
+
- test/test_all.rb
|
70
|
+
has_rdoc: true
|
71
|
+
homepage: http://web.kuicr.kyoto-u.ac.jp/~alexg/rsruby/
|
72
|
+
post_install_message:
|
73
|
+
rdoc_options:
|
74
|
+
- --exclude
|
75
|
+
- test/*
|
76
|
+
- --main
|
77
|
+
- README.txt
|
78
|
+
- --inline-source
|
79
|
+
require_paths:
|
80
|
+
- lib
|
81
|
+
- test
|
82
|
+
- ext
|
83
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
84
|
+
requirements:
|
85
|
+
- - ">="
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: "0"
|
88
|
+
version:
|
89
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
90
|
+
requirements:
|
91
|
+
- - ">="
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: "0"
|
94
|
+
version:
|
95
|
+
requirements: []
|
96
|
+
|
97
|
+
rubyforge_project: rsruby
|
98
|
+
rubygems_version: 1.2.0
|
99
|
+
signing_key:
|
100
|
+
specification_version: 2
|
101
|
+
summary: RSRuby is a bridge library for Ruby giving Ruby developers access to the full R statistical programming environment. RSRuby embeds a full R interpreter inside the running Ruby script, allowing R methods to be called and data passed between the Ruby script and the R interpreter. Most data conversion is handled automatically, but user-definable conversion routines can also be written to handle any R or Ruby class.
|
102
|
+
test_files:
|
103
|
+
- test/test_all.rb
|