knjrbfw 0.0.32 → 0.0.33

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.
data/spec/web_spec.rb CHANGED
@@ -13,4 +13,65 @@ describe "Web" do
13
13
  raise "'trala' in 'second' wasnt a hash or contained invalid amount of elements." if !res["second"]["trala"].is_a?(Hash) or res["second"]["trala"].length != 3
14
14
  raise "'trala' in 'second' didnt contain the right elements." if res["second"]["trala"]["0"] != "1" or res["second"]["trala"]["1"] != "2" or res["second"]["trala"]["2"] != "3"
15
15
  end
16
+
17
+ #Moved from "knjrbfw_spec.rb".
18
+ it "should be able to use alert and back." do
19
+ Knj::Web.alert("Trala")
20
+
21
+ begin
22
+ Knj::Web.back
23
+ raise "It should have called exit which it didnt."
24
+ rescue SystemExit
25
+ #ignore.
26
+ end
27
+
28
+ begin
29
+ Knj::Web.redirect("?show=test")
30
+ raise "It should have called exit which it didnt."
31
+ rescue SystemExit
32
+ #ignore.
33
+ end
34
+ end
35
+
36
+ it "should be able to properly parse 'Set-Cookie' headers." do
37
+ data = Knj::Web.parse_set_cookies("TestCookie=TestValue+; Expires=Fri, 05 Aug 2011 10:58:17 GMT; Path=\n")
38
+
39
+ raise "No data returned?" if !data or !data.respond_to?(:length)
40
+ raise "Wrong number of cookies returned: '#{data.length}'." if data.length != 1
41
+
42
+ raise "Unexpected name: '#{data[0]["name"]}'." if data[0]["name"] != "TestCookie"
43
+ raise "Unexpected value: '#{data[0]["value"]}'." if data[0]["value"] != "TestValue "
44
+ raise "Unexpected path: '#{data[0]["path"]}'." if data[0]["path"] != ""
45
+ raise "Unexpected expire:' #{data[0]["expire"]}'." if data[0]["expires"] != "Fri, 05 Aug 2011 10:58:17 GMT"
46
+ end
47
+
48
+ it "should be able to execute various forms of Web.input methods." do
49
+ html = Knj::Web.inputs([{
50
+ :title => "Test 1",
51
+ :name => :textest1,
52
+ :type => :text,
53
+ :default => "hmm",
54
+ :value => "trala"
55
+ },{
56
+ :title => "Test 2",
57
+ :name => :chetest2,
58
+ :type => :checkbox,
59
+ :default => true
60
+ },{
61
+ :title => "Test 4",
62
+ :name => :textest4,
63
+ :type => :textarea,
64
+ :height => 300,
65
+ :default => "Hmm",
66
+ :value => "Trala"
67
+ },{
68
+ :title => "Test 5",
69
+ :name => :filetest5,
70
+ :type => :file
71
+ },{
72
+ :title => "Test 6",
73
+ :type => :info,
74
+ :value => "Argh"
75
+ }])
76
+ end
16
77
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: knjrbfw
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.32
5
+ version: 0.0.33
6
6
  platform: ruby
7
7
  authors:
8
8
  - Kasper Johansen
@@ -10,12 +10,34 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2012-05-06 00:00:00 +02:00
13
+ date: 2012-05-18 00:00:00 +02:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
- name: rspec
17
+ name: wref
18
18
  requirement: &id001 !ruby/object:Gem::Requirement
19
+ none: false
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ type: :runtime
25
+ prerelease: false
26
+ version_requirements: *id001
27
+ - !ruby/object:Gem::Dependency
28
+ name: tsafe
29
+ requirement: &id002 !ruby/object:Gem::Requirement
30
+ none: false
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: "0"
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: *id002
38
+ - !ruby/object:Gem::Dependency
39
+ name: rspec
40
+ requirement: &id003 !ruby/object:Gem::Requirement
19
41
  none: false
20
42
  requirements:
21
43
  - - ~>
@@ -23,10 +45,10 @@ dependencies:
23
45
  version: 2.3.0
24
46
  type: :development
25
47
  prerelease: false
26
- version_requirements: *id001
48
+ version_requirements: *id003
27
49
  - !ruby/object:Gem::Dependency
28
50
  name: bundler
