first commit
This commit is contained in:
commit
d27b1b3852
10 changed files with 313 additions and 0 deletions
17
lib/safebox/box.rb
Normal file
17
lib/safebox/box.rb
Normal file
|
@ -0,0 +1,17 @@
|
|||
require 'safebox/sanfeox'
|
||||
|
||||
class Safebox::Box
|
||||
attr_reader :_, :db
|
||||
|
||||
def initialize db, _ = nil
|
||||
@_, @db = _, db
|
||||
end
|
||||
|
||||
def put key, val
|
||||
@db[ key] = val
|
||||
end
|
||||
|
||||
def get key
|
||||
@db[ key]
|
||||
end
|
||||
end
|
15
lib/safebox/emit.rb
Normal file
15
lib/safebox/emit.rb
Normal file
|
@ -0,0 +1,15 @@
|
|||
require 'safebox/safebox'
|
||||
|
||||
class Safebox::Emit
|
||||
def initialize db
|
||||
@db = db
|
||||
end
|
||||
|
||||
def emit key, val
|
||||
@db[key] = val
|
||||
end
|
||||
|
||||
def inspect
|
||||
"#<%s:0x%016x>" % [ self.class, self.object_id ]
|
||||
end
|
||||
end
|
28
lib/safebox/persistent.rb
Normal file
28
lib/safebox/persistent.rb
Normal file
|
@ -0,0 +1,28 @@
|
|||
require 'safebox/emit'
|
||||
|
||||
class Safebox::Persistent < Safebox::Emit
|
||||
include Enumerable
|
||||
|
||||
def initialize db, cursor
|
||||
super db
|
||||
@cursor = cursor
|
||||
end
|
||||
alias put emit
|
||||
alias []= emit
|
||||
|
||||
def get key
|
||||
@db[ key]
|
||||
end
|
||||
alias [] get
|
||||
alias fetch get
|
||||
|
||||
def each &exe
|
||||
exe ? @cursor.each( &exe) : Enumerator.new( self, :each)
|
||||
end
|
||||
|
||||
def to_hash
|
||||
rh = {}
|
||||
each {|key, val| rh[ key] = val }
|
||||
rh
|
||||
end
|
||||
end
|
25
lib/safebox/safebox.rb
Normal file
25
lib/safebox/safebox.rb
Normal file
|
@ -0,0 +1,25 @@
|
|||
|
||||
module Safebox
|
||||
def self.run *paras, &exe
|
||||
exe = paras.shift unless exe
|
||||
box = paras.shift || Class
|
||||
Thread.new do
|
||||
$SAFE = 4
|
||||
this = box.new *paras
|
||||
begin
|
||||
[:value, this.instance_eval( exe, "Safebox")]
|
||||
rescue Object
|
||||
[:exception, $!]
|
||||
end
|
||||
end.value
|
||||
end
|
||||
|
||||
def self.create_class *paras, &exe
|
||||
exe = paras.shift unless exe
|
||||
run Class, *paras do
|
||||
eval exe
|
||||
self
|
||||
end
|
||||
end
|
||||
alias new_class create_class
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue