rserve-client 0.1.7 → 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data.tar.gz.sig +0 -0
 - data/History.txt +7 -0
 - data/Manifest.txt +2 -2
 - data/README.txt +2 -1
 - data/examples/lowless.rb +4 -2
 - data/lib/rserve.rb +1 -1
 - data/lib/rserve/protocol/rexpfactory.rb +22 -14
 - data/lib/rserve/rexp.rb +14 -11
 - data/lib/rserve/rexp/double.rb +7 -0
 - data/lib/rserve/rexp/genericvector.rb +1 -1
 - data/lib/rserve/rexp/logical.rb +11 -0
 - data/lib/rserve/rexp/string.rb +6 -2
 - data/lib/rserve/rlist.rb +3 -1
 - data/spec/rserve_genericvector_spec.rb +20 -0
 - data/spec/rserve_rexp_to_ruby_spec.rb +44 -0
 - data/spec/rserve_rexpfactory_spec.rb +11 -1
 - metadata +7 -5
 - metadata.gz.sig +2 -1
 - data/.autotest +0 -23
 - data/.gitignore +0 -5
 
    
        data.tar.gz.sig
    CHANGED
    
    | 
         Binary file 
     | 
    
        data/History.txt
    CHANGED
    
    | 
         @@ -1,3 +1,10 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            === 0.1.8 / 2010-06-01
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            * Bug fix: attributes for generic vectors (data.frames) stored correctly. A Double vector without attribute dim raises an error on #to_ruby
         
     | 
| 
      
 4 
     | 
    
         
            +
            * Almost complete REXP#to_ruby according to http://wiki.github.com/clbustos/Rserve-Ruby-client/to_ruby-worflow
         
     | 
| 
      
 5 
     | 
    
         
            +
            * Updated examples
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
       1 
8 
     | 
    
         
             
            === 0.1.7 / 2010-05-28
         
     | 
| 
       2 
9 
     | 
    
         | 
| 
       3 
10 
     | 
    
         
             
            * Reimplement Rlist as an Array with module WithNames included
         
     | 
    
        data/Manifest.txt
    CHANGED
    
    | 
         @@ -1,5 +1,3 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            .autotest
         
     | 
| 
       2 
     | 
    
         
            -
            .gitignore
         
     | 
| 
       3 
1 
     | 
    
         
             
            Examples.txt
         
     | 
| 
       4 
2 
     | 
    
         
             
            History.txt
         
     | 
| 
       5 
3 
     | 
    
         
             
            Manifest.txt
         
     | 
| 
         @@ -39,11 +37,13 @@ lib/rserve/withattributes.rb 
     | 
|
| 
       39 
37 
     | 
    
         
             
            lib/rserve/withnames.rb
         
     | 
| 
       40 
38 
     | 
    
         
             
            spec/rserve_connection_spec.rb
         
     | 
| 
       41 
39 
     | 
    
         
             
            spec/rserve_double_spec.rb
         
     | 
| 
      
 40 
     | 
    
         
            +
            spec/rserve_genericvector_spec.rb
         
     | 
| 
       42 
41 
     | 
    
         
             
            spec/rserve_integer_spec.rb
         
     | 
| 
       43 
42 
     | 
    
         
             
            spec/rserve_logical_spec.rb
         
     | 
| 
       44 
43 
     | 
    
         
             
            spec/rserve_packet_spec.rb
         
     | 
| 
       45 
44 
     | 
    
         
             
            spec/rserve_protocol_spec.rb
         
     | 
| 
       46 
45 
     | 
    
         
             
            spec/rserve_rexp_spec.rb
         
     | 
| 
      
 46 
     | 
    
         
            +
            spec/rserve_rexp_to_ruby_spec.rb
         
     | 
| 
       47 
47 
     | 
    
         
             
            spec/rserve_rexp_wrapper_spec.rb
         
     | 
| 
       48 
48 
     | 
    
         
             
            spec/rserve_rexpfactory_spec.rb
         
     | 
| 
       49 
49 
     | 
    
         
             
            spec/rserve_rfactor_spec.rb
         
     | 
    
        data/README.txt
    CHANGED
    
    | 
         @@ -86,7 +86,8 @@ Spec 
     | 
|
| 
       86 
86 
     | 
    
         
             
                # The API could manage complex recursive list
         
     | 
| 
       87 
87 
     | 
    
         | 
| 
       88 
88 
     | 
    
         
             
                x=con.eval('list(l1=list(c(2,3)),l2=c(1,2,3))').to_ruby
         
     | 
| 
       89 
     | 
    
         
            -
                =>  
     | 
| 
      
 89 
     | 
    
         
            +
                => #<Array:19590368 [#<Array:19590116 [[(2/1), (3/1)]] names:nil>, [(1/1), (2/1), (3/1)]] names:["l1", "l2"]>
         
     | 
| 
      
 90 
     | 
    
         
            +
             
     | 
| 
       90 
91 
     | 
    
         | 
| 
       91 
92 
     | 
    
         
             
                # You could assign a REXP to R variables
         
     | 
| 
       92 
93 
     | 
    
         | 
    
        data/examples/lowless.rb
    CHANGED
    
    
    
        data/lib/rserve.rb
    CHANGED
    
    
| 
         @@ -74,7 +74,7 @@ module Rserve 
     | 
