ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/CBOR-XS/XS.pm
(Generate patch)

Comparing CBOR-XS/XS.pm (file contents):
Revision 1.48 by root, Thu Feb 25 14:22:49 2016 UTC vs.
Revision 1.50 by root, Sun Apr 24 09:11:14 2016 UTC

481 481
482=item hash references 482=item hash references
483 483
484Perl hash references become CBOR maps. As there is no inherent ordering in 484Perl hash references become CBOR maps. As there is no inherent ordering in
485hash keys (or CBOR maps), they will usually be encoded in a pseudo-random 485hash keys (or CBOR maps), they will usually be encoded in a pseudo-random
486order. This order can be different each time a hahs is encoded. 486order. This order can be different each time a hash is encoded.
487 487
488Currently, tied hashes will use the indefinite-length format, while normal 488Currently, tied hashes will use the indefinite-length format, while normal
489hashes will use the fixed-length format. 489hashes will use the fixed-length format.
490 490
491=item array references 491=item array references
907C<URI::TO_CBOR> method again results in a CBOR URI value. 907C<URI::TO_CBOR> method again results in a CBOR URI value.
908 908
909=back 909=back
910 910
911=cut 911=cut
912
913our %FILTER = (
914 # 0 # rfc4287 datetime, utf-8
915 # 1 # unix timestamp, any
916
917 2 => sub { # pos bigint
918 require Math::BigInt;
919 Math::BigInt->new ("0x" . unpack "H*", pop)
920 },
921
922 3 => sub { # neg bigint
923 require Math::BigInt;
924 -Math::BigInt->new ("0x" . unpack "H*", pop)
925 },
926
927 4 => sub { # decimal fraction, array
928 require Math::BigFloat;
929 Math::BigFloat->new ($_[1][1] . "E" . $_[1][0])
930 },
931
932 5 => sub { # bigfloat, array
933 require Math::BigFloat;
934 scalar Math::BigFloat->new ($_[1][1])->blsft ($_[1][0], 2)
935 },
936
937 21 => sub { pop }, # expected conversion to base64url encoding
938 22 => sub { pop }, # expected conversion to base64 encoding
939 23 => sub { pop }, # expected conversion to base16 encoding
940
941 # 24 # embedded cbor, byte string
942
943 32 => sub {
944 require URI;
945 URI->new (pop)
946 },
947
948 # 33 # base64url rfc4648, utf-8
949 # 34 # base64 rfc46484, utf-8
950 # 35 # regex pcre/ecma262, utf-8
951 # 36 # mime message rfc2045, utf-8
952);
953
954 912
955=head1 CBOR and JSON 913=head1 CBOR and JSON
956 914
957CBOR is supposed to implement a superset of the JSON data model, and is, 915CBOR is supposed to implement a superset of the JSON data model, and is,
958with some coercion, able to represent all JSON texts (something that other 916with some coercion, able to represent all JSON texts (something that other
1096 Math::BigFloat->new ($_[1][1] . "E" . $_[1][0]) 1054 Math::BigFloat->new ($_[1][1] . "E" . $_[1][0])
1097 }, 1055 },
1098 1056
1099 5 => sub { # bigfloat, array 1057 5 => sub { # bigfloat, array
1100 require Math::BigFloat; 1058 require Math::BigFloat;
1101 scalar Math::BigFloat->new ($_[1][1])->blsft ($_[1][0], 2) 1059 scalar Math::BigFloat->new ($_[1][1]) * Math::BigFloat->new (2)->bpow ($_[1][0])
1102 }, 1060 },
1103 1061
1104 21 => sub { pop }, # expected conversion to base64url encoding 1062 21 => sub { pop }, # expected conversion to base64url encoding
1105 22 => sub { pop }, # expected conversion to base64 encoding 1063 22 => sub { pop }, # expected conversion to base64 encoding
1106 23 => sub { pop }, # expected conversion to base16 encoding 1064 23 => sub { pop }, # expected conversion to base16 encoding

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines