Just a ping here. Does anyone see why this isn't the correct approach? Are there some possible existing uses where this might break someone's code? Seems more likely that the existing implementation would break people's code.
On Wed, Feb 27, 2013 at 9:35 PM, Bill Moseley <mose...@hank.org> wrote: > Or to be a bit more concise -- I would think this is enough: > > sub thaw { > my ( $class, $json, @args ) = @_; > return $class->unpack( JSON::Any->decode( $json ), @args ); > } > > sub freeze { > my ( $self, @args ) = @_; > return JSON::Any->encode( $self->pack( @args ) ); > } > > On Wed, Feb 27, 2013 at 8:38 PM, Bill Moseley <mose...@hank.org> wrote: > >> >> >> On Wed, Feb 27, 2013 at 7:59 PM, Chris Prather <ch...@prather.org> wrote: >> >>> On Wed, Feb 27, 2013 at 10:15 PM, Bill Moseley <mose...@hank.org> wrote: >>> > I had forgot about this until today until I saw errors in some new >>> code. >>> > >>> > Is there anything below that needs clarification? IIRC, I got stuck >>> > because I didn't really follow what the tests were attempting to test. >>> > Does the test need to do anything more than make sure wide characters >>> get >>> > turned into octets when freezing and then when thawed it's character >>> data >>> > again (i.e. the utf8 flag survives round trip)? >>> > >>> > Thanks, >>> >>> Looking at the JSON::Any code this *may* be a bug with that. At some >>> point in time (someone) had to add the line: >>> >>> $conf->{utf8} = !$conf->{utf8} >>> >> >> Maybe I'm not following, but the bug is in MooseX::Storage::Format::JSON. >> this line should just be removed. >> >> utf8::decode($json) if !utf8::is_utf8($json) and utf8::valid($json); # if >> it's valid utf8 mark it as such >> >> That's just wrong a number of ways. >> >> $ perl -le 'use utf8; print "Yes, ASCII is valid utf8" if utf8::valid( >> "just ASCII" )' >> Yes, ASCII is valid utf8 >> >> plus the fact that JSON just encoded into octets -- so why decode back to >> characters? >> >> $ perl -MJSON::Any -MEncode -wle 'print "Happy octets" unless >> Encode::is_utf8( JSON::Any->new->objToJson( { smile => "I am wide >> \N{U+263A}" } ))' >> Happy octets >> >> All the specific "utf8" code doesn't need to be there. Even in thaw. >> The character data (flagged correctly with the utf8 flag) survives round >> trip w/o needing to use "utf8" anywhere. >> >> $ perl -MJSON::Any -MEncode -wle 'print "Happy characters" if >> Encode::is_utf8( JSON::Any->new->jsonToObj( JSON::Any->new->objToJson( { >> smile => "I am wide \N{U+263A}" } ))->{smile} )' >> Happy characters >> >> Sorry, if the one-liners are a bit hard to read. >> >> >> -- >> Bill Moseley >> mose...@hank.org > > > > > -- > Bill Moseley > mose...@hank.org > -- Bill Moseley mose...@hank.org