|
| 
       74 
74 
     | 
    
         
             
                    @cont
         
     | 
| 
       75 
75 
     | 
    
         
             
                  end
         
     | 
| 
       76 
76 
     | 
    
         
             
                  def get_attr
         
     | 
| 
       77 
     | 
    
         
            -
                    attr.nil? ? nil : attr.cont
         
     | 
| 
      
 77 
     | 
    
         
            +
                    @attr.nil? ? nil : @attr.cont
         
     | 
| 
       78 
78 
     | 
    
         
             
                  end
         
     | 
| 
       79 
79 
     | 
    
         
             
                  def sexp_mismatch(type)
         
     | 
| 
       80 
80 
     | 
    
         
             
                    STDERR.puts("Warning: #{type} SEXP size mismatch")
         
     | 
| 
         @@ -118,10 +118,12 @@ module Rserve 
     | 
|
| 
       118 
118 
     | 
    
         
             
                    end
         
     | 
| 
       119 
119 
     | 
    
         
             
                  end
         
     | 
| 
       120 
120 
     | 
    
         
             
                  def parse_REXP(buf,o)
         
     | 
| 
       121 
     | 
    
         
            -
                    puts "buffer:#{buf.to_s} | o= #{o}" if $DEBUG
         
     | 
| 
       122 
121 
     | 
    
         | 
| 
       123 
122 
     | 
    
         
             
                    xl=get_len(buf,o)
         
     | 
| 
       124 
123 
     | 
    
         
             
                    has_at  = (buf[o]&128)!=0
         
     | 
| 
      
 124 
     | 
    
         
            +
                    
         
     | 
| 
      
 125 
     | 
    
         
            +
                    puts "content:#{buf.slice(o,xl+4)} '#{buf.slice(o+4,xl+4).pack("C*")}'" if $DEBUG
         
     | 
| 
      
 126 
     | 
    
         
            +
                    
         
     | 
| 
       125 
127 
     | 
    
         
             
                    is_long = (buf[o]&64 )!=0
         
     | 
| 
       126 
128 
     | 
    
         
             
                    xt = buf[o]&63
         
     | 
| 
       127 
129 
     | 
    
         
             
                    o+=4 if is_long
         
     | 
| 
         @@ -131,9 +133,14 @@ module Rserve 
     | 
|
| 
       131 
133 
     | 
    
         | 
| 
       132 
134 
     | 
    
         
             
                    @attr=REXPFactory.new()
         
     | 
| 
       133 
135 
     | 
    
         
             
                    @cont=nil
         
     | 
| 
       134 
     | 
    
         
            -
                     
     | 
| 
      
 136 
     | 
    
         
            +
                    if has_at
         
     | 
| 
      
 137 
     | 
    
         
            +
                      puts "Processing attribs:" if $DEBUG
         
     | 
| 
      
 138 
     | 
    
         
            +
                      o = attr.parse_REXP(buf,o)
         
     | 
| 
      
 139 
     | 
    
         
            +
                      puts "FINAL ATTRIB:" if $DEBUG
         
     | 
| 
      
 140 
     | 
    
         
            +
                      pp get_attr.as_list if $DEBUG
         
     | 
| 
      
 141 
     | 
    
         
            +
                    end
         
     | 
| 
      
 142 
     | 
    
         
            +
                    puts "REXP: #{xt_name(@type)}(#{@type})[#{o},#{xl}], attr?:#{has_at}, attr=[#{get_attr}]" if $DEBUG
         
     | 
| 
       135 
143 
     | 
    
         | 
| 
       136 
     | 
    
         
            -
                    puts "REXP: #{xt_name(@type)}(#{@type})[#{xl}], attr?:#{has_at}, attr=[#{get_attr}]" if $DEBUG
         
     | 
| 
       137 
144 
     | 
    
         | 
| 
       138 
145 
     | 
    
         | 
| 
       139 
146 
     | 
    
         
             
                    if xt==XT_NULL
         
     | 
| 
         @@ -233,7 +240,7 @@ module Rserve 
     | 
|
| 
       233 
240 
     | 
    
         
             
                        $STDERR.puts "int SEXP size mismatch"
         
     | 
| 
       234 
241 
     | 
    
         
             
                        o=eox
         
     | 
| 
       235 
242 
     | 
    
         
             
                      end
         
     | 
| 
       236 
     | 
    
         
            -
             
     | 
| 
      
 243 
     | 
    
         
            +
                      
         
     | 
| 
       237 
244 
     | 
    
         
             
                      # hack for factors
         
     | 
| 
       238 
245 
     | 
    
         
             
                      if (!get_attr.nil?)
         
     | 
| 
       239 
246 
     | 
    
         
             
                        ca = get_attr().as_list["class"]
         
     | 
| 
         @@ -244,10 +251,9 @@ module Rserve 
     | 
|
| 
       244 
251 
     | 
    
         
             
                          xt = XT_FACTOR;
         
     | 
| 
       245 
252 
     | 
    
         
             
                        end
         
     | 
| 
       246 
253 
     | 
    
         
             
                      end
         
     | 
| 
       247 
     | 
    
         
            -
             
     | 
| 
       248 
     | 
    
         
            -
             
     | 
| 
       249 
     | 
    
         
            -
             
     | 
