From 2b8308949fa421429bbe9afd04208447d756b571 Mon Sep 17 00:00:00 2001 From: Praveen Kumar Date: Fri, 22 Jan 2021 21:50:39 +0530 Subject: [PATCH 1/3] add serialization --- lib/numruby/nmatrix.rb | 40 ++++++++++++++++++++++++++++++++++++++++ test/nmatrix_test.rb | 12 ++++++++++++ 2 files changed, 52 insertions(+) diff --git a/lib/numruby/nmatrix.rb b/lib/numruby/nmatrix.rb index 8172f61..9575bba 100644 --- a/lib/numruby/nmatrix.rb +++ b/lib/numruby/nmatrix.rb @@ -89,6 +89,46 @@ def to_a return self.elements end + def _dump data + [ + self.dim, + self.dtype, + self.stype, + self.shape, + self.elements, + ].join(":") + end + + def self._load serial + data = serial.split(":") + dim = data[0].to_i + dtype = data[1].to_sym + stype = data[2].to_sym + shape = data[3..(3+dim-1)] + elements = data[(3+dim)..data.length-1] + parsed_elements = [] + + if dtype == :nm_bool + elements.each do |e| + parsed_elements.push(e == "true" ? true : false) + end + elsif dtype == :nm_float64 + elements.each do |e| + parsed_elements.push(e.to_f) + end + else + # Convert to Integer + elements.each do |e| + parsed_elements.push(e.to_i) + end + end + parsed_shape = [] + shape.each do |e| + parsed_shape.push(e.to_i) + end + self.new(parsed_shape, parsed_elements, dtype) + end + def inspect #:nodoc: original_inspect = super() original_inspect = original_inspect[0...original_inspect.size-1] diff --git a/test/nmatrix_test.rb b/test/nmatrix_test.rb index 1281d3f..14ea6f0 100644 --- a/test/nmatrix_test.rb +++ b/test/nmatrix_test.rb @@ -60,4 +60,16 @@ def test_slicing assert_equal @m_int[0, 0..1, 0..1], @s_int end + def test_serializing + serialized_data_float = Marshal.dump(@m) + deserialized_data_float = Marshal.load(serialized_data_float) + serialized_data_int = Marshal.dump(@m_int) + deserialized_data_int = Marshal.load(serialized_data_int) + serialized_data_bool = Marshal.dump(@b) + deserialized_data_bool = Marshal.load(serialized_data_bool) + assert_equal @m, deserialized_data_float + assert_equal @m_int, deserialized_data_int + assert_equal @b, deserialized_data_bool + end + end From 633e22f5de6907b3f2aadfa8d65b765ad0bf6d57 Mon Sep 17 00:00:00 2001 From: Praveen Kumar Date: Sun, 24 Jan 2021 11:43:44 +0530 Subject: [PATCH 2/3] Removed Gemfile.lock from .gitignore --- .gitignore | 1 - Gemfile.lock | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 Gemfile.lock diff --git a/.gitignore b/.gitignore index 881286d..241ee50 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,5 @@ # compiled output /tmp -Gemfile.lock /.yardoc .rake_tasks~ *.so diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..3ff750f --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,56 @@ +PATH + remote: . + specs: + numruby (0.0.1) + +GEM + remote: https://rubygems.org/ + specs: + ast (2.4.1) + coderay (1.1.3) + json (2.5.1) + method_source (1.0.0) + minitest (5.14.3) + parallel (1.20.1) + parser (3.0.0.0) + ast (~> 2.4.1) + pry (0.13.1) + coderay (~> 1.1) + method_source (~> 1.0) + rainbow (3.0.0) + rake (13.0.3) + rake-compiler (0.9.9) + rake + rdoc (4.3.0) + regexp_parser (2.0.3) + rexml (3.2.4) + rubocop (1.8.1) + parallel (~> 1.10) + parser (>= 3.0.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml + rubocop-ast (>= 1.2.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 1.4.0, < 3.0) + rubocop-ast (1.4.0) + parser (>= 2.7.1.5) + ruby-progressbar (1.11.0) + unicode-display_width (2.0.0) + +PLATFORMS + x86_64-linux + +DEPENDENCIES + bundler (>= 1.6) + json (>= 1.5.5) + minitest (~> 5.0) + numruby! + pry (~> 0.10) + rake (>= 10.3) + rake-compiler (~> 0.8) + rdoc (~> 4.0, >= 4.0.1) + rubocop (>= 0.49.0) + +BUNDLED WITH + 2.2.6 From c46f365eea2c1951ed35b03d66c4c637a1d5bacc Mon Sep 17 00:00:00 2001 From: Praveen Kumar Date: Sun, 24 Jan 2021 12:12:35 +0530 Subject: [PATCH 3/3] removed gemfile.lock --- .gitignore | 1 + Gemfile.lock | 56 ---------------------------------------------------- 2 files changed, 1 insertion(+), 56 deletions(-) delete mode 100644 Gemfile.lock diff --git a/.gitignore b/.gitignore index 241ee50..881286d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ # compiled output /tmp +Gemfile.lock /.yardoc .rake_tasks~ *.so diff --git a/Gemfile.lock b/Gemfile.lock deleted file mode 100644 index 3ff750f..0000000 --- a/Gemfile.lock +++ /dev/null @@ -1,56 +0,0 @@ -PATH - remote: . - specs: - numruby (0.0.1) - -GEM - remote: https://rubygems.org/ - specs: - ast (2.4.1) - coderay (1.1.3) - json (2.5.1) - method_source (1.0.0) - minitest (5.14.3) - parallel (1.20.1) - parser (3.0.0.0) - ast (~> 2.4.1) - pry (0.13.1) - coderay (~> 1.1) - method_source (~> 1.0) - rainbow (3.0.0) - rake (13.0.3) - rake-compiler (0.9.9) - rake - rdoc (4.3.0) - regexp_parser (2.0.3) - rexml (3.2.4) - rubocop (1.8.1) - parallel (~> 1.10) - parser (>= 3.0.0.0) - rainbow (>= 2.2.2, < 4.0) - regexp_parser (>= 1.8, < 3.0) - rexml - rubocop-ast (>= 1.2.0, < 2.0) - ruby-progressbar (~> 1.7) - unicode-display_width (>= 1.4.0, < 3.0) - rubocop-ast (1.4.0) - parser (>= 2.7.1.5) - ruby-progressbar (1.11.0) - unicode-display_width (2.0.0) - -PLATFORMS - x86_64-linux - -DEPENDENCIES - bundler (>= 1.6) - json (>= 1.5.5) - minitest (~> 5.0) - numruby! - pry (~> 0.10) - rake (>= 10.3) - rake-compiler (~> 0.8) - rdoc (~> 4.0, >= 4.0.1) - rubocop (>= 0.49.0) - -BUNDLED WITH - 2.2.6