first commit

This commit is contained in:
Denis Knauf 2010-03-20 23:53:57 +01:00
commit d27b1b3852
10 changed files with 313 additions and 0 deletions

17
lib/safebox/box.rb Normal file
View 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
View 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
View 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
View 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