tracklib 0.1.5 → 0.1.6

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 68676def9094079585d07e179b44341858d12436
4
- data.tar.gz: 877b9c338a1a866823d6349af0a76e08c7a93fde
3
+ metadata.gz: 51bc0c50cee5c08e2a0ab5a48e5a9d4cd00f4db1
4
+ data.tar.gz: 496ec85199832aa9cd953d0ef621a5508d03bef0
5
5
  SHA512:
6
- metadata.gz: f42ff219e7fe4684925c87564e1537d75b079a651a5efb4c3bc1db4f7194853abcd58e4177d16324799eff1470451cc3b5b9082712199bd7ad6a22da05d8ddf5
7
- data.tar.gz: 0a2e7d5eb20ab58ffdb7939bf711186100b492d478142e496d98ade5408f7b5344adad55c34862ef89119a529eb0cd4c717f9c4a8e842213d7baa623d054cc81
6
+ metadata.gz: 9ebff64b608756ac55476fc9661249419e746539753e5bcde585f546b08e9a665bb492118b1b2d882670769456b23d80b719952f67b3efcf591b7c49950bcf81
7
+ data.tar.gz: e0cdf446ca0fc4f386f186bb4655509a58a4d43e5e41ca9e43f2c8183afdd1d962eeb457bbb5f88dcfa9dcab7165bed896b85e67ed22fb0de7489890bc9da173
data/Rakefile CHANGED
@@ -1,29 +1,16 @@
1
+ # coding: utf-8
1
2
  require "rbconfig"
2
3
  require "bundler/gem_tasks"
3
4
  require "rake/testtask"
4
5
  require "thermite/tasks"
6
+ require 'rspec/core/rake_task'
5
7
 
6
8
  thermite = Thermite::Tasks.new
9
+ RSpec::Core::RakeTask.new(:spec)
7
10
 
8
- desc 'Build Rust extension'
9
- task :build_lib do
10
- case RbConfig::CONFIG['host_os']
11
- when /darwin|mac os/
12
- sh 'NO_LINK_RUTIE=y cargo rustc --release -- -C link-args=-Wl,-undefined,dynamic_lookup'
13
- else
14
- sh 'NO_LINK_RUTIE=y cargo build --release'
15
- end
16
- end
17
-
18
- desc 'bundle install'
19
- task :bundle_install do
20
- sh 'bundle install'
21
- end
11
+ desc 'Run Rust & Ruby testsuites'
12
+ task test: ['thermite:build', 'thermite:test', 'spec'] do
22
13
 
23
- Rake::TestTask.new(test: [:bundle_install, :build_lib]) do |t|
24
- t.libs << "test"
25
- t.libs << "lib"
26
- t.test_files = FileList["test/**/*_test.rb"]
27
14
  end
28
15
 
29
16
  task :default => :test
@@ -1,3 +1,3 @@
1
1
  module Tracklib
2
- VERSION = "0.1.5"
2
+ VERSION = "0.1.6"
3
3
  end
data/src/lib.rs CHANGED
@@ -85,6 +85,30 @@ fn convert_config(config: Hash) -> HashMap<String, String> {
85
85
  hm
86
86
  }
87
87
 
88
+ fn is_empty_string(v: &AnyObject) -> bool {
89
+ match v.try_convert_to::<RString>() {
90
+ Ok(s) => s.to_str().is_empty(),
91
+ Err(_) => false
92
+ }
93
+ }
94
+
95
+ fn is_empty_array(v: &AnyObject) -> bool {
96
+ match v.try_convert_to::<Array>() {
97
+ Ok(a) => a.length() == 0,
98
+ Err(_) => false
99
+ }
100
+ }
101
+
102
+ fn is_number_too_large(v: &AnyObject) -> bool {
103
+ match v.try_convert_to::<Integer>() {
104
+ Ok(i) => i.to_i64().abs() > 2i64.pow(48),
105
+ Err(_) => match v.try_convert_to::<Float>() {
106
+ Ok(f) => f.to_f64().abs() > 2f64.powi(48),
107
+ Err(_) => false
108
+ }
109
+ }
110
+ }
111
+
88
112
  fn add_points(points: Array, mut callback: impl FnMut(usize, &str, AnyObject)) {
89
113
  for (i, maybe_point) in points.into_iter().enumerate() {
90
114
  let point = maybe_point
@@ -98,43 +122,13 @@ fn add_points(points: Array, mut callback: impl FnMut(usize, &str, AnyObject)) {
98
122
  .map_err(|e| VM::raise_ex(e))
99
123
  .unwrap();
100
124
  let name = field_name_obj.to_str();
101
- let mut store_field = true;
102
-
103
- if v.is_nil() {
104
- store_field = false;
105
- }
106
-
107
- if name.is_empty() {
108
- store_field = false;
109
- }
110
-
111
- match v.try_convert_to::<RString>() {
112
- Ok(s) => if s.to_str().is_empty() {
113
- store_field = false;
114
- }
115
- Err(_) => {}
116
- }
117
-
118
- match v.try_convert_to::<Array>() {
119
- Ok(a) => if a.length() == 0 {
120
- store_field = false;
121
- }
122
- Err(_) => {}
123
- }
124
-
125
- match v.try_convert_to::<Integer>() {
126
- Ok(i) => if i.to_i64().abs() > 2i64.pow(48) {
127
- store_field = false;
128
- }
129
- Err(_) => match v.try_convert_to::<Float>() {
130
- Ok(f) => if f.to_f64().abs() > 2f64.powi(48) {
131
- store_field = false;
132
- }
133
- Err(_) => {}
134
- }
135
- }
136
125
 
137
- if store_field {
126
+ if !v.is_nil()
127
+ && !name.is_empty()
128
+ && !is_empty_string(&v)
129
+ && !is_empty_array(&v)
130
+ && !is_number_too_large(&v)
131
+ {
138
132
  callback(i, name, v);
139
133
  }
140
134
  });
data/tracklib.gemspec CHANGED
@@ -25,7 +25,7 @@ Gem::Specification.new do |spec|
25
25
  spec.require_paths = ["lib"]
26
26
  spec.extensions = ["ext/Rakefile"]
27
27
 
28
- spec.add_development_dependency "minitest", "~> 5.11"
28
+ spec.add_development_dependency "rspec"
29
29
 
30
30
  spec.add_runtime_dependency "rake", "~> 12.3"
31
31
  spec.add_runtime_dependency 'thermite', '~> 0.13'
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tracklib
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dan Larkin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-08-05 00:00:00.000000000 Z
11
+ date: 2019-08-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: minitest
14
+ name: rspec
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '5.11'
19
+ version: '0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '5.11'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement