box-rb 1.0.2

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