るびきちです。
テキストでのマーシャリングが欲しいので試しに作ってみました。
どうでしょう?
インターフェースはMarshalとほぼ同じです。

#!/usr/bin/env ruby
module TMarshal
  module_function
  def dump(obj, port = nil)
    dumped = obj.dump_text
    if port
      port.write dumped
    end
    dumped
  end
  
  def load(port)
    eval port.read
  end
  
  def restore(port)
    load(port)
  end
end


################ dump_text for Standard Libraries

class String
  alias :dump_text :dump
end

class Array
  def dump_text
    "[\n"+self.collect{|x| x.dump_text+",\n"}.to_s+"]"
  end
end

class Numeric
  alias :dump_text :inspect
end

class Hash
  def dump_text
    "{\n"+self.collect{|k,v| "#{k.dump_text} => #{v.dump_text},\n"}.to_s+"}"
  end
end

class TrueClass
  def dump_text
    "true"
  end
end

class FalseClass
  def dump_text
    "false"
  end
end

class NilClass
  def dump_text
    "nil"
  end
end

class Module
  alias :dump_text :inspect
end

class Range
  alias :dump_text :to_s
end

class Regexp
  alias :dump_text :inspect
end

class Symbol
  alias :dump_text :inspect
end

class Time
  def dump_text
    "Time.at(#{self.to_i})"
  end
end

if __FILE__ == $0
  class C
    def initialize(v)
      @v = v
    end
    attr :v
    def dump_text
      "#{self.type}::new(#{@v.dump_text})"
    end
    def ==(other)
      @v == other.v
    end
  end

  
  [true, false, nil, Object, :a, /x/, 1..2, 3...4, Time.now].each do |x|
    puts TMarshal::dump(x)
  end
  
  p eval(TMarshal::dump([true, false, nil, Object, :a, /x/, 1..2, 3...4, Time.at(1)])) == [true, false, nil, Object, :a, /x/, 1..2, 3...4, Time.at(1)]
  puts TMarshal::dump([true, false, nil, Object, :a, /x/, 1..2, 3...4, Time.at(1)])
end

るびきち☆
http://voo.to/ruby/ ←Ruby大衆化計画(笑)