box-rb 1.0.2

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/bin/box ADDED
@@ -0,0 +1,34 @@
1
+ require 'rubygems'
2
+ require 'box'
3
+
4
+ if ARGV.size < 2
5
+ puts "wrong parameter"
6
+ else
7
+ cmd = ARGV[0].downcase
8
+
9
+ case cmd
10
+ when "pack"
11
+ box = Box::Writer.new
12
+
13
+ for i in 2..ARGV.size-1
14
+ fp = File.new( ARGV[i] )
15
+
16
+ box.add( ARGV[i], fp.read )
17
+
18
+ fp.close
19
+ end
20
+
21
+ box.write( ARGV[1] )
22
+ when "unpack"
23
+ box = Box::Reader.new
24
+
25
+ data = box.read( ARGV[1] )
26
+
27
+ data.each do |k,v|
28
+ fp = File.new(k)
29
+ fp.write(v)
30
+ fp.close
31
+ end
32
+ end
33
+ end
34
+
data/lib/box/packer.rb ADDED
@@ -0,0 +1,22 @@
1
+ module Box
2
+ require 'zlib'
3
+ require 'base64'
4
+
5
+ class Packer
6
+ def initialize
7
+ end
8
+
9
+ def self.pack(data)
10
+ c = Zlib::Deflate.deflate(data)
11
+ e = Base64.encode64(c)
12
+
13
+ return e
14
+ end
15
+ def self.unpack(data)
16
+ e = Base64.decode64(data)
17
+ c = Zlib::Inflate.inflate(e)
18
+
19
+ return c
20
+ end
21
+ end
22
+ end
data/lib/box/reader.rb ADDED
@@ -0,0 +1,33 @@
1
+ module Box
2
+ require 'json'
3
+
4
+ class Reader
5
+ def initialize
6
+ @data = Hash.new
7
+ end
8
+
9
+ def unpack_data(data)
10
+ unpacked = Hash.new
11
+
12
+ data.each do |k,v|
13
+ unpacked[k] = Packer.unpack(v)
14
+ end
15
+
16
+ return unpacked
17
+ end
18
+ def load(data)
19
+ json = JSON.load(data)
20
+ @data = unpack_data( json )
21
+
22
+ return @data
23
+ end
24
+
25
+ def read(path)
26
+ fp = File.new(path, "w")
27
+ data = fp.read
28
+ fp.close
29
+
30
+ load data
31
+ end
32
+ end
33
+ end
data/lib/box/writer.rb ADDED
@@ -0,0 +1,38 @@
1
+ module Box
2
+ require 'json'
3
+
4
+ class Writer
5
+ def initialize
6
+ @data = Hash.new
7
+ end
8
+
9
+ def add(name, data)
10
+ @data[name] = data
11
+ end
12
+ def delete(name)
13
+ @data.delete name
14
+ end
15
+
16
+ def pack_data(data)
17
+ packed = Hash.new
18
+
19
+ data.each do |k,v|
20
+ packed[k] = Packer.pack(v)
21
+ end
22
+
23
+ return packed
24
+ end
25
+ def dump
26
+ packed = pack_data(@data)
27
+ json = JSON.dump(packed)
28
+
29
+ return json
30
+ end
31
+
32
+ def write(path)
33
+ fp = File.new(path, "w")
34
+ fp.write(dump)
35
+ fp.close
36
+ end
37
+ end
38
+ end
data/lib/box.rb ADDED
@@ -0,0 +1,3 @@
1
+ require 'box/packer.rb'
2
+ require 'box/writer.rb'
3
+ require 'box/reader.rb'
metadata ADDED
@@ -0,0 +1,51 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: box-rb
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.2
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - pjc0247
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-11-18 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description: ruby data box
15
+ email:
16
+ - pjc0247@naver.com
17
+ executables:
18
+ - box
19
+ extensions: []
20
+ extra_rdoc_files: []
21
+ files:
22
+ - lib/box.rb
23
+ - lib/box/packer.rb
24
+ - lib/box/reader.rb
25
+ - lib/box/writer.rb
26
+ - bin/box
27
+ homepage: http://github.com/pjc0247/Box
28
+ licenses: []
29
+ post_install_message:
30
+ rdoc_options: []
31
+ require_paths:
32
+ - lib
33
+ required_ruby_version: !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ required_rubygems_version: !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
44
+ version: 1.3.6
45
+ requirements: []
46
+ rubyforge_project: box
47
+ rubygems_version: 1.8.25
48
+ signing_key:
49
+ specification_version: 3
50
+ summary: ruby data box
51
+ test_files: []