packed-model 0.1.0 → 0.1.1
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.
- data/VERSION +1 -1
- data/lib/packed_model/base.rb +42 -16
- data/packed-model.gemspec +66 -0
- metadata +4 -3
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.1
|
data/lib/packed_model/base.rb
CHANGED
@@ -44,7 +44,8 @@ module PackedModel
|
|
44
44
|
case options[:type]
|
45
45
|
when :string
|
46
46
|
options[:strip] = true
|
47
|
-
options[:
|
47
|
+
options[:null] = true
|
48
|
+
options[:pack_directive] = 'Z*'
|
48
49
|
when :integer, :int
|
49
50
|
options[:default] ||= 0 # pack 'N' directive requires a value for an integer
|
50
51
|
options[:bytesize] = 4
|
@@ -58,12 +59,16 @@ module PackedModel
|
|
58
59
|
options[:default] = options[:value]
|
59
60
|
options[:bytesize] = 4
|
60
61
|
options[:pack_directive] = 'N' # network byte order
|
62
|
+
options[:unpack_callback] ||= create_marker_unpack_callback(options[:index], options[:value])
|
61
63
|
when :custom
|
62
64
|
raise "missing pack_directive for #{name}" unless options[:pack_directive]
|
63
65
|
else
|
64
66
|
raise "Unknown type #{options[:type]}"
|
65
67
|
end
|
66
68
|
|
69
|
+
add_unpack_callback(options[:unpack_callback]) if options[:unpack_callback].is_a?(Proc)
|
70
|
+
add_unpack_callback(create_strip_unpack_callback(options[:index], options[:null])) if options[:strip]
|
71
|
+
|
67
72
|
class_eval do
|
68
73
|
attrs = self.fields << options
|
69
74
|
ks = self.keys << options[:name]
|
@@ -212,21 +217,20 @@ module PackedModel
|
|
212
217
|
|
213
218
|
def unpack(str)
|
214
219
|
@values = str.unpack(self.class.pack_string)
|
215
|
-
self.
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
end
|
220
|
+
self.unpack_callbacks.each { |c| c.call self } if self.unpack_callbacks
|
221
|
+
end
|
222
|
+
|
223
|
+
def self.add_unpack_callback(callback)
|
224
|
+
@unpack_callbacks ||= []
|
225
|
+
@unpack_callbacks << callback
|
226
|
+
end
|
227
|
+
|
228
|
+
def self.unpack_callbacks
|
229
|
+
@unpack_callbacks
|
230
|
+
end
|
231
|
+
|
232
|
+
def unpack_callbacks
|
233
|
+
self.class.unpack_callbacks
|
230
234
|
end
|
231
235
|
|
232
236
|
private
|
@@ -242,6 +246,28 @@ module PackedModel
|
|
242
246
|
def self.pack_string
|
243
247
|
""
|
244
248
|
end
|
249
|
+
|
250
|
+
def self.create_marker_unpack_callback(index, value)
|
251
|
+
Proc.new do |m|
|
252
|
+
raise BadMarkerException.new("unpack failed, invalid marker value (#{m.values[index]}) expected #{value}") unless m.values[index] == value
|
253
|
+
end
|
254
|
+
end
|
255
|
+
|
256
|
+
def self.create_strip_unpack_callback(index, null)
|
257
|
+
if null
|
258
|
+
Proc.new do |m|
|
259
|
+
if m.values[index].empty?
|
260
|
+
m.values[index] = nil
|
261
|
+
else
|
262
|
+
m.values[index].strip!
|
263
|
+
end
|
264
|
+
end
|
265
|
+
else
|
266
|
+
Proc.new do |m|
|
267
|
+
m.values[index].strip!
|
268
|
+
end
|
269
|
+
end
|
270
|
+
end
|
245
271
|
end
|
246
272
|
end
|
247
273
|
|
@@ -0,0 +1,66 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{packed-model}
|
8
|
+
s.version = "0.1.1"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Doug Youch"]
|
12
|
+
s.date = %q{2013-05-15}
|
13
|
+
s.description = %q{Used to minimize storage space required to store list of data}
|
14
|
+
s.email = %q{doug@sessionm.com}
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"LICENSE.txt",
|
17
|
+
"README.rdoc"
|
18
|
+
]
|
19
|
+
s.files = [
|
20
|
+
".document",
|
21
|
+
"Gemfile",
|
22
|
+
"Gemfile.lock",
|
23
|
+
"LICENSE.txt",
|
24
|
+
"README.rdoc",
|
25
|
+
"Rakefile",
|
26
|
+
"VERSION",
|
27
|
+
"lib/packed_model.rb",
|
28
|
+
"lib/packed_model/base.rb",
|
29
|
+
"lib/packed_model/errors.rb",
|
30
|
+
"lib/packed_model/list.rb",
|
31
|
+
"packed-model.gemspec",
|
32
|
+
"spec/helper.rb",
|
33
|
+
"spec/packed_model/base_spec.rb",
|
34
|
+
"spec/packed_model/list_spec.rb",
|
35
|
+
"test/helper.rb",
|
36
|
+
"test/test_packed_model_base.rb"
|
37
|
+
]
|
38
|
+
s.homepage = %q{http://github.com/dyouch5@yahoo.com/packed-model}
|
39
|
+
s.licenses = ["MIT"]
|
40
|
+
s.require_paths = ["lib"]
|
41
|
+
s.rubygems_version = %q{1.3.6}
|
42
|
+
s.summary = %q{PackedModel stores model data in a binary string}
|
43
|
+
|
44
|
+
if s.respond_to? :specification_version then
|
45
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
46
|
+
s.specification_version = 3
|
47
|
+
|
48
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
49
|
+
s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
|
50
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
|
51
|
+
s.add_development_dependency(%q<rcov>, [">= 0"])
|
52
|
+
s.add_development_dependency(%q<rspec>, [">= 0"])
|
53
|
+
else
|
54
|
+
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
55
|
+
s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
|
56
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
57
|
+
s.add_dependency(%q<rspec>, [">= 0"])
|
58
|
+
end
|
59
|
+
else
|
60
|
+
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
61
|
+
s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
|
62
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
63
|
+
s.add_dependency(%q<rspec>, [">= 0"])
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
version: 0.1.
|
8
|
+
- 1
|
9
|
+
version: 0.1.1
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Doug Youch
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2013-05-
|
17
|
+
date: 2013-05-15 00:00:00 -04:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -89,6 +89,7 @@ files:
|
|
89
89
|
- lib/packed_model/base.rb
|
90
90
|
- lib/packed_model/errors.rb
|
91
91
|
- lib/packed_model/list.rb
|
92
|
+
- packed-model.gemspec
|
92
93
|
- spec/helper.rb
|
93
94
|
- spec/packed_model/base_spec.rb
|
94
95
|
- spec/packed_model/list_spec.rb
|