| 
      
 254 
     | 
    
         
            +
                      
         
     | 
| 
       250 
255 
     | 
    
         
             
                      if @cont.nil?
         
     | 
| 
      
 256 
     | 
    
         
            +
                        
         
     | 
| 
       251 
257 
     | 
    
         
             
                        @cont=REXP::Integer.new(d,get_attr)
         
     | 
| 
       252 
258 
     | 
    
         
             
                      end
         
     | 
| 
       253 
259 
     | 
    
         
             
                      return o
         
     | 
| 
         @@ -263,6 +269,7 @@ module Rserve 
     | 
|
| 
       263 
269 
     | 
    
         
             
                    end
         
     | 
| 
       264 
270 
     | 
    
         | 
| 
       265 
271 
     | 
    
         
             
                    if xt==XT_LIST_NOTAG or xt==XT_LIST_TAG or xt==XT_LANG_NOTAG or xt==XT_LANG_TAG
         
     | 
| 
      
 272 
     | 
    
         
            +
                      
         
     | 
| 
       266 
273 
     | 
    
         
             
                      lc=REXPFactory.new
         
     | 
| 
       267 
274 
     | 
    
         
             
                      nf=REXPFactory.new
         
     | 
| 
       268 
275 
     | 
    
         
             
                      l=Rlist.new
         
     | 
| 
         @@ -271,19 +278,21 @@ module Rserve 
     | 
|
| 
       271 
278 
     | 
    
         
             
                        o=lc.parse_REXP(buf,o)
         
     | 
| 
       272 
279 
     | 
    
         
             
                        if(xt==XT_LIST_TAG or xt==XT_LANG_TAG)
         
     | 
| 
       273 
280 
     | 
    
         
             
                          o=nf.parse_REXP(buf,o)
         
     | 
| 
       274 
     | 
    
         
            -
             
     | 
| 
      
 281 
     | 
    
         
            +
                          
         
     | 
| 
       275 
282 
     | 
    
         
             
                          name=nf.cont.as_string if(nf.cont.symbol? or nf.cont.string?)
         
     | 
| 
       276 
283 
     | 
    
         
             
                        end
         
     | 
| 
      
 284 
     | 
    
         
            +
                        puts "Agregando '#{name}'='#{lc.cont.inspect}'" if $DEBUG
         
     | 
| 
       277 
285 
     | 
    
         
             
                        if name.nil?
         
     | 
| 
       278 
286 
     | 
    
         
             
                          l.push(lc.cont)
         
     | 
| 
       279 
287 
     | 
    
         
             
                        else
         
     | 
| 
       280 
288 
     | 
    
         
             
                          l.put(name,lc.cont)
         
     | 
| 
       281 
289 
     | 
    
         
             
                        end
         
     | 
| 
       282 
290 
     | 
    
         
             
                      end
         
     | 
| 
      
 291 
     | 
    
         
            +
                      p l.inspect if $DEBUG
         
     | 
| 
       283 
292 
     | 
    
         | 
| 
       284 
293 
     | 
    
         
             
                      @cont=(xt==XT_LANG_NOTAG or xt==XT_LANG_TAG) ?
         
     | 
| 
       285 
     | 
    
         
            -
                      REXP::Language.new(l,get_attr) : REXP::List.new(l, get_attr)
         
     | 
| 
       286 
     | 
    
         
            -
             
     | 
| 
      
 294 
     | 
    
         
            +
                      REXP::Language.new(l, get_attr) : REXP::List.new(l, get_attr)
         
     | 
| 
      
 295 
     | 
    
         
            +
                      pp @cont if $DEBUG
         
     | 
| 
       287 
296 
     | 
    
         
             
                      if(o!=eox)
         
     | 
| 
       288 
297 
     | 
    
         
             
                        $STDERR.puts "Mismatch"
         
     | 
| 
       289 
298 
     | 
    
         
             
                        o=eox
         
     | 
| 
         @@ -343,14 +352,13 @@ module Rserve 
     | 
|
| 
       343 
352 
     | 
    
         
             
                      end
         
     | 
| 
       344 
353 
     | 
    
         
             
                      # fixup for lists since they're stored as attributes of vectors
         
     | 
| 
       345 
354 
     | 
    
         
             
                      if !get_attr.nil? and !get_attr.as_list['names'].nil?
         
     | 
| 
      
 355 
     | 
    
         
            +
                        puts "PROCESSING NAMES" if $DEBUG
         
     | 
| 
       346 
356 
     | 
    
         
             
                        nam=get_attr.as_list['names']
         
     | 
| 
       347 
357 
     | 
    
         
             
                        names=nil
         
     | 
| 
       348 
358 
     | 
    
         
             
                        if nam.string?
         
     | 
| 
       349 
359 
     | 
    
         
             
                          names=nam.as_strings
         
     | 
| 
       350 
360 
     | 
    
         
             
                        elsif nam.vector?
         
     | 
| 
       351 
     | 
    
         
            -
                           
     | 
| 
       352 
     | 
    
         
            -
                          names=Array.new(aa.length)
         
     | 
| 
       353 
     | 
    
         
            -
                          aa.length.times {|i| names[i]=aa[i].as_string}
         
     | 
