listpack 0.0.1.beta2 → 0.0.1.beta3

Sign up to get free protection for your applications and to get access to all the features.
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: