make true/false available as subs or methods on MaybeXS itself
Graham Knop [Sun, 28 Jan 2018 02:13:28 +0000 (03:13 +0100)]
lib/JSON/MaybeXS.pm
t/lib/is_bool.pm

index eee84f2..ff0a580 100644 (file)
@@ -29,6 +29,9 @@ sub _choose_json_module {
 BEGIN {
     our $JSON_Class = _choose_json_module();
     $JSON_Class->import(qw(encode_json decode_json));
+    no strict 'refs';
+    *$_ = $JSON_Class->can($_)
+      for qw(true false);
 }
 
 our @EXPORT = qw(encode_json decode_json JSON);
@@ -229,6 +232,14 @@ To include JSON-aware booleans (C<true>, C<false>) in your data, just do:
     my $true = JSON()->true;
     my $false = JSON()->false;
 
+The booleans are also available as subs or methods on JSON::MaybeXS.
+
+    use JSON::MaybeXS ();
+    my $true = JSON::MaybeXS::true;
+    my $true = JSON::MaybeXS->true;
+    my $false = JSON::MaybeXS::false;
+    my $false = JSON::MaybeXS->false;
+
 =head1 CONVERTING FROM JSON::Any
 
 L<JSON::Any> used to be the favoured compatibility layer above the various
index 28fd0cf..333b0e3 100644 (file)
@@ -21,4 +21,28 @@ ok(
     JSON() . ': int does not decode to a bool',
 );
 
+is(
+    JSON::MaybeXS::encode_json([JSON::MaybeXS::true]),
+    '[true]',
+    JSON() . ': true sub encodes as correct boolean',
+);
+
+is(
+    JSON::MaybeXS::encode_json([JSON::MaybeXS->true]),
+    '[true]',
+    JSON() . ': true method encodes as correct boolean',
+);
+
+is(
+    JSON::MaybeXS::encode_json([JSON::MaybeXS::false]),
+    '[false]',
+    JSON() . ': false sub encodes as correct boolean',
+);
+
+is(
+    JSON::MaybeXS::encode_json([JSON::MaybeXS->false]),
+    '[false]',
+    JSON() . ': false method encodes as correct boolean',
+);
+
 1;