ruby_px 0.6.0 → 0.8.0
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 +4 -4
- data/CHANGELOG.md +8 -0
- data/lib/ruby_px/dataset/data.rb +48 -0
- data/lib/ruby_px/dataset.rb +5 -3
- data/ruby_px.gemspec +1 -1
- metadata +7 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6f5d35908531ee6fa8cf93f8ee71fb406c13d15ab65cd2f0e62a0333a3525320
|
4
|
+
data.tar.gz: 787d66c1ebb61aad54d2bb3809716bda8f89b4abab6a2e26fe0de6a19cdd507a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 79c159ae77206a80e507f5450568df35fb7343b791350e583e15dada526aed82c6c39da78cbefd3210096121176f6a9dcbf856b1a706c228b96b9b2e7ba5f052
|
7
|
+
data.tar.gz: 2f97231b09776a596f5863e1c1d66a87ee6bf6fb032e6ec91c91113f8c8a500df52c64ce728d96796f9fa23c95ecc9285665db8091704a2cea47ec8121272e29
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,13 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
|
+
## 0.8.0 (2021-03-04)
|
4
|
+
|
5
|
+
- Fix wrong DATA key error [#10](https://github.com/PopulateTools/ruby_px/pull/10)
|
6
|
+
|
7
|
+
## 0.7.0 (2021-03-04)
|
8
|
+
|
9
|
+
- Performance in large datasets [#9](https://github.com/PopulateTools/ruby_px/pull/9)
|
10
|
+
|
3
11
|
## 0.6.0 (2020-04-28)
|
4
12
|
|
5
13
|
- Nice badge with the current version
|
@@ -0,0 +1,48 @@
|
|
1
|
+
module RubyPx
|
2
|
+
class Dataset
|
3
|
+
class Data
|
4
|
+
|
5
|
+
CHUNK_SIZE = 5_000
|
6
|
+
attr_accessor :current_chunk_index
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
@current_chunk_index = 0
|
10
|
+
end
|
11
|
+
|
12
|
+
def at index
|
13
|
+
chunk_index = index/CHUNK_SIZE
|
14
|
+
index_inside_chunk = index%CHUNK_SIZE
|
15
|
+
|
16
|
+
get_chunk(chunk_index)[index_inside_chunk]
|
17
|
+
end
|
18
|
+
|
19
|
+
def concat array
|
20
|
+
current_chunk.concat(array)
|
21
|
+
if current_chunk.size > CHUNK_SIZE
|
22
|
+
excess = current_chunk.pop(current_chunk.size-CHUNK_SIZE)
|
23
|
+
self.current_chunk_index += 1
|
24
|
+
concat(excess)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def indexes_count
|
29
|
+
self.current_chunk_index+1
|
30
|
+
end
|
31
|
+
|
32
|
+
private
|
33
|
+
|
34
|
+
|
35
|
+
def current_chunk
|
36
|
+
current = instance_variable_get("@chunk_#{self.current_chunk_index}")
|
37
|
+
return current if current
|
38
|
+
|
39
|
+
instance_variable_set("@chunk_#{self.current_chunk_index}", [])
|
40
|
+
end
|
41
|
+
|
42
|
+
def get_chunk chunk_index
|
43
|
+
instance_variable_get("@chunk_#{chunk_index}")
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
data/lib/ruby_px/dataset.rb
CHANGED
@@ -4,6 +4,8 @@ require 'open-uri'
|
|
4
4
|
|
5
5
|
module RubyPx
|
6
6
|
class Dataset
|
7
|
+
require 'ruby_px/dataset/data'
|
8
|
+
|
7
9
|
attr_reader :headings, :stubs
|
8
10
|
|
9
11
|
METADATA_RECORDS = %w[TITLE UNITS SOURCE CONTACT LAST-UPDATED CREATION-DATE].freeze
|
@@ -15,7 +17,7 @@ module RubyPx
|
|
15
17
|
@headings = []
|
16
18
|
@stubs = []
|
17
19
|
@values = {}
|
18
|
-
@data =
|
20
|
+
@data = Data.new
|
19
21
|
|
20
22
|
parse_resource(resource_uri)
|
21
23
|
end
|
@@ -82,7 +84,7 @@ module RubyPx
|
|
82
84
|
offset += (d ? p * d : p)
|
83
85
|
end
|
84
86
|
|
85
|
-
@data
|
87
|
+
@data.at(offset)
|
86
88
|
|
87
89
|
# Return an array of options
|
88
90
|
elsif options.length == dimensions.length - 1
|
@@ -160,7 +162,7 @@ module RubyPx
|
|
160
162
|
elsif key =~ /\AVALUES/ && key !~ /\[\w\w\]/
|
161
163
|
@type = :values
|
162
164
|
key.match(/\"([^"]+)\"/)[1]
|
163
|
-
elsif key =~ /\ADATA/
|
165
|
+
elsif key =~ /\ADATA\z/
|
164
166
|
@type = :data
|
165
167
|
key
|
166
168
|
end
|
data/ruby_px.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby_px
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fernando Blat
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-12-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -86,13 +86,14 @@ files:
|
|
86
86
|
- bin/setup
|
87
87
|
- lib/ruby_px.rb
|
88
88
|
- lib/ruby_px/dataset.rb
|
89
|
+
- lib/ruby_px/dataset/data.rb
|
89
90
|
- ruby_px.gemspec
|
90
91
|
homepage: https://github.com/PopulateTools/ruby_px
|
91
92
|
licenses:
|
92
93
|
- MIT
|
93
94
|
metadata:
|
94
95
|
allowed_push_host: https://rubygems.org
|
95
|
-
post_install_message:
|
96
|
+
post_install_message:
|
96
97
|
rdoc_options: []
|
97
98
|
require_paths:
|
98
99
|
- lib
|
@@ -107,8 +108,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
107
108
|
- !ruby/object:Gem::Version
|
108
109
|
version: '0'
|
109
110
|
requirements: []
|
110
|
-
rubygems_version: 3.
|
111
|
-
signing_key:
|
111
|
+
rubygems_version: 3.4.20
|
112
|
+
signing_key:
|
112
113
|
specification_version: 4
|
113
114
|
summary: Read PC-Axis files using Ruby
|
114
115
|
test_files: []
|