listpack 0.0.1.beta2 → 0.0.1.beta3

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
  SHA256:
3
- metadata.gz: f3f37d4f7b3a41e29762afd149f1af66076ff71095edb9ee2795ce5b0ac2f4ec
4
- data.tar.gz: d5bd061a06acd93b3cd2e847729826378674c86cac1e8ed16ec6129da8feac04
3
+ metadata.gz: bf0000e6a9319e810ad90290e80bb6375bcaf8c91407f01d0caeb05bdca53ffd
4
+ data.tar.gz: d6e9fc6e06ac5ebbca6242e60bd5d1cca12a57b2bbcc6620d369179c1c32253f
5
5
  SHA512:
6
- metadata.gz: b89690410edbe2277c9f73dea25e4418ecc8ff3e038ae9e3431ca966dd30c04155438ca6048720ddf547eb04da8cd503b0469d08e9a0eb56fc5f9099da55c792
7
- data.tar.gz: 68f53a4159eae21d2df611323e766b400abafba3e4f88f498a169d2dde8621dea61c725a26a7b9d44d00b1dc08c91ba3e4e85ff00f37ad7b13d7409498a8e88b
6
+ metadata.gz: 8c823632a71f7e2a334ac0cd2b8d437243103c31e034b3e3393c14f526d108fc7ada25fcc93bb9d6dc5447d7dd78073e204659e203839c81e095146fd1529361
7
+ data.tar.gz: 640eae14403530aaaf6ecf5a0de107edd839576a80be8f8aa5f2ae3f47faf431479cb4039776d669fc26ee949eeae22ab3f9673b390941ecef52c2ade68c4fcb
@@ -1,8 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- listpack (0.0.1.beta)
5
- rake-compiler
4
+ listpack (0.0.1.beta3)
6
5
 
7
6
  GEM
8
7
  remote: https://rubygems.org/
@@ -37,8 +36,11 @@ PLATFORMS
37
36
  ruby
38
37
 
39
38
  DEPENDENCIES
39
+ bundler
40
40
  byebug
41
41
  listpack!
42
+ rake
43
+ rake-compiler
42
44
  rspec
43
45
  simplecov
44
46
 
data/Rakefile CHANGED
@@ -7,9 +7,12 @@ RSpec::Core::RakeTask.new(:spec)
7
7
  task :default => :spec
8
8
 
9
9
  task :spec => :compile
10
+ task :build => :compile
10
11
 
11
12
  gem_spec = Gem::Specification.load('listpack.gemspec')
12
13
  Rake::ExtensionTask.new("listpack_c", gem_spec) do |ext|
13
14
  ext.lib_dir = 'lib/listpack'
14
15
  ext.ext_dir = 'ext/listpack'
15
16
  end
17
+
18
+ task :default => [:clobber, :compile, :spec]
@@ -2,4 +2,4 @@
2
2
 
3
3
  require 'mkmf'
4
4
 
5
- create_makefile('listpack_c')
5
+ create_makefile('listpack/listpack_c')
@@ -193,10 +193,51 @@ static VALUE allocate(VALUE klass)
193
193
  return Data_Wrap_Struct(klass, NULL, deallocate, list);
194
194
  }
195
195
 
196
+ VALUE rb_class_listpack_dump(VALUE self, VALUE rb_ary)
197
+ {
198
+ Check_Type(rb_ary, T_ARRAY);
199
+ unsigned long len = (unsigned int) RARRAY_LEN(rb_ary);
200
+ unsigned char *lp = lpNew();
201
+ unsigned int i = 0;
202
+ VALUE current;
203
+
204
+ for (i = 0; i < len; i++) {
205
+ current = rb_ary_entry(rb_ary, i);
206
+ // TODO: convert integer to string if necessary
207
+ Check_Type(current, T_STRING);
208
+ lp = lpAppend(lp, (unsigned char *) RSTRING_PTR(current), RSTRING_LENINT(current));
209
+ if (lp == NULL) {
210
+ rb_raise(rb_eNoMemError, "no memory for listpack");
211
+ }
212
+ }
213
+
214
+ return rb_str_new((char *) lp, lpBytes(lp));
215
+ }
216
+
217
+ VALUE rb_class_listpack_load(VALUE self, VALUE rb_str)
218
+ {
219
+ Check_Type(rb_str, T_STRING);
220
+ char *lp = RSTRING_PTR(rb_str);
221
+ unsigned char *p = lpFirst((unsigned char *) lp);
222
+ unsigned int len = lpLength((unsigned char *) lp);
223
+ unsigned int i = 0;
224
+ VALUE r_array = rb_ary_new2(len);
225
+
226
+ while(p) {
227
+ rb_ary_store(r_array, i++, _rb_listpack_getvalue(p));
228
+ p = lpNext((unsigned char *) lp, p);
229
+ }
230
+
231
+ return r_array;
232
+ }
233
+
196
234
  void Init_listpack_c(void) {
197
235
  Listpack = rb_define_class("Listpack", rb_cObject);
198
236
  rb_define_alloc_func(Listpack, allocate);
199
237
 
238
+ rb_define_singleton_method(Listpack, "dump", rb_class_listpack_dump, 1);
239
+ rb_define_singleton_method(Listpack, "load", rb_class_listpack_load, 1);
240
+
200
241
  rb_define_method(Listpack, "append", rb_listpack_append, 1);
201
242
  rb_define_method(Listpack, "current", rb_listpack_current, 0);
202
243
  rb_define_method(Listpack, "first", rb_listpack_first, 0);
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class Listpack
4
- VERSION = '0.0.1.beta2'
4
+ VERSION = '0.0.1.beta3'
5
5
  end
@@ -10,7 +10,6 @@ Gem::Specification.new do |spec|
10
10
  spec.version = Listpack::VERSION
11
11
  spec.authors = ["Sebastian Wallin"]
12
12
  spec.email = ["sebastian.wallin@gmail.com"]
13
- spec.extensions = ["ext/listpack/extconf.rb"]
14
13
  spec.platform = Gem::Platform::RUBY
15
14
 
16
15
  spec.summary = %q{Ruby wrapper for Redis listpack data structure}
@@ -21,9 +20,13 @@ Gem::Specification.new do |spec|
21
20
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
22
21
  f.match(%r{^(test|spec|features)/})
23
22
  end
24
- spec.bindir = "exe"
23
+ spec.bindir = 'exe'
25
24
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
26
- spec.require_paths = ["lib"]
25
+ spec.require_paths = ['lib']
26
+ spec.extensions = ['ext/listpack/extconf.rb']
27
27
 
28
- spec.add_dependency "rake-compiler"
28
+ spec.add_development_dependency 'bundler'
29
+ spec.add_development_dependency 'rake'
30
+ spec.add_development_dependency 'rake-compiler'
31
+ spec.add_development_dependency 'rspec'
29
32
  end
metadata CHANGED
@@ -1,15 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: listpack
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1.beta2
4
+ version: 0.0.1.beta3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sebastian Wallin
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-05-03 00:00:00.000000000 Z
11
+ date: 2018-05-05 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
13
41
  - !ruby/object:Gem::Dependency
14
42
  name: rake-compiler
15
43
  requirement: !ruby/object:Gem::Requirement
@@ -17,7 +45,21 @@ dependencies:
17
45
  - - ">="
18
46
  - !ruby/object:Gem::Version
19
47
  version: '0'
20
- type: :runtime
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
21
63
  prerelease: false
22
64
  version_requirements: !ruby/object:Gem::Requirement
23
65
  requirements: