Changeset 1744

Show
Ignore:
Timestamp:
01/12/06 04:13:36
Author:
miyagawa
Message:

0.02; handle multibytes

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • JSON-Syck/trunk/Changes

    r1740 r1744  
     10.02 2006/01/12 
     2        * Now handles non-ASCII utf-8 byte strings correctly 
     3          (Thanks to Audrey Tang, Douglas Crockford and why the luckystiff) 
     4 
    150.01 
    26        * Initial release, copied from Audrey Tang's YAML-Syck distro 
  • JSON-Syck/trunk/lib/JSON/Syck.pm

    r1740 r1744  
    55use DynaLoader; 
    66 
    7 our $VERSION = '0.01'; 
     7our $VERSION = '0.02'; 
    88our @EXPORT_OK  = qw( Dump Load ); 
    99our @ISA     = qw( Exporter DynaLoader ); 
     
    1111__PACKAGE__->bootstrap; 
    1212 
    13 $JSON::Syck::ImplicitTyping = 1; 
    14 $JSON::Syck::Headless       = 1; 
     13$JSON::Syck::ImplicitTyping  = 1; 
     14$JSON::Syck::Headless        = 1; 
     15$JSON::Syck::ImplicitUnicode = 0; 
    1516 
    16171; 
  • JSON-Syck/trunk/perl_syck.h

    r1741 r1744  
    2323#  define SEQ_NONE      seq_inline 
    2424#  define MAP_NONE      map_inline 
     25#  define COND_FOLD(x)  1 
    2526#  define TYPE_IS_NULL(x) ((x == NULL) || (strcmp( x, "str" ) == 0)) 
    2627#  define OBJOF(a)        (a) 
     
    3435#  define SEQ_NONE      seq_none 
    3536#  define MAP_NONE      map_none 
     37#  define COND_FOLD(x)  (SvUTF8(sv) 
    3638#  define TYPE_IS_NULL(x) (x == NULL) 
    3739#  define OBJOF(a)        (*tag ? tag : a) 
     
    434436    switch (SvTYPE(sv)) { 
    435437        case SVt_NULL: { return; } 
    436         case SVt_PVIV: 
    437         case SVt_PVNV: { 
    438             if (sv_len(sv) > 0) { 
    439                 syck_emit_scalar(e, OBJOF("string"), SvNIOK(sv) ? SCALAR_NUMBER : SCALAR_STRING, 0, 0, 0, SvPV_nolen(sv), sv_len(sv)); 
    440             } 
    441             else { 
    442                 syck_emit_scalar(e, OBJOF("string"), SCALAR_QUOTED, 0, 0, 0, "", 0); 
    443             } 
    444             break; 
    445         } 
    446438        case SVt_IV: 
    447439        case SVt_NV: { 
     
    455447        } 
    456448        case SVt_PV: 
     449        case SVt_PVIV: 
     450        case SVt_PVNV: 
    457451        case SVt_PVMG: 
    458452        case SVt_PVBM: 
    459453        case SVt_PVLV: { 
    460454            if (sv_len(sv) > 0) { 
    461                 if (SvUTF8(sv)) { 
     455                if (SvNIOK(sv)) { 
     456                    syck_emit_scalar(e, OBJOF("string"), SCALAR_NUMBER, 0, 0, 0, SvPV_nolen(sv), sv_len(sv)); 
     457                } 
     458                else if (COND_FOLD(sv)) { 
    462459                    enum scalar_style old_s = e->style; 
    463460                    e->style = SCALAR_UTF8; 
  • JSON-Syck/trunk/t/01_json.t

    r1741 r1744  
    1010$Data::Dumper::Indent = 0; 
    1111$Data::Dumper::Terse  = 1; 
    12  
    13 #$JSON::Syck::ImplicitUnicode = 1; 
    1412 
    1513my @tests = ( 
     
    3129plan tests => scalar @tests * (1 + $HAS_JSON); 
    3230 
    33 my $conv = $HAS_JSON ? JSON::Converter->new : undef; 
    34  
    3531for my $test (@tests) { 
    3632    my $data = eval { JSON::Syck::Load($test) }; 
     
    4137        s/([,:]) /$1/eg; 
    4238    } 
    43     is $json, $test, "roundtrip $test -> " . Dumper($data) . " -> $json"; 
     39 
     40    my $desc = "roundtrip $test -> " . Dumper($data) . " -> $json"; 
     41    utf8::encode($desc); 
     42    is $json, $test, $desc; 
    4443 
    4544    # try parsing the data with JSON.pm