| 
      
 361 
     | 
    
         
            +
                          names=nam.as_list.map {|v| v.as_string}
         
     | 
| 
       354 
362 
     | 
    
         
             
                        end
         
     | 
| 
       355 
363 
     | 
    
         
             
                        l=Rlist.new(v,names)
         
     | 
| 
       356 
364 
     | 
    
         
             
                        @cont=(xt==XT_VECTOR_EXP) ? REXP::ExpressionVector.new(l,get_attr) : REXP::GenericVector.new(l,get_attr)
         
     | 
    
        data/lib/rserve/rexp.rb
    CHANGED
    
    | 
         @@ -11,6 +11,9 @@ module Rserve 
     | 
|
| 
       11 
11 
     | 
    
         
             
                def initialize(attr=nil)
         
     | 
| 
       12 
12 
     | 
    
         
             
                  # Sorry for this, but I think is necessary to maintain sanity of attributes
         
     | 
| 
       13 
13 
     | 
    
         
             
                  raise ArgumentError, "Attribute should be a REXP::List, #{attr.class} provided" unless attr.nil? or attr.is_a? REXP::List
         
     | 
| 
      
 14 
     | 
    
         
            +
                  
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                  
         
     | 
| 
       14 
17 
     | 
    
         
             
                  @attr=attr
         
     | 
| 
       15 
18 
     | 
    
         
             
                end
         
     | 
| 
       16 
19 
     | 
    
         
             
                # specifies how many items of a vector or list will be displayed in {@link #toDebugString}
         
     | 
| 
         @@ -188,20 +191,20 @@ module Rserve 
     | 
|
| 
       188 
191 
     | 
    
         
             
                #
         
     | 
| 
       189 
192 
     | 
    
         
             
                # @return 2D array of doubles in the form double[rows][cols] or <code>null</code> if the contents is no 2-dimensional matrix of doubles
         
     | 
| 
       190 
193 
     | 
    
         
             
                def as_double_matrix()
         
     | 
| 
       191 
     | 
    
         
            -
             
     | 
| 
       192 
     | 
    
         
            -
             
     | 
| 
       193 
     | 
    
         
            -
             
     | 
| 
       194 
     | 
    
         
            -
             
     | 
| 
       195 
     | 
    
         
            -
             
     | 
| 
       196 
     | 
    
         
            -
             
     | 
| 
       197 
     | 
    
         
            -
             
     | 
| 
       198 
     | 
    
         
            -
             
     | 
| 
       199 
     | 
    
         
            -
             
     | 
| 
      
 194 
     | 
    
         
            +
                  ct = as_doubles()
         
     | 
| 
      
 195 
     | 
    
         
            +
                  dim = get_attribute "dim"
         
     | 
| 
      
 196 
     | 
    
         
            +
                  raise MismatchException, "matrix (dim attribute missing)" if dim.nil?
         
     | 
| 
      
 197 
     | 
    
         
            +
                  ds = dim.as_integers
         
     | 
| 
      
 198 
     | 
    
         
            +
                  raise MismatchException, "matrix (wrong dimensionality)"     if (ds.length!=2)
         
     | 
| 
      
 199 
     | 
    
         
            +
                  m,n = ds[0], ds[1]
         
     | 
| 
      
 200 
     | 
    
         
            +
                  # R stores matrices as matrix(c(1,2,3,4),2,2) = col1:(1,2), col2:(3,4)
         
     | 
| 
      
 201 
     | 
    
         
            +
                  # we need to copy everything, since we create 2d array from 1d array
         
     | 
| 
      
 202 
     | 
    
         
            +
                  r=m.times.map {|i| n.times.map {|j| ct[j*n+i]}}
         
     | 
| 
       200 
203 
     | 
    
         
             
                end
         
     | 
| 
       201 
204 
     | 
    
         
             
                # Returns a standard library's matrix
         
     | 
| 
       202 
205 
     | 
    
         
             
                def as_matrix
         
     | 
| 
       203 
     | 
    
         
            -
             
     | 
| 
       204 
     | 
    
         
            -
             
     | 
| 
      
 206 
     | 
    
         
            +
                  require 'matrix'
         
     | 
| 
      
 207 
     | 
    
         
            +
                  Matrix.rows(as_double_matrix)
         
     | 
| 
       205 
208 
     | 
    
         
             
                end
         
     | 
| 
       206 
209 
     | 
    
         | 
| 
       207 
210 
     | 
    
         
             
                # :section: tools
         
     | 
    
        data/lib/rserve/rexp/double.rb
    CHANGED
    
    | 
         @@ -49,6 +49,13 @@ module Rserve 
     | 
|
| 
       49 
49 
     | 
    
         
             
                  t=super
         
     | 
| 
       50 
50 
     | 
    
         
             
                  t << "{"  << @payload.map(&:to_s).join(",") << "}"
         
     | 
| 
       51 
51 
     | 
    
         
             
                end
         
     | 
| 
      
 52 
     | 
    
         
            +
                def to_ruby
         
     | 
| 
      
 53 
     | 
    
         
            +
                  if !attr.nil? and !attr.as_list['dim'].nil? and attr.as_list['dim'].to_ruby.size==2
         
     | 
| 
      
 54 
     | 
    
         
            +
                    as_matrix
         
     | 
| 
      
 55 
     | 
    
         
            +
                  else
         
     | 
| 
      
 56 
     | 
    
         
            +
                    super
         
     | 
| 
      
 57 
     | 
    
         
            +
                  end
         
     | 
| 
      
 58 
     | 
    
         
            +
                end
         
     | 
| 
       52 
59 
     | 
    
         
             
              end
         
     | 
| 
       53 
60 
     | 
    
         
             
            end
         
     | 
| 
       54 
61 
     | 
    
         
             
            end
         
     | 
    
        data/lib/rserve/rexp/logical.rb
    CHANGED
    
    | 
         @@ -59,6 +59,17 @@ module Rserve 
     | 
|
| 
       59 
59 
     | 
    
         
             
                  def false?
         
     | 
| 
       60 
60 
     | 
    
         
             
                    @payload.map {|v| v==FALSE}
         
     | 
| 
       61 
61 
     | 
    
         
             
                  end
         
     | 
| 
      
 62 
     | 
    
         
            +
                  
         
     | 
| 
      
 63 
     | 
    
         
            +
                  def to_ruby
         
     | 
| 
      
 64 
     | 
    
         
            +
                    if @payload.nil? or @payload.size==0
         
     | 
| 
      
 65 
     | 
    
         
            +
                      nil
         
     | 
| 
      
 66 
     | 
    
         
            +
                    elsif @payload.size==1
         
     | 
| 
      
 67 
     | 
    
         
            +
                      @payload[0]==1 ? true : false
         
     | 
| 
      
 68 
     | 
    
         
            +
                    else
         
     | 
| 
      
 69 
     | 
    
         
            +
                      @payload.map {|v| na?(v) ? nil : (v==1 ? true : false)}
         
     | 
| 
      
 70 
     | 
    
         
            +
                    end
         
     | 
| 
      
 71 
     | 
    
         
            +
                  end
         
     | 
| 
      
 72 
     | 
    
         
            +
                  
         
     | 
| 
       62 
73 
     | 
    
         
             
                end
         
     | 
| 
       63 
74 
     | 
    
         
             
              end
         
     | 
| 
       64 
75 
     | 
    
         
             
            end
         
     | 
    
        data/lib/rserve/rexp/string.rb
    CHANGED
    
    
    
        data/lib/rserve/rlist.rb
    CHANGED
    
    | 
         @@ -37,7 +37,9 @@ module Rserve 
     | 
|
| 
       37 
37 
     | 
    
         
             
                #p "Comparing #{self.inspect} with #{o.inspect} gives #{o.is_a? Rlist and self.data==o.data and self.names==o.names}"
         
     | 
| 
       38 
38 
     | 
    
         
             
                o.is_a? Rlist and self.data==o.data and self.names==o.names
         
     | 
| 
       39 
39 
     | 
    
         
             
              end
         
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
      
 40 
     | 
    
         
            +
              def to_s
         
     | 
| 
      
 41 
     | 
    
         
            +
                super+"[#{size}]"
         
     | 
| 
      
 42 
     | 
    
         
            +
              end
         
     | 
| 
       41 
43 
     | 
    
         | 
| 
       42 
44 
     | 
    
         
             
              # Returns an Array with module WithNames included
         
     | 
| 
       43 
45 
     | 
    
         
             
              # * Unnamed list: returns an Array
         
     | 
| 
         @@ -0,0 +1,20 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require File.dirname(__FILE__)+"/spec_helper.rb"
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            describe Rserve::REXP::GenericVector do
         
     | 
| 
      
 4 
     | 
    
         
            +
              describe "initialization" do
         
     | 
| 
      
 5 
     | 
    
         
            +
                it "should accept Rlist as payload and create an attrib called 'names'" do
         
     | 
| 
      
 6 
     | 
    
         
            +
                  payload=Rserve::Rlist.new([1,2,3],%w{a b c})
         
     | 
| 
      
 7 
     | 
    
         
            +
                  a=Rserve::REXP::GenericVector.new(payload)
         
     | 
| 
      
 8 
     | 
    
         
            +
                  a.payload.should==payload
         
     | 
| 
      
 9 
     | 
    
         
            +
                  a.attr.as_list['names'].to_ruby.should==%w{a b c}
         
     | 
| 
      
 10 
     | 
    
         
            +
                end
         
     | 
| 
      
 11 
     | 
    
         
            +
                it "should accept Rlist and attribs as payload" do
         
     | 
| 
      
 12 
     | 
    
         
            +
                  payload=Rserve::Rlist.new([1,2,3],%w{a b c})
         
     | 
| 
      
 13 
     | 
    
         
            +
                  attribs=Rserve::REXP::List.new(Rserve::Rlist.new([Rserve::REXP::String.new(%w{a b c}), Rserve::REXP::String.new('data.frame')],%w{names class}))
         
     | 
| 
      
 14 
     | 
    
         
            +
                  a=Rserve::REXP::GenericVector.new(payload,attribs)
         
     | 
| 
      
 15 
     | 
    
         
            +
                  a.payload.should==payload
         
     | 
| 
      
 16 
     | 
    
         
            +
                  a.attr.should==attribs
         
     | 
| 
      
 17 
     | 
    
         
            +
                end
         
     | 
| 
      
 18 
     | 
    
         
            +
                
         
     | 
