From: Tanaka Akira Date: 2001-08-21T22:05:46+09:00 Subject: [ruby-dev:14545] Re: marshal API (was Re: [Patch] pp.rb and debug.rb) In article , Tanaka Akira writes: > > $B31(B> $B%$%s%9%?%s%9JQ?t$b$=$&$J$s$@$1$I!"(BT_OBJECT$B$8$c$J$$$b$N$N%5%V%/%i%9$r(B > > $B31(B> basic_new$B$G$-$k$+$J!<$H$+?4G[$7$F$?$s$G$9!#(B > > $B31(B> $B$H!";W$C$?$i?F$N(Bam_dump$B$,(Bbasic_new$B0J30$NJ}K!$G%*%V%8%'%/%H$r:n$k$+$i(B > > $B31(B> $BJ?5$$J$s$G$9$M!#$=!<$9$k$H(Bam_dump$B$N%*!<%P!<%i%$%I$O5$$r$D$1$J$$$H(B > > $B31(B> $B$$$1$^$;$s$M!#(B > > > > $B$H!"$*$b$C$?$s$@$1$I$&$^$/$G$-$F$J$+$C$?$C$9!#(B > > > > class R < Regexp > > def initialize(src, opt) > > super(src, opt) > > @foo = 'foo' > > end > > attr_reader :foo > > end > > > > $B$r(Bdump$B$9$k$K$O$I$&$7$?$i$$$$$+$J$!!#(B > > $B$&$%$`!#$3$3$G$b!"0lHL$K$d$k$K$O(B Marshal.load $B$KMj$i$6$k$rF@$J$$5$$,$9(B > $B$k(B... T_XXX $B$4$H$KI,MW$J$N$@$J!#(B $B;n$7$F$_$^$7$?!#M=B,$5$l$?$3$H$G$9$,!"(BMarshal.load $B$KMj$l$P2DG=$G$9$M!#(B class Regexp def Regexp.basic_new(str, opts=nil) if self == Regexp return Regexp.new(str, opts) else m = MarshalStringWriter.new m.uclass(self) {m.regexp str, opts} return Marshal.load(m.out) end end def am_dump(am) name = yield am.print "#{name} = #{am.put(self.class)}.basic_new(#{self.source.dump}, #{self.options})\n" am.put_instance_variables(self, name) end end # $B$I!<$;$3$3$@$1$G$O:Q$^$J$$$N$G(B MarshalStringWriter $B$H$$$&%/%i%9$r:n$C(B # $B$F$7$^$C$?(B... basic_new $B$K0z?t$r$D$1$F$7$^$C$?$N$,E,@Z$@$C$?$N$+$I$&$+$O$h$/$o$+$j$^(B $B$;$s!#L>A0$rJQ$($k$Y$-$@$C$?$+$bCN$l$J$$$G$9$M!#(B -- [$BEDCf(B $BE/(B][$B$?$J$+(B $B$"$-$i(B][Tanaka Akira] $B!V$U$($m(B! $B$o$+$a$A$c$s:n@o$G$9$(C"=$B!W(B(Little Worker, $B7KM7@84](B)