hash-save 0.0.4 → 0.0.5

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.
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