gap50 0.1.0 → 0.1.1

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