Serialize_procs
I wanted to store Procs in my YAML serializer.
require 'mw_store.rb'
# DONE and WORKING
# Plock is like Proc.. but initialize with a string.
class Plock < Proc
attr_reader :str
def initialize(str) = ( @str = str )
def self.new(str, &bl) = ( super(str, &eval("proc {#{str}}")) )
end
class ProcString
def initialize
@store = MwStore.() # YAML serializer
@data = {}
end
def []=(name, str)
@data[name] = Plock.new(str)
end
def [](name)
@data[name] if @data.key?(name)
end
def save(filename)
@store.store['data'] = @data.transform_values {|v| v = v.str }
@store.save(filename)
end
def load(filename)
@store.load(filename)
@data = @store.fetch['data'].transform_values {|v| Plock.new(v) }
end
end
# test
ps = ProcString.new
ps[:double] = 'it * 2'
p ps[:double].(5) # => 10
p ps[:double].str # => "it * 2"
ps[:uc] = 'it.upcase'
ps.save 'test.data'
again = ProcString.new
again.load 'test.data'
p again[:uc].('titteli-ture!') # => "TITTELI-TURE!"
p again[:uc].str # => "it.upcase"