29
- requirement: &id002 !ruby/object:Gem::Requirement
51
+ requirement: &id004 !ruby/object:Gem::Requirement
30
52
  none: false
31
53
  requirements:
32
54
  - - ">="
@@ -34,10 +56,10 @@ dependencies:
34
56
  version: 1.0.0
35
57
  type: :development
36
58
  prerelease: false
37
- version_requirements: *id002
59
+ version_requirements: *id004
38
60
  - !ruby/object:Gem::Dependency
39
61
  name: jeweler
40
- requirement: &id003 !ruby/object:Gem::Requirement
62
+ requirement: &id005 !ruby/object:Gem::Requirement
41
63
  none: false
42
64
  requirements:
43
65
  - - ~>
@@ -45,10 +67,10 @@ dependencies:
45
67
  version: 1.6.3
46
68
  type: :development
47
69
  prerelease: false
48
- version_requirements: *id003
70
+ version_requirements: *id005
49
71
  - !ruby/object:Gem::Dependency
50
72
  name: rcov
51
- requirement: &id004 !ruby/object:Gem::Requirement
73
+ requirement: &id006 !ruby/object:Gem::Requirement
52
74
  none: false
53
75
  requirements:
54
76
  - - ">="
@@ -56,10 +78,10 @@ dependencies:
56
78
  version: "0"
57
79
  type: :development
58
80
  prerelease: false
59
- version_requirements: *id004
81
+ version_requirements: *id006
60
82
  - !ruby/object:Gem::Dependency
61
83
  name: sqlite3
62
- requirement: &id005 !ruby/object:Gem::Requirement
84
+ requirement: &id007 !ruby/object:Gem::Requirement
63
85
  none: false
64
86
  requirements:
65
87
  - - ">="
@@ -67,10 +89,10 @@ dependencies:
67
89
  version: "0"
68
90
  type: :development
69
91
  prerelease: false
70
- version_requirements: *id005
92
+ version_requirements: *id007
71
93
  - !ruby/object:Gem::Dependency
72
94
  name: rmagick
73
- requirement: &id006 !ruby/object:Gem::Requirement
95
+ requirement: &id008 !ruby/object:Gem::Requirement
74
96
  none: false
75
97
  requirements:
76
98
  - - ">="
@@ -78,7 +100,7 @@ dependencies:
78
100
  version: "0"
79
101
  type: :development
80
102
  prerelease: false
81
- version_requirements: *id006
103
+ version_requirements: *id008
82
104
  description: Including stuff for HTTP, SSH and much more.
83
105
  email: k@spernj.org
84
106
  executables: []
@@ -92,6 +114,7 @@ files:
92
114
  - .document
93
115
  - .rspec
94
116
  - Gemfile
117
+ - Gemfile.lock
95
118
  - LICENSE.txt
96
119
  - README.rdoc
97
120
  - Rakefile
@@ -122,6 +145,7 @@ files:
122
145
  - lib/knj/autoload/sqlite3.rb
123
146
  - lib/knj/autoload/tmail.rb
124
147
  - lib/knj/autoload/tzinfo.rb
148
+ - lib/knj/autoload/wref.rb
125
149
  - lib/knj/autoload/xmlsimple.rb
126
150
  - lib/knj/autoload/zip.rb
127
151
  - lib/knj/cmd_gen.rb
@@ -314,7 +338,6 @@ files:
314
338
  - lib/knj/win.rb
315
339
  - lib/knj/win_registry.rb
316
340
  - lib/knj/win_tightvnc.rb
317
- - lib/knj/wref.rb
318
341
  - lib/knj/x11vnc.rb
319
342
  - lib/knj/youtube.rb
320
343
  - lib/knjrbfw.rb
@@ -325,6 +348,7 @@ files:
325
348
  - spec/db_spec_encoding_test_file.txt
326
349
  - spec/http2_spec.rb
327
350
  - spec/knjrbfw_spec.rb
351
+ - spec/objects_spec.rb
328
352
  - spec/php_spec.rb
329
353
  - spec/process_meta_spec.rb
330
354
  - spec/process_spec.rb
@@ -332,7 +356,6 @@ files:
332
356
  - spec/strings_spec.rb
333
357
  - spec/threadsafe_spec.rb