| 
      
 19 
     | 
    
         
            +
              end
         
     | 
| 
      
 20 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,44 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require File.dirname(__FILE__)+"/spec_helper.rb"
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            describe "Rserve::REXP#to_ruby" do
         
     | 
| 
      
 4 
     | 
    
         
            +
              describe "method to_ruby" do
         
     | 
| 
      
 5 
     | 
    
         
            +
                before do
         
     | 
| 
      
 6 
     | 
    
         
            +
                  @r=Rserve::Connection.new
         
     | 
| 
      
 7 
     | 
    
         
            +
                end
         
     | 
| 
      
 8 
     | 
    
         
            +
                it "should return a Fixnum with vector with one integer element" do
         
     | 
| 
      
 9 
     | 
    
         
            +
                  @r.eval("1").to_ruby.should==1
         
     | 
| 
      
 10 
     | 
    
         
            +
                end
         
     | 
| 
      
 11 
     | 
    
         
            +
                it "should return an array of Fixnum and nils with vector with two or more elements" do
         
     | 
| 
      
 12 
     | 
    
         
            +
                  @r.eval("c(1,2,3,NA)").to_ruby.should==[1,2,3,nil]
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
      
 14 
     | 
    
         
            +
                it "should return a rational with vector with one element" do
         
     | 
| 
      
 15 
     | 
    
         
            +
                  @r.eval("c(0.5)").to_ruby.should==1.quo(2)
         
     | 
| 
      
 16 
     | 
    
         
            +
                end
         
     | 
| 
      
 17 
     | 
    
         
            +
                it "should return an array of rationals with vector with more than one elements" do
         
     | 
| 
      
 18 
     | 
    
         
            +
                  @r.eval("c(0.5,0.5,NA)").to_ruby.should==[1.quo(2), 1.quo(2),nil]
         
     | 
| 
      
 19 
     | 
    
         
            +
                end
         
     | 
| 
      
 20 
     | 
    
         
            +
                it "should return a Ruby Matrix with R matrix" do
         
     | 
| 
      
 21 
     | 
    
         
            +
                  @r.eval("matrix(c(1,2,3,4),2,2)").to_ruby.should==Matrix[[1,3],[2,4]]
         
     | 
| 
      
 22 
     | 
    
         
            +
                end
         
     | 
| 
      
 23 
     | 
    
         
            +
                it "should return a nested array of Ruby Matrixes with vector with more than tree dimensions" 
         
     | 
| 
      
 24 
     | 
    
         
            +
                it "should return a boolean with a logical with one element" do
         
     | 
| 
      
 25 
     | 
    
         
            +
                  @r.eval("TRUE").to_ruby.should be_true
         
     | 
| 
      
 26 
     | 
    
         
            +
                end
         
     | 
| 
      
 27 
     | 
    
         
            +
                
         
     | 
| 
      
 28 
     | 
    
         
            +
                it "should return an array of booleans with a logical with two or more elements" do
         
     | 
| 
      
 29 
     | 
    
         
            +
                  @r.eval("c(TRUE,FALSE,NA)").to_ruby.should==[true,false,nil]
         
     | 
| 
      
 30 
     | 
    
         
            +
                end
         
     | 
| 
      
 31 
     | 
    
         
            +
                
         
     | 
| 
      
 32 
     | 
    
         
            +
                it "should return a string with a vector with one string" do
         
     | 
| 
      
 33 
     | 
    
         
            +
                  @r.eval("'a'").to_ruby.should=='a'
         
     | 
| 
      
 34 
     | 
    
         
            +
                end
         
     | 
| 
      
 35 
     | 
    
         
            +
                it "should return an array of strings with a vector with two or more strings" do
         
     | 
| 
      
 36 
     | 
    
         
            +
                  @r.eval("c('a','b',NA)").to_ruby.should==['a','b',nil]
         
     | 
| 
      
 37 
     | 
    
         
            +
                end
         
     | 
| 
      
 38 
     | 
    
         
            +
                it "should return an array extended with Rserve::WithNames for a list" do
         
     | 
| 
      
 39 
     | 
    
         
            +
                  expected=[1,2,3].extend Rserve::WithNames
         
     | 
| 
      
 40 
     | 
    
         
            +
                  expected.names=%w{a b c}
         
     | 
| 
      
 41 
     | 
    
         
            +
                  @r.eval('list(a=1,b=2,c=3)').to_ruby.should==expected
         
     | 
| 
      
 42 
     | 
    
         
            +
                end
         
     | 
| 
      
 43 
     | 
    
         
            +
              end
         
     | 
| 
      
 44 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -3,9 +3,11 @@ 
     | 
|
| 
       3 
3 
     | 
    
         
             
            require File.dirname(__FILE__)+"/spec_helper.rb"
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
            describe Rserve::Protocol::REXPFactory do
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
       6 
7 
     | 
    
         
             
              before do
         
     | 
| 
       7 
8 
     | 
    
         
             
                @r=Rserve::Connection.new
         
     | 
| 
       8 
9 
     | 
    
         
             
              end
         
     | 
| 
      
 10 
     | 
    
         
            +
              
         
     | 
| 
       9 
11 
     | 
    
         
             
              it "should process null" do
         
     | 
| 
       10 
12 
     | 
    
         
             
                la=@r.eval("NULL")
         
     | 
| 
       11 
13 
     | 
    
         
             
                la.should be_instance_of(Rserve::REXP::Null)
         
     | 
| 
         @@ -103,6 +105,15 @@ describe Rserve::Protocol::REXPFactory do 
     | 
|
| 
       103 
105 
     | 
    
         
             
                la=@r.eval("list(2,NA)")
         
     | 
| 
       104 
106 
     | 
    
         
             
                la.should be_true
         
     | 
| 
       105 
107 
     | 
    
         
             
              end
         
     | 
| 
      
 108 
     | 
    
         
            +
             
     | 
| 
      
 109 
     | 
    
         
            +
              it "should process data.frame" do
         
     | 
| 
      
 110 
     | 
    
         
            +
                la=@r.eval("data.frame(a=1:10,b=1:10)")
         
     | 
| 
      
 111 
     | 
    
         
            +
                la.should be_true
         
     | 
| 
      
 112 
     | 
    
         
            +
                la.attr.as_list['names'].to_ruby.should==%w{a b}
         
     | 
| 
      
 113 
     | 
    
         
            +
                la.attr.as_list['class'].to_ruby.should=="data.frame"
         
     | 
| 
      
 114 
     | 
    
         
            +
                #la.attr.as_list['row.names'].to_ruby.should==[1,2,3,4,5,6,7,8,9,10]
         
     | 
| 
      
 115 
     | 
    
         
            +
              end
         
     | 
| 
      
 116 
     | 
    
         
            +
             
     | 
| 
       106 
117 
     | 
    
         
             
              it "should retrieve correct lenght for string" do
         
     | 
| 
       107 
118 
     | 
    
         
             
                Rserve::Protocol::REXPFactory.new(Rserve::REXP::String.new("a")).get_binary_length.should==8
         
     | 
| 
       108 
119 
     | 
    
         
             
                Rserve::Protocol::REXPFactory.new(Rserve::REXP::String.new(["a","b"])).get_binary_length.should==8
         
     | 
| 
         @@ -133,7 +144,6 @@ describe Rserve::Protocol::REXPFactory do 
     | 
|
| 
       133 
144 
     | 
    
         
             
              end
         
     | 
| 
       134 
145 
     | 
    
         | 
| 
       135 
146 
     | 
    
         
             
              it "should retrieve correct binary representation for List" do
         
     | 
| 
       136 
     | 
    
         
            -
                
         
     | 
| 
       137 
147 
     | 
    
         
             
                rexp=Rserve::REXP::List.new(Rserve::Rlist.new([Rserve::REXP::String.new("a")], ["names"]));
         
     | 
| 
       138 
148 
     | 
    
         
             
                buf=Array.new(Rserve::Protocol::REXPFactory.new(rexp).get_binary_length)
         
     | 
| 
       139 
149 
     | 
    
         | 
    
        metadata
    CHANGED
    
    | 
         @@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version 
     | 
|
| 
       5 
5 
     | 
    
         
             
              segments: 
         
     | 
| 
       6 
6 
     | 
    
         
             
              - 0
         
     | 
| 
       7 
7 
     | 
    
         
             
              - 1
         
     | 
| 
       8 
     | 
    
         
            -
              -  
     | 
| 
       9 
     | 
    
         
            -
              version: 0.1. 
     | 
| 
      
 8 
     | 
    
         
            +
              - 8
         
     | 
| 
      
 9 
     | 
    
         
            +
              version: 0.1.8
         
     | 
| 
       10 
10 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       11 
11 
     | 
    
         
             
            authors: 
         
     | 
| 
       12 
12 
     | 
    
         
             
            - Claudio Bustos
         
     | 
| 
         @@ -35,7 +35,7 @@ cert_chain: 
     | 
|
| 
       35 
35 
     | 
    
         
             
              rpP0jjs0
         
     | 
| 
       36 
36 
     | 
    
         
             
              -----END CERTIFICATE-----
         
     | 
| 
       37 
37 
     | 
    
         | 
| 
       38 
     | 
    
         
            -
            date: 2010- 
     | 
| 
      
 38 
     | 
    
         
            +
            date: 2010-06-01 00:00:00 -04:00
         
     | 
| 
       39 
39 
     | 
    
         
             
            default_executable: 
         
     | 
| 
       40 
40 
     | 
    
         
             
            dependencies: 
         
     | 
| 
       41 
41 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
         @@ -82,8 +82,6 @@ extra_rdoc_files: 
     | 
|
| 
       82 
82 
     | 
    
         
             
            - Manifest.txt
         
     | 
| 
       83 
83 
     | 
    
         
             
            - README.txt
         
     | 
| 
       84 
84 
     | 
    
         
             
            files: 
         
     | 
| 
       85 
     | 
    
         
            -
            - .autotest
         
     | 
| 
       86 
     | 
    
         
            -
            - .gitignore
         
     | 
| 
       87 
85 
     | 
    
         
             
            - Examples.txt
         
     | 
| 
       88 
86 
     | 
    
         
             
            - History.txt
         
     | 
| 
       89 
87 
     | 
    
         
             
            - Manifest.txt
         
     | 
| 
         @@ -123,11 +121,13 @@ files: 
     | 
|
| 
       123 
121 
     | 
    
         
             
            - lib/rserve/withnames.rb
         
     | 
| 
       124 
122 
     | 
    
         
             
            - spec/rserve_connection_spec.rb
         
     | 
| 
       125 
123 
     | 
    
         
             
            - spec/rserve_double_spec.rb
         
     | 
| 
      
 124 
     | 
    
         
            +
            - spec/rserve_genericvector_spec.rb
         
     | 
| 
       126 
125 
     | 
    
         
             
            - spec/rserve_integer_spec.rb
         
     | 
| 
       127 
126 
     | 
    
         
             
            - spec/rserve_logical_spec.rb
         
     | 
| 
       128 
127 
     | 
    
         
             
            - spec/rserve_packet_spec.rb
         
     | 
| 
       129 
128 
     | 
    
         
             
            - spec/rserve_protocol_spec.rb
         
     | 
| 
       130 
129 
     | 
    
         
             
            - spec/rserve_rexp_spec.rb
         
     | 
| 
      
 130 
     | 
    
         
            +
            - spec/rserve_rexp_to_ruby_spec.rb
         
     | 
| 
       131 
131 
     | 
    
         
             
            - spec/rserve_rexp_wrapper_spec.rb
         
     | 
| 
       132 
132 
     | 
    
         
             
            - spec/rserve_rexpfactory_spec.rb
         
     | 
| 
       133 
133 
     | 
    
         
             
            - spec/rserve_rfactor_spec.rb
         
     | 
| 
         @@ -173,6 +173,7 @@ test_files: 
     | 
|
| 
       173 
173 
     | 
    
         
             
            - spec/rserve_rexp_wrapper_spec.rb
         
     | 
| 
       174 
174 
     | 
    
         
             
            - spec/rserve_rfactor_spec.rb
         
     | 
| 
       175 
175 
     | 
    
         
             
            - spec/rserve_connection_spec.rb
         
     | 
| 
      
 176 
     | 
    
         
            +
            - spec/rserve_rexp_to_ruby_spec.rb
         
     | 
| 
       176 
177 
     | 
    
         
             
            - spec/rserve_double_spec.rb
         
     | 
| 
       177 
178 
     | 
    
         
             
            - spec/rserve_withnames_spec.rb
         
     | 
| 
       178 
179 
     | 
    
         
             
            - spec/rserve_packet_spec.rb
         
     | 
| 
         @@ -181,5 +182,6 @@ test_files: 
     | 
|
| 
       181 
182 
     | 
    
         
             
            - spec/rserve_integer_spec.rb
         
     | 
| 
       182 
183 
     | 
    
         
             
            - spec/rserve_spec.rb
         
     | 
| 
       183 
184 
     | 
    
         
             
            - spec/rserve_protocol_spec.rb
         
     | 
| 
      
 185 
     | 
    
         
            +
            - spec/rserve_genericvector_spec.rb
         
     | 
| 
       184 
186 
     | 
    
         
             
            - spec/rserve_logical_spec.rb
         
     | 
| 
       185 
187 
     | 
    
         
             
            - spec/rserve_talk_spec.rb
         
     | 
    
        metadata.gz.sig
    CHANGED
    
    | 
         @@ -1 +1,2 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            ySF�QW�?��~�o��{:����S�J>vh�I���>�<ogl5\�����N�"���i�D��6�����0�|e��J�R�_�c��l�Z�皔�n�R����z��0>0�??��Q�M��$K��E��۰����ul��*%d��v<՜��4al�
         
     | 
| 
      
 2 
     | 
    
         
            +
            N`�t��&��
         
     | 
    
        data/.autotest
    DELETED
    
    | 
         @@ -1,23 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # -*- ruby -*-
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            require 'autotest/restart'
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
            # Autotest.add_hook :initialize do |at|
         
     | 
| 
       6 
     | 
    
         
            -
            #   at.extra_files << "../some/external/dependency.rb"
         
     | 
| 
       7 
     | 
    
         
            -
            #
         
     | 
| 
       8 
     | 
    
         
            -
            #   at.libs << ":../some/external"
         
     | 
| 
       9 
     | 
    
         
            -
            #
         
     | 
| 
       10 
     | 
    
         
            -
            #   at.add_exception 'vendor'
         
     | 
| 
       11 
     | 
    
         
            -
            #
         
     | 
| 
       12 
     | 
    
         
            -
            #   at.add_mapping(/dependency.rb/) do |f, _|
         
     | 
| 
       13 
     | 
    
         
            -
            #     at.files_matching(/test_.*rb$/)
         
     | 
| 
       14 
     | 
    
         
            -
            #   end
         
     | 
| 
       15 
     | 
    
         
            -
            #
         
     | 
| 
       16 
     | 
    
         
            -
            #   %w(TestA TestB).each do |klass|
         
     | 
| 
       17 
     | 
    
         
            -
            #     at.extra_class_map[klass] = "test/test_misc.rb"
         
     | 
| 
       18 
     | 
    
         
            -
            #   end
         
     | 
| 
       19 
     | 
    
         
            -
            # end
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
            # Autotest.add_hook :run_command do |at|
         
     | 
| 
       22 
     | 
    
         
            -
            #   system "rake build"
         
     | 
| 
       23 
     | 
    
         
            -
            # end
         
     |