hash-save 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/hash-save.rb +31 -16
  2. metadata +3 -3
@@ -1,49 +1,64 @@
1
+ require 'fileutils'
2
+
1
3
  class Hash
2
4
  BASE_DIR = './data'
3
5
 
4
- def save
6
+ def save_as(namespace)
7
+ save("#{BASE_DIR}/#{namespace}")
8
+ end
9
+
10
+ def self.load_from(namespace)
11
+ files = Dir.entries("#{BASE_DIR}/#{namespace}")[2..-1]
12
+ h = {}
13
+ files.each do |fn|
14
+ h[fn.to_sym] = find(fn, "#{BASE_DIR}/#{namespace}")
15
+ end
16
+ h
17
+ end
18
+
19
+ def save(base_dir=BASE_DIR)
5
20
  self.each do |k,v|
6
- File.open("#{BASE_DIR}/#{k}", 'wb') do |f|
21
+ File.open("#{base_dir}/#{k}", 'wb') do |f|
7
22
  Marshal.dump(v, f)
8
23
  end
9
24
  end
10
25
 
11
26
  rescue Errno::ENOENT
12
- Dir.mkdir(BASE_DIR)
13
- retry if Dir.exists?(BASE_DIR)
27
+ FileUtils.mkdir_p(base_dir)
28
+ retry if Dir.exists?(base_dir)
14
29
  end
15
30
 
16
- def load!
31
+ def load!(base_dir=BASE_DIR)
17
32
  self.each do |k,v|
18
- self[k] = self.class.find!(k)
33
+ self[k] = self.class.find!(k, base_dir)
19
34
  end
20
35
  end
21
36
 
22
- def self.find!(k)
23
- File.open("#{BASE_DIR}/#{k}", 'rb') do |f|
37
+ def self.find!(k, base_dir=BASE_DIR)
38
+ File.open("#{base_dir}/#{k}", 'rb') do |f|
24
39
  Marshal.load(f)
25
40
  end
26
41
  end
27
42
 
28
- def load
43
+ def load(base_dir=BASE_DIR)
29
44
  self.each do |k,v|
30
- self[k] = self.class.find(k)
45
+ self[k] = self.class.find(k, base_dir)
31
46
  end
32
47
  end
33
48
 
34
- def self.find(k, default_val=nil)
49
+ def self.find(k, base_dir=BASE_DIR, default_val=nil)
35
50
  begin
36
- self.find!(k)
51
+ self.find!(k, base_dir)
37
52
  rescue Errno::ENOENT => e
38
53
  default_val
39
54
  end
40
55
  end
41
56
 
42
- def self.modify!(k)
43
- {k => yield(Hash.find(k))}.save
57
+ def self.modify!(k, base_dir=BASE_DIR)
58
+ {k => yield(Hash.find(k, base_dir))}.save
44
59
  end
45
60
 
46
- def self.inc!(k)
47
- modify!(k){ |x| x + 1 }
61
+ def self.inc!(k, base_dir=BASE_DIR)
62
+ modify!(k, base_dir){ |x| x + 1 }
48
63
  end
49
64
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 4
9
- version: 0.0.4
8
+ - 5
9
+ version: 0.0.5
10
10
  platform: ruby
11
11
  authors:
12
12
  - David Beckwith
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-02-20 00:00:00 -08:00
17
+ date: 2011-02-21 00:00:00 -08:00
18
18
  default_executable:
19
19
  dependencies: []
20
20