App-Kritika
view release on metacpan or search on metacpan
kritika.fatpack view on Meta::CPAN
$fatpacked{"File/HomeDir/Windows.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'FILE_HOMEDIR_WINDOWS';
package File::HomeDir::Windows;use 5.00503;use strict;use Carp ();use File::Spec ();use File::HomeDir::Driver ();use vars qw{$VERSION @ISA};BEGIN {$VERSION='0.05';@ISA='File::HomeDir::Driver'}sub CREATE () {1}sub my_home {my$class=shift;if (exists$...
FILE_HOMEDIR_WINDOWS
$fatpacked{"File/Which.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'FILE_WHICH';
package File::Which;use strict;use warnings;use Exporter ();use File::Spec ();our$VERSION='0.05';our@ISA='Exporter';our@EXPORT='which';our@EXPORT_OK='where';use constant IS_VMS=>($^O eq 'VMS');use constant IS_MAC=>($^O eq 'MacOS');use constant IS_D...
FILE_WHICH
$fatpacked{"JSON.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'JSON';
package JSON;use strict;use Carp ();use Exporter;BEGIN {@JSON::ISA='Exporter'}@JSON::EXPORT=qw(from_json to_json jsonToObj objToJson encode_json decode_json);BEGIN {$JSON::VERSION='0.05';$JSON::DEBUG=0 unless (defined$JSON::DEBUG);$JSON::DEBUG=$ENV...
require B;
local $^W;
no strict 'refs';
*{"${JSON::Backend}\::encode"} = sub {
# only works with Perl 5.18+
local *UNIVERSAL::TO_JSON = sub {
my $b_obj = B::svref_2object( $_[0] );
return $b_obj->isa('B::HV') ? { %{ $_[0] } }
: $b_obj->isa('B::AV') ? [ @{ $_[0] } ]
: undef
;
};
$org_encode->(@_);
};
| if (!$_UNIV_CONV_BLESSED++);next}push@what_to_export,$tag}return if ($no_export);__PACKAGE__->export_to_level(1,$pkg,@what_to_export)}sub jsonToObj {my$alternative='from_json';if (defined $_[0]and UNIVERSAL::isa($_[0],'JSON')){shift @...
use $module $required_version ();
|;if ($@){if (defined$opt and $opt & $_INSTALL_DONT_DIE){$JSON::DEBUG and Carp::carp "Can't load $module...($@)";return 0}Carp::croak $@}$JSON::BackendModuleXS=$module;return 1}sub _load_xs {my ($module,$opt)=@_;__load_xs($module,$opt)or return...
#
# Helper classes for Backend Module (XS)
#
package JSON::Backend::XS;
sub init {
kritika.fatpack view on Meta::CPAN
$perl_scalar = $json->decode( $json_text );
$pretty_printed = $json->pretty->encode( $perl_scalar ); # pretty-printing
=head1 VERSION
2.97001
=head1 DESCRIPTION
This module is a thin wrapper for L<JSON::XS>-compatible modules with a few
additional features. All the backend modules convert a Perl data structure
to a JSON text as of RFC4627 (which we know is obsolete but we still stick
to; see below for an option to support part of RFC7159) and vice versa.
This module uses L<JSON::XS> by default, and when JSON::XS is not available,
this module falls back on L<JSON::PP>, which is in the Perl core since 5.14.
If JSON::PP is not available either, this module then falls back on
JSON::backportPP (which is actually JSON::PP in a different .pm file)
bundled in the same distribution as this module. You can also explicitly
specify to use L<Cpanel::JSON::XS>, a fork of JSON::XS by Reini Urban.
All these backend modules have slight incompatibilities between them,
including extra features that other modules don't support, but as long as you
use only common features (most important ones are described below), migration
from backend to backend should be reasonably easy. For details, see each
backend module you use.
=head1 CHOOSING BACKEND
This module respects an environmental variable called C<PERL_JSON_BACKEND>
when it decides a backend module to use. If this environmental variable is
not set, it tries to load JSON::XS, and if JSON::XS is not available, it
falls back on JSON::PP, and then JSON::backportPP if JSON::PP is not available
either.
If you always don't want it to fall back on pure perl modules, set the
variable like this (C<export> may be C<setenv>, C<set> and the likes,
depending on your environment):
> export PERL_JSON_BACKEND=JSON::XS
If you prefer Cpanel::JSON::XS to JSON::XS, then:
> export PERL_JSON_BACKEND=Cpanel::JSON::XS,JSON::XS,JSON::PP
You may also want to set this variable at the top of your test files, in order
not to be bothered with incompatibilities between backends (you need to wrap
this in C<BEGIN>, and set before actually C<use>-ing JSON module, as it decides
its backend as soon as it's loaded):
BEGIN { $ENV{PERL_JSON_BACKEND}='JSON::backportPP'; }
use JSON;
=head1 USING OPTIONAL FEATURES
There are a few options you can set when you C<use> this module:
=over
=item -support_by_pp
BEGIN { $ENV{PERL_JSON_BACKEND} = 'JSON::XS' }
use JSON -support_by_pp;
my $json = JSON->new;
# escape_slash is for JSON::PP only.
$json->allow_nonref->escape_slash->encode("/");
With this option, this module loads its pure perl backend along with
its XS backend (if available), and lets the XS backend to watch if you set
a flag only JSON::PP supports. When you do, the internal JSON::XS object
is replaced with a newly created JSON::PP object with the setting copied
from the XS object, so that you can use JSON::PP flags (and its slower
C<decode>/C<encode> methods) from then on. In other words, this is not
something that allows you to hook JSON::XS to change its behavior while
keeping its speed. JSON::XS and JSON::PP objects are quite different
(JSON::XS object is a blessed scalar reference, while JSON::PP object is
a blessed hash reference), and can't share their internals.
To avoid needless overhead (by copying settings), you are advised not
to use this option and just to use JSON::PP explicitly when you need
JSON::PP features.
=item -convert_blessed_universally
use JSON -convert_blessed_universally;
my $json = JSON->new->allow_nonref->convert_blessed;
my $object = bless {foo => 'bar'}, 'Foo';
$json->encode($object); # => {"foo":"bar"}
JSON::XS-compatible backend modules don't encode blessed objects by
default (except for their boolean values, which are typically blessed
JSON::PP::Boolean objects). If you need to encode a data structure
that may contain objects, you usually need to look into the structure
and replace objects with alternative non-blessed values, or enable
C<convert_blessed> and provide a C<TO_JSON> method for each object's
(base) class that may be found in the structure, in order to let the
methods replace the objects with whatever scalar values the methods
return.
If you need to serialise data structures that may contain arbitrary
kritika.fatpack view on Meta::CPAN
If you don't want to import functional interfaces, but you also want to
use any of the above options, add C<-no_export> to the option list.
# no functional interfaces, while JSON::PP support is enabled.
use JSON -support_by_pp, -no_export;
=back
=head1 FUNCTIONAL INTERFACE
This section is taken from JSON::XS. C<encode_json> and C<decode_json>
are exported by default.
This module also exports C<to_json> and C<from_json> for backward
compatibility. These are slower, and may expect/generate different stuff
from what C<encode_json> and C<decode_json> do, depending on their
options. It's better just to use Object-Oriented interfaces than using
these two functions.
=head2 encode_json
kritika.fatpack view on Meta::CPAN
Returns true if the passed scalar represents either JSON::true or
JSON::false, two constants that act like C<1> and C<0> respectively
and are also used to represent JSON C<true> and C<false> in Perl strings.
See L<MAPPING>, below, for more information on how JSON values are mapped to
Perl.
=head1 COMMON OBJECT-ORIENTED INTERFACE
This section is also taken from JSON::XS.
The object oriented interface lets you configure your own encoding or
decoding style, within the limits of supported formats.
=head2 new
$json = JSON->new
Creates a new JSON::XS-compatible backend object that can be used to de/encode JSON
strings. All boolean flags described below are by default I<disabled>.
The mutators for flags all return the backend object again and thus calls can
be chained:
my $json = JSON->new->utf8->space_after->encode({a => [1,2]})
=> {"a": [1, 2]}
=head2 ascii
kritika.fatpack view on Meta::CPAN
=head1 ADDITIONAL METHODS
The following methods are for this module only.
=head2 backend
$backend = $json->backend
Since 2.92, C<backend> method returns an abstract backend module used currently,
which should be JSON::Backend::XS (which inherits JSON::XS or Cpanel::JSON::XS),
or JSON::Backend::PP (which inherits JSON::PP), not to monkey-patch the actual
backend module globally.
If you need to know what is used actually, use C<isa>, instead of string comparison.
=head2 is_xs
$boolean = $json->is_xs
Returns true if the backend inherits JSON::XS or Cpanel::JSON::XS.
=head2 is_pp
$boolean = $json->is_pp
Returns true if the backend inherits JSON::PP.
=head2 property
$settings = $json->property()
Returns a reference to a hash that holds all the common flag settings.
$json = $json->property('utf8' => 1)
$value = $json->property('utf8') # 1
You can use this to get/set a value of a particular flag.
=head1 INCREMENTAL PARSING
This section is also taken from JSON::XS.
In some cases, there is the need for incremental parsing of JSON
texts. While this module always has to keep both JSON text and resulting
Perl data structure in memory at one time, it does allow you to parse a
JSON stream incrementally. It does so by accumulating text until it has
a full JSON object, which it then can decode. This process is similar to
using C<decode_prefix> to see if a full JSON object is available, but
is much more efficient (and can be implemented with a minimum of method
calls).
kritika.fatpack view on Meta::CPAN
This completely resets the incremental parser, that is, after this call,
it will be as if the parser had never parsed anything.
This is useful if you want to repeatedly parse JSON objects and want to
ignore any trailing data, which means you have to reset the parser after
each successful decode.
=head1 MAPPING
Most of this section is also taken from JSON::XS.
This section describes how the backend modules map Perl values to JSON values and
vice versa. These mappings are designed to "do the right thing" in most
circumstances automatically, preserving round-tripping characteristics
(what you put in comes out as something equivalent).
For the more enlightened: note that in the following descriptions,
lowercase I<perl> refers to the Perl interpreter, while uppercase I<Perl>
refers to the abstract Perl language itself.
kritika.fatpack view on Meta::CPAN
encode_json [\0,JSON::true] # yields [false,true]
=item JSON::true, JSON::false, JSON::null
These special values become JSON true and JSON false values,
respectively. You can also use C<\1> and C<\0> directly if you want.
=item blessed objects
Blessed objects are not directly representable in JSON, but C<JSON::XS>
allows various ways of handling objects. See L<OBJECT SERIALISATION>,
below, for details.
=item simple scalars
Simple Perl scalars (any scalar that is not a reference) are the most
difficult objects to encode: this module will encode undefined scalars as
JSON C<null> values, scalars that have last been used in a string context
before encoding as JSON strings, and anything else as number value:
kritika.fatpack view on Meta::CPAN
=item 3. none of the above
If none of the settings are enabled or the respective methods are missing,
this module throws an exception.
=back
=head1 ENCODING/CODESET FLAG NOTES
This section is taken from JSON::XS.
The interested reader might have seen a number of flags that signify
encodings or codesets - C<utf8>, C<latin1> and C<ascii>. There seems to be
some confusion on what these do, so here is a short comparison:
C<utf8> controls whether the JSON text created by C<encode> (and expected
by C<decode>) is UTF-8 encoded or not, while C<latin1> and C<ascii> only
control whether C<encode> escapes character values outside their respective
codeset range. Neither of these flags conflict with each other, although
some combinations make less sense than others.
kritika.fatpack view on Meta::CPAN
=item https://github.com/makamaka/JSON/issues
=back
Please report bugs and feature requests on decoding/encoding
and boolean behaviors to the author of the backend module you
are using.
=head1 SEE ALSO
L<JSON::XS>, L<Cpanel::JSON::XS>, L<JSON::PP> for backends.
L<JSON::MaybeXS>, an alternative that prefers Cpanel::JSON::XS.
C<RFC4627>(L<http://www.ietf.org/rfc/rfc4627.txt>)
=head1 AUTHOR
Makamaka Hannyaharamitu, E<lt>makamaka[at]cpan.orgE<gt>
JSON::XS was written by Marc Lehmann <schmorp[at]schmorp.de>
The release of this new version owes to the courtesy of Marc Lehmann.
=head1 COPYRIGHT AND LICENSE
Copyright 2005-2013 by Makamaka Hannyaharamitu
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
( run in 0.357 second using v1.01-cache-2.11-cpan-05444aca049 )