334
358
  - spec/web_spec.rb
335
- - spec/wref_spec.rb
336
359
  - testfiles/image.jpg
337
360
  has_rdoc: true
338
361
  homepage: http://github.com/kaspernj/knjrbfw
@@ -348,7 +371,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
348
371
  requirements:
349
372
  - - ">="
350
373
  - !ruby/object:Gem::Version
351
- hash: -468641823555202698
374
+ hash: 2685186522234907408
352
375
  segments:
353
376
  - 0
354
377
  version: "0"
data/lib/knj/wref.rb DELETED
@@ -1,251 +0,0 @@
1
- #A simple weak-reference framework with mapping. Only handles the referencing of objects.
2
- #===Examples
3
- # user_obj = ob.get(:User, 1)
4
- # weak_ref = Knj::Wref(user_obj)
5
- # user_obj = nil
6
- # sleep 0.5
7
- # GC.start
8
- #
9
- # begin
10
- # user_obj = weak_ref.get
11
- # print "The user still exists in memory and has ID #{user.id}."
12
- # rescue Knj::Wref::Recycled
13
- # print "The user has been removed from memory."
14
- # end
15
- class Knj::Wref
16
- #Returns the classname of the object.
17
- attr_reader :class_name
18
-
19
- #Returns the object-ID which is used to look up the ObjectSpace (if not running JRuby).
20
- attr_reader :id
21
-
22
- #Initializes various variables.
23
- def initialize(obj)
24
- @id = obj.__id__
25
-
26
- if RUBY_ENGINE == "jruby"
27
- require "java"
28
- @weakref = java.lang.ref.WeakReference.new(obj)
29
- else
30
- @class_name = obj.class.name.to_sym
31
-
32
- if obj.respond_to?("__object_unique_id__")
33
- @unique_id = obj.__object_unique_id__
34
- end
35
- end
36
- end
37
-
38
- #Returns the object that this weak reference holds or raises Knj::Wref::Recycled.
39
- # begin
40
- # obj = wref.get
41
- # print "Object still exists in memory."
42
- # rescue Knj::Wref::Recycled
43
- # print "Object has been garbage-collected."
44
- # end
45
- def get
46
- begin
47
- raise Knj::Wref::Recycled if !@class_name or !@id
48
-
49
- if RUBY_ENGINE == "jruby"
50
- obj = @weakref.get
51
-
52
- if obj == nil
53
- raise Knj::Wref::Recycled
54
- else
55
- return obj
56
- end
57
- else
58
- obj = ObjectSpace._id2ref(@id)
59
- end
60
-
61
- #Some times this class-name will be nil for some reason - knj
62
- obj_class_name = obj.class.name
63
-
64
- if !obj_class_name or @class_name != obj_class_name.to_sym or @id != obj.__id__
65
- raise Knj::Wref::Recycled
66
- end
67
-
68
- if @unique_id
69
- if !obj.respond_to?("__object_unique_id__") or obj.__object_unique_id__ != @unique_id
70
- raise Knj::Wref::Recycled
71
- end
72
- end
73
-
74
- return obj
75
- rescue RangeError, TypeError
76
- raise Knj::Wref::Recycled
77
- end
78
- end
79
-
80
- #Returns true if the reference is still alive.
81
- # print "The object still exists in memory." if wref.alive?
82
- def alive?
83
- begin
84
- self.get
85
- return true
86
- rescue Knj::Wref::Recycled
87
- return false
88
- end
89
- end
90
-
91
- #Makes Wref compatible with the normal WeakRef.
92
- alias weakref_alive? alive?
93
- alias __getobj__ get
94
- end
95
-
96
- #A weak hash-map.
97
- #===Examples
98
- # map = Knj::Wref_map.new
99
- # map[1] = obj
100
- # obj = nil
101
- #
102
- # sleep 0.5
103
- #
104
- # begin
105
- # obj = map[1]
106
- # print "Object still exists in memory."
107
- # rescue Knj::Wref::Recycled
108
- # print "Object has been garbage-collected."
109
- # end
110
- #
111
- # obj = map.get!(1)
112
- # print "Object still exists in memory." if obj
113
- class Knj::Wref_map
114
- def initialize(args = nil)
115
- @map = {}
116
- @ids = {}
117
- @mutex = Mutex.new
118
- end
119
-
120
- #Sets a new object in the map with a given ID.
121
- def set(id, obj)
122
- wref = Knj::Wref.new(obj)
123
-
124
- @mutex.synchronize do
125
- @map[id] = wref
126
- @ids[obj.__id__] = id
127
- end
128
-
129
- #JRuby cant handle this atm... Dunno why...
130
- if RUBY_ENGINE != "jruby"
131
- ObjectSpace.define_finalizer(obj, self.method("delete_by_id"))
132
- end
133
-
134
- return nil
135
- end
136
-
137
- #Returns a object by ID or raises a RefError.
138
- #===Examples
139
- # begin
140
- # obj = map[1]
141
- # print "Object still exists in memory."
142
- # rescue Knj::Wref::Recycled
143
- # print "Object has been garbage-collected."
144
- # end
145
- def get(id)
146
- begin
147
- @mutex.synchronize do
148
- raise Knj::Wref::Recycled if !@map.key?(id)
149
- return @map[id].get
150
- end
151
- rescue Knj::Wref::Recycled => e
152
- self.delete(id)
153
- raise e
154
- end
155
- end
156
-
157
- #The same as 'get' but returns nil instead of WeakRef-error. This can be used to avoid writing lots of code.
158
- #===Examples
159
- # obj = map.get!(1)
160
- # print "Object still exists in memory." if obj
161
- def get!(id)
162
- begin
163
- return self.get(id)
164
- rescue Knj::Wref::Recycled
165
- return nil
166
- end
167
- end
168
-
169
- #Scans the whole map and removes dead references. After the implementation of automatic clean-up by using ObjectSpace.define_finalizer, there should be no reason to call this method.
170
- def clean
171
- keys = nil
172
- @mutex.synchronize do
173
- keys = @map.keys
174
- end
175
-
176
- keys.each do |key|
177
- begin
178
- self.get(key) #this will remove the key if the object no longer exists.
179
- rescue Knj::Wref::Recycled
180
- #ignore.
181
- end
182
- end
183
-
184
- return nil
185
- end
186
-
187
- #Returns true if a given key exists and the object it holds is alive.
188
- def valid?(key)
189
- @mutex.synchronize do
190
- return false if !@map.key?(key)
191
-
192
- begin
193
- @map[key].get
194
- return true
195
- rescue Knj::Wref::Recycled
196
- return false
197
- end
198
- end
199
- end
200
-
201
- #Returns true if the given key exists in the hash.
202
- #===Examples
203
- # print "Key exists but we dont know if the value has been garbage-collected." if map.key?(1)
204
- def key?(key)
205
- @mutex.synchronize do
206
- return @map.key?(key)
207
- end
208
- end
209
-
210
- #Returns the length of the hash. This may not be true since invalid objects is also counted.
211
- def length
212
- @mutex.synchronize do
213
- return @map.length
214
- end
215
- end
216
-
217
- #Cleans the hash and returns the length. This is slower but more accurate than the ordinary length that just returns the hash-length.
218
- def length_valid
219
- self.clean
220
-
221
- @mutex.synchronize do
222
- return @map.length
223
- end
224
- end
225
-
226
- #Deletes a key in the hash.
227
- def delete(key)
228
- @mutex.synchronize do
229
- wref = @map[key]
230
- @ids.delete(wref.id) if wref
231
- @map.delete(key)
232
- end
233
- end
234
-
235
- #This method is supposed to remove objects when finalizer is called by ObjectSpace.
236
- def delete_by_id(object_id)
237
- @mutex.synchronize do
238
- id = @ids[object_id]
239
- @map.delete(id)
240
- @ids.delete(object_id)
241
- end
242
- end
243
-
244
- #Make it hash-compatible.
245
- alias has_key? key?
246
- alias [] get
247
- alias []= set
248
- end
249
-
250
- #This error is raised when an object in a wref has been garbage-collected.
251
- class Knj::Wref::Recycled < RuntimeError; end
data/spec/wref_spec.rb DELETED
@@ -1,10 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
-
3
- describe "Wref" do
4
- it "should load by using autoload" do
5
- require "knjrbfw"
6
-
7
- #Autoload wref-map.
8
- Knj::Wref_map
9
- end
10
- end