gap50 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ae6d9acfa172e8ef1d1f264f4db142473d59ae8aa69fb3e779a3642f6015004a
4
- data.tar.gz: 5771da27451a35681ae6e7fc200898555414be3421d544a9194becc906e0e9b3
3
+ metadata.gz: a46fe66e722b7142e548f8b07e758bc10f92365aba38c0156eafc0187759dc4e
4
+ data.tar.gz: 3dd08195db1e6c63eb312da0d37b8a4465af6b6c9c2c264d760cdd59b12de827
5
5
  SHA512:
6
- metadata.gz: a0ee404741ff972cb04d6ee0fb0c82ff35a22627d9d7fb2f7256e40082f9a9588661b89bf2140a5b518f27f985e836bd451753a579ad695967af7433957fcae9
7
- data.tar.gz: bd37e29a9f84451375bb5e7d3cef10fbc0858d64877ce594ef09c20afb602217658ac9ea9fedb2654053f85536e00d2354880330677f14af17900f2f95304234
6
+ metadata.gz: 7dc43c4b659aa9e0e77d74b96108004da6753e9635f70e3525be5ff1592433197bcef499d2cd09052b112fc974cbb6a8f5ea8d22184f71d86b59574060918fa1
7
+ data.tar.gz: b0138ef5ae1eb13d254afc6744e99a2feda6142ab2fdb404604bd9f91c359cbec98916c50eebea6012d5be6881527860919eedfe3fe795550aa93baef8e033e3
@@ -0,0 +1,35 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ gap50 (0.1.0)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ diff-lcs (1.3)
10
+ rake (10.5.0)
11
+ rspec (3.8.0)
12
+ rspec-core (~> 3.8.0)
13
+ rspec-expectations (~> 3.8.0)
14
+ rspec-mocks (~> 3.8.0)
15
+ rspec-core (3.8.0)
16
+ rspec-support (~> 3.8.0)
17
+ rspec-expectations (3.8.2)
18
+ diff-lcs (>= 1.2.0, < 2.0)
19
+ rspec-support (~> 3.8.0)
20
+ rspec-mocks (3.8.0)
21
+ diff-lcs (>= 1.2.0, < 2.0)
22
+ rspec-support (~> 3.8.0)
23
+ rspec-support (3.8.0)
24
+
25
+ PLATFORMS
26
+ ruby
27
+
28
+ DEPENDENCIES
29
+ bundler (~> 1.16)
30
+ gap50!
31
+ rake (~> 10.0)
32
+ rspec (~> 3.0)
33
+
34
+ BUNDLED WITH
35
+ 1.16.1
@@ -1,12 +1,50 @@
1
1
  module Gap
2
2
  class HashChain
3
3
  HashNode = Struct.new :hash, :next
4
+ USAGE = {}
5
+ module Package
6
+ PACKAGES = {}
7
+ def self.register(a, b)
8
+ if PACKAGES.include?(a) && PACKAGES[a] != b
9
+ raise ArgumentError, "Already exists #{a}"
10
+ else
11
+ PACKAGES[a] = b
12
+ end
13
+ end
14
+ def self.unregister(a)
15
+ PACKAGES.delete(a)
16
+ end
17
+
18
+ def self.[](a)
19
+ if !PACKAGES.include?(a)
20
+ raise ArgumentError, "Not exists #{a}"
21
+ else
22
+ PACKAGES[a]
23
+ end
24
+ end
25
+
26
+ def self.call(hnode)
27
+ self[hnode.getone(:package)]
28
+ end
29
+ end
30
+ USAGE[:package] = Package
4
31
  class HashNode
32
+ attr_accessor :usagetag
5
33
  def initialize(hash = {}, nx = nil)
6
34
  super(hash, nx)
7
35
  end
8
36
 
9
- def [](a)
37
+ def usage
38
+ if self.usagetag
39
+ USAGE[self.usagetag]
40
+ end
41
+ end
42
+
43
+ def getone(a)
44
+ self.hash[a]
45
+ end
46
+
47
+ def get(a)
10
48
  if self.hash.include?(a)
11
49
  self.hash[a]
12
50
  elsif self.next
@@ -16,11 +54,23 @@ module Gap
16
54
  end
17
55
  end
18
56
 
19
- def []=(a, b)
57
+ def set(a, b)
20
58
  self.hash[a] = b
21
59
  end
22
60
 
61
+ def [](a)
62
+ return usage.call(self)[a] if usage
63
+ get a
64
+ end
65
+
66
+
67
+ def []=(a, b)
68
+ return (usage.call(self)[a] = b) if usage
69
+ set a, b
70
+ end
71
+
23
72
  def include?(a)
73
+ return (usage.call(self).include?(a)) if usage
24
74
  if self.hash.include?(a)
25
75
  true
26
76
  elsif self.next
@@ -31,10 +81,12 @@ module Gap
31
81
  end
32
82
 
33
83
  def delete(a)
84
+ return (usage.call(self).delete(a)) if usage
34
85
  self.hash.delete a
35
86
  end
36
87
 
37
88
  def deleteAll(a)
89
+ return (usage.call(self).deleteAll(a)) if usage
38
90
  self.hash.delete a
39
91
  self.next.deleteAll a if self.next
40
92
  end
@@ -44,7 +96,8 @@ module Gap
44
96
  @hashnode = HashNode.new hash
45
97
  end
46
98
 
47
- def append(node = HashNode.new)
99
+ def append(node = HashNode.new, usage = nil)
100
+ node.usagetag = usage if usage
48
101
  node.next = @hashnode
49
102
  @hashnode = node
50
103
  end
@@ -57,6 +110,18 @@ module Gap
57
110
  @hashnode[a] = b
58
111
  end
59
112
 
113
+ def get(a)
114
+ @hashnode.get a
115
+ end
116
+
117
+ def getone(a)
118
+ @hashnode.getone a
119
+ end
120
+
121
+ def set(a, b)
122
+ @hashnode.set a, b
123
+ end
124
+
60
125
  def include?(a)
61
126
  @hashnode.include?(a)
62
127
  end
@@ -1,7 +1,7 @@
1
1
  module Gap
2
2
  class Maker
3
3
  RND = Random.new
4
- attr_accessor :temp, :sam
4
+ attr_accessor :temp, :sam, :teardown
5
5
 
6
6
 
7
7
  def initialize(sam = nil, temp = genname, &block)
@@ -30,6 +30,10 @@ module Gap
30
30
  @sam.writefile path(name), value
31
31
  end
32
32
 
33
+ def tear
34
+ self.teardown = true
35
+ end
36
+
33
37
  def copyfile(src, dest)
34
38
  writefile dest, @sam.readfile(src)
35
39
  end
@@ -41,7 +45,7 @@ module Gap
41
45
  def transaction
42
46
  _create
43
47
  ret = yield self
44
- _import_all
48
+ _import_all unless self.teardown
45
49
  _cleanup
46
50
  ret
47
51
  end
@@ -1,3 +1,3 @@
1
1
  module Gap50
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gap50
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Artoria Seiran
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-12-22 00:00:00.000000000 Z
11
+ date: 2018-12-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -63,6 +63,7 @@ files:
63
63
  - ".rspec"
64
64
  - ".travis.yml"
65
65
  - Gemfile
66
+ - Gemfile.lock
66
67
  - README.md
67
68
  - Rakefile
68
69
  - bin/console