knjrbfw 0.0.22 → 0.0.23

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 (5) hide show
  1. data/VERSION +1 -1
  2. data/knjrbfw.gemspec +1 -1
  3. data/lib/knj/objects.rb +1 -13
  4. data/lib/knj/wref.rb +28 -14
  5. metadata +14 -14
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.22
1
+ 0.0.23
data/knjrbfw.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{knjrbfw}
8
- s.version = "0.0.22"
8
+ s.version = "0.0.23"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Kasper Johansen"]
data/lib/knj/objects.rb CHANGED
@@ -574,19 +574,7 @@ class Knj::Objects
574
574
  end
575
575
 
576
576
  classname = classname.to_sym
577
-
578
- #if !@objects.key?(classname)
579
- #raise "Could not find object class in cache: #{classname}."
580
- #elsif !@objects[classname].key?(object.id.to_i)
581
- #errstr = ""
582
- #errstr << "Could not unset object from cache.\n"
583
- #errstr << "Class: #{object.class.name}.\n"
584
- #errstr << "ID: #{object.id}.\n"
585
- #errstr << "Could not find object ID in cache."
586
- #raise errstr
587
- #else
588
- @objects[classname].delete(object.id.to_i)
589
- #end
577
+ @objects[classname].delete(object.id.to_i)
590
578
  end
591
579
 
592
580
  def unset_class(classname)
data/lib/knj/wref.rb CHANGED
@@ -28,6 +28,7 @@ class Knj::Wref
28
28
  def get
29
29
  obj = @weakref.__getobj__ if @weakref
30
30
 
31
+ #The class-check is because ID's can be reused in Ruby 1.9 which breaks the normal WeakRef-implementation.
31
32
  if !@weakref or @class_name != obj.class.name.to_sym or @id != obj.__id__
32
33
  self.destroy
33
34
  raise WeakRef::RefError
@@ -59,7 +60,7 @@ class Knj::Wref
59
60
  end
60
61
 
61
62
  class Knj::Wref_map
62
- def initialize(args = {})
63
+ def initialize(args = nil)
63
64
  @map = {}
64
65
  end
65
66
 
@@ -93,19 +94,6 @@ class Knj::Wref_map
93
94
  end
94
95
  end
95
96
 
96
- #Make it hash-compatible.
97
- def key?(key)
98
- return @map.key?(key)
99
- end
100
-
101
- def length
102
- return @map.length
103
- end
104
-
105
- alias has_key? key?
106
- alias [] get
107
- alias []= set
108
-
109
97
  #The same as 'get' but returns nil instead of WeakRef-error. This can be used to avoid writing lots of code.
110
98
  def get!(id)
111
99
  begin
@@ -139,4 +127,30 @@ class Knj::Wref_map
139
127
  return false
140
128
  end
141
129
  end
130
+
131
+ #Returns true if the given key exists in the hash.
132
+ def key?(key)
133
+ return @map.key?(key)
134
+ end
135
+
136
+ #Returns the length of the hash. This may not be true since invalid objects is also counted.
137
+ def length
138
+ return @map.length
139
+ end
140
+
141
+ #Cleans the hash and returns the length. This is slower but more accurate than the ordinary length that just returns the hash-length.
142
+ def length_valid
143
+ self.clean
144
+ return @map.length
145
+ end
146
+
147
+ #Deletes a key in the hash.
148
+ def delete(key)
149
+ @map.delete(key)
150
+ end
151
+
152
+ #Make it hash-compatible.
153
+ alias has_key? key?
154
+ alias [] get
155
+ alias []= set
142
156
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: knjrbfw
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.22
4
+ version: 0.0.23
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -14,7 +14,7 @@ default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rspec
17
- requirement: &9288920 !ruby/object:Gem::Requirement
17
+ requirement: &19017160 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ~>
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: 2.3.0
23
23
  type: :development
24
24
  prerelease: false
25
- version_requirements: *9288920
25
+ version_requirements: *19017160
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: bundler
28
- requirement: &9287320 !ruby/object:Gem::Requirement
28
+ requirement: &19015640 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ~>
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: 1.0.0
34
34
  type: :development
35
35
  prerelease: false
36
- version_requirements: *9287320
36
+ version_requirements: *19015640
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: jeweler
39
- requirement: &9286040 !ruby/object:Gem::Requirement
39
+ requirement: &19014340 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ~>
@@ -44,10 +44,10 @@ dependencies:
44
44
  version: 1.6.3
45
45
  type: :development
46
46
  prerelease: false
47
- version_requirements: *9286040
47
+ version_requirements: *19014340
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: rcov
50
- requirement: &9283160 !ruby/object:Gem::Requirement
50
+ requirement: &19011420 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ! '>='
@@ -55,10 +55,10 @@ dependencies:
55
55
  version: '0'
56
56
  type: :development
57
57
  prerelease: false
58
- version_requirements: *9283160
58
+ version_requirements: *19011420
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: sqlite3
61
- requirement: &9274360 !ruby/object:Gem::Requirement
61
+ requirement: &18984160 !ruby/object:Gem::Requirement
62
62
  none: false
63
63
  requirements:
64
64
  - - ! '>='
@@ -66,10 +66,10 @@ dependencies:
66
66
  version: '0'
67
67
  type: :development
68
68
  prerelease: false
69
- version_requirements: *9274360
69
+ version_requirements: *18984160
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: rmagick
72
- requirement: &9272380 !ruby/object:Gem::Requirement
72
+ requirement: &18981880 !ruby/object:Gem::Requirement
73
73
  none: false
74
74
  requirements:
75
75
  - - ! '>='
@@ -77,7 +77,7 @@ dependencies:
77
77
  version: '0'
78
78
  type: :development
79
79
  prerelease: false
80
- version_requirements: *9272380
80
+ version_requirements: *18981880
81
81
  description: Including stuff for HTTP, SSH and much more.
82
82
  email: k@spernj.org
83
83
  executables: []
@@ -340,7 +340,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
340
340
  version: '0'
341
341
  segments:
342
342
  - 0
343
- hash: 4024232458880246262
343
+ hash: -4483091133869871339
344
344
  required_rubygems_version: !ruby/object:Gem::Requirement
345
345
  none: false
346
346
  requirements: