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"