octave-ruby 1.0.2 → 1.0.3

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/History.txt CHANGED
@@ -1,3 +1,9 @@
1
+ == 1.0.3 / 2008-02-29
2
+
3
+ * 1 major bug fix
4
+ * Hashes and struct matrices now convert with proper dimensions
5
+
6
+
1
7
  == 1.0.2 / 2008-02-28
2
8
 
3
9
  * 1 minor enhancement
@@ -14,9 +14,9 @@ octave_value OR_Hash::to_octave()
14
14
  keys.append(std::string(RSTRING(RARRAY(names)->ptr[i])->ptr));
15
15
  }
16
16
 
17
- Octave_map struct_matrix = Octave_map(dim_vector(number_of_keys, 1), Cell(keys));
17
+ Octave_map struct_matrix = Octave_map(dim_vector(0, 1), Cell(keys));
18
18
  for (i = 0; i < number_of_keys; i++) {
19
- struct_matrix.contents(std::string(RSTRING(RARRAY(names)->ptr[i])->ptr))(i, 0) = OR_Variable(rb_hash_aref(ruby_val, rb_str_new2(RSTRING(RARRAY(names)->ptr[i])->ptr))).to_octave();
19
+ struct_matrix.contents(std::string(RSTRING(RARRAY(names)->ptr[i])->ptr)) = OR_Variable(rb_hash_aref(ruby_val, rb_str_new2(RSTRING(RARRAY(names)->ptr[i])->ptr))).to_octave();
20
20
  }
21
21
 
22
22
  return struct_matrix;
@@ -13,10 +13,15 @@ VALUE OR_StructMatrix::to_ruby()
13
13
  int i;
14
14
  VALUE cells, row, cell;
15
15
 
16
- if (number_of_columns == 1) {
16
+ if (number_of_rows == 0 && number_of_columns == 1) {
17
17
  ruby_val = rb_hash_new();
18
18
  for (i = 0; i < number_of_keys; i++) {
19
- rb_hash_aset(ruby_val, rb_str_new2(keys[i].c_str()), OR_Variable(struct_matrix.contents(keys[i])(i)).to_ruby());
19
+ rb_hash_aset(ruby_val, rb_str_new2(keys[i].c_str()), OR_Variable(struct_matrix.contents(keys[i])).to_ruby());
20
+ }
21
+ } else if (number_of_rows == 1 && number_of_columns == 1) {
22
+ ruby_val = rb_hash_new();
23
+ for (i = 0; i < number_of_keys; i++) {
24
+ rb_hash_aset(ruby_val, rb_str_new2(keys[i].c_str()), OR_Variable(struct_matrix.contents(keys[i])(0)).to_ruby());
20
25
  }
21
26
  } else {
22
27
  int number_of_arguments_to_struct_matrix = number_of_keys + 2;
@@ -4,7 +4,7 @@ module Octave
4
4
 
5
5
  MAJOR = 1
6
6
  MINOR = 0
7
- TINY = 2
7
+ TINY = 3
8
8
 
9
9
  STRING = [ MAJOR, MINOR, TINY ].join( "." )
10
10
  #:beta-tag:
@@ -4,6 +4,7 @@ require 'octave'
4
4
  require 'octave/driver/native/driver'
5
5
  require 'rubygems'
6
6
  require 'mocha'
7
+ require 'yaml'
7
8
 
8
9
  class ConversionsTest < Test::Unit::TestCase
9
10
  def setup
@@ -57,7 +58,7 @@ class ConversionsTest < Test::Unit::TestCase
57
58
  assert_octave_and_ruby_equal "foo" => "bar"
58
59
  assert_octave_and_ruby_equal "foo" => [1,2,3]
59
60
  assert_octave_and_ruby_equal "foo" => { "bar" => [1,2,3, [4,5,6]] }
60
- assert_octave_and_ruby_equal "foo" => { "bar" => [1,2,3, [4,5,6]], "baz" => "buz" }
61
+ assert_octave_and_ruby_equal "foo" => { "bar" => [1,2,3, [4,5,6]], "baz" => "buz", "bob" => [7,8,9] }
61
62
  end
62
63
 
63
64
  def test_should_convert_octave_matrix
@@ -153,4 +154,28 @@ class ConversionsTest < Test::Unit::TestCase
153
154
 
154
155
  assert_equal %w(foo bar baz), to_octave_to_ruby(cell_matrix)
155
156
  end
156
- end
157
+
158
+ def test_hmm
159
+ struct_matrix = Octave::StructMatrix.new(17, 2, "name", "age", "married", "cats", "car")
160
+ 17.times do |m|
161
+ 2.times do |n|
162
+ struct_matrix[m, n]["name"] = "Bob #{m}.#{n}"
163
+ struct_matrix[m, n]["age"] = (rand * 100).to_i
164
+ struct_matrix[m, n]["married"] = (rand > 0.5)
165
+ struct_matrix[m, n]["cats"] = { "name" => "Kitty #{m}.#{n}" }
166
+ struct_matrix[m, n]["car"] = nil
167
+ end
168
+ end
169
+
170
+ data = {
171
+ "foo" => struct_matrix,
172
+ "bar" => [1,2,3,4],
173
+ "baz" => struct_matrix
174
+ }
175
+
176
+ @driver.put_variable "data", data
177
+ @driver.feval "save", "-V7", "/tmp/hmm.mat", "data"
178
+ # assert_octave_and_ruby_equal data
179
+
180
+ end
181
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: octave-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan Younger
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-02-28 00:00:00 -07:00
12
+ date: 2008-02-29 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency