App-MARC-Validator

 view release on metacpan or  search on metacpan

Validator/Utils.pm  view on Meta::CPAN


our $VERSION = 0.09;

sub obj_to_json {
	my ($self, $report) = @_;

	my $struct_hr = {};
	foreach my $plugin (@{$report->plugins}) {
		$struct_hr->{$plugin->name} = {
			'checks' => {
				'not_valid' => {},
			},
			'datetime' => $report->datetime->iso8601,
			'module_name' => $plugin->module_name,
			'module_version' => $plugin->version,
			'name' => $plugin->name,
		},
		my $not_valid_hr = $struct_hr->{$plugin->name}->{'checks'}->{'not_valid'};
		foreach my $plugin_errors (@{$plugin->plugin_errors}) {
			$not_valid_hr->{$plugin_errors->record_id} = [];
			foreach my $error (@{$plugin_errors->errors}) {
				push @{$not_valid_hr->{$plugin_errors->record_id}}, {
					'error' => $error->error,
					'params' => $error->params,
				};
			}
		}
	}

	# JSON output.
	my $j = Cpanel::JSON::XS->new;
	if ($self->{'_opts'}->{'p'}) {

Validator/Utils.pm  view on Meta::CPAN

         },
 };
 my $json = obj_to_json($self, $report);

 print $json;

 # Output:
 # {
 #    "foo" : {
 #       "checks" : {
 #          "not_valid" : {
 #             "id1" : [
 #                {
 #                   "error" : "Error #1",
 #                   "params" : {
 #                      "key" : "value"
 #                   }
 #                },
 #                {
 #                   "error" : "Error #2",
 #                   "params" : {

examples/obj_to_json.pl  view on Meta::CPAN

        },
};
my $json = obj_to_json($self, $report);

print $json;

# Output:
# {
#    "foo" : {
#       "checks" : {
#          "not_valid" : {
#             "id1" : [
#                {
#                   "error" : "Error #1",
#                   "params" : {
#                      "key" : "value"
#                   }
#                },
#                {
#                   "error" : "Error #2",
#                   "params" : {

t/App-MARC-Validator/04-run.t  view on Meta::CPAN

@ARGV = (
	'-p',
	'-u',
	'plugin:MARC::Validator::Plugin::Field008',
	$data_dir->file('cnb003755915.xml')->s,
);
$right_ret = <<'END';
{
   "field_008" : {
      "checks" : {
         "not_valid" : {
            "1426868" : [
               {
                  "error" : "Bad length of MARC leader.",
                  "params" : {
                     "Length" : 23
                  }
               }
            ]
         }
      },



( run in 0.595 second using v1.01-cache-2.11-cpan-9581c071862 )