File Coverage

blib/lib/JSON/Structure.pm
Criterion Covered Total %
statement 26 32 81.2
branch n/a
condition n/a
subroutine 9 11 81.8
pod 2 2 100.0
total 37 45 82.2


line stmt bran cond sub pod time code
1             package JSON::Structure;
2              
3 12     12   77 use strict;
  12         23  
  12         545  
4 12     12   57 use warnings;
  12         19  
  12         560  
5 12     12   166 use v5.20;
  12         54  
6              
7             our $VERSION = '0.6.0';
8              
9 12     12   5878 use JSON::Structure::Types qw(:all);
  12         36  
  12         2439  
10 12     12   7061 use JSON::Structure::ErrorCodes qw(:all);
  12         51  
  12         7991  
11 12     12   7154 use JSON::Structure::JsonSourceLocator;
  12         38  
  12         547  
12 12     12   8208 use JSON::Structure::SchemaValidator;
  12         53  
  12         686  
13 12     12   9654 use JSON::Structure::InstanceValidator;
  12         377  
  12         728  
14              
15 12     12   99 use Exporter 'import';
  12         26  
  12         2485  
16              
17             our @EXPORT_OK = qw(
18             validate_schema
19             validate_instance
20             SchemaValidator
21             InstanceValidator
22             JsonSourceLocator
23             );
24              
25             our %EXPORT_TAGS = ( all => \@EXPORT_OK, );
26              
27             =head1 NAME
28              
29             JSON::Structure - JSON Structure validation library for Perl
30              
31             =head1 SYNOPSIS
32              
33             use JSON::Structure qw(:all);
34             use JSON::MaybeXS;
35            
36             # Validate a schema
37             my $schema = decode_json($schema_json);
38             my $validator = JSON::Structure::SchemaValidator->new();
39             my $result = $validator->validate($schema, $schema_json);
40            
41             if ($result->is_valid) {
42             say "Schema is valid!";
43             } else {
44             for my $error (@{$result->errors}) {
45             say $error->to_string;
46             }
47             }
48            
49             # Validate an instance against a schema
50             my $instance_validator = JSON::Structure::InstanceValidator->new(schema => $schema);
51             my $instance = decode_json($instance_json);
52             my $result = $instance_validator->validate($instance, $instance_json);
53              
54             =head1 DESCRIPTION
55              
56             This module provides validators for JSON Structure schemas and instances,
57             conforming to the JSON Structure Core specification.
58              
59             JSON Structure is a type-oriented schema language for JSON, designed for
60             defining data structures that can be validated and mapped to programming
61             language types.
62              
63             =head1 FUNCTIONS
64              
65             =head2 validate_schema($schema, $source_text)
66              
67             Convenience function to validate a JSON Structure schema.
68              
69             my $result = validate_schema($schema, $schema_json);
70              
71             =head2 validate_instance($instance, $schema, $source_text)
72              
73             Convenience function to validate a JSON instance against a schema.
74              
75             my $result = validate_instance($instance, $schema, $instance_json);
76              
77             =head1 SEE ALSO
78              
79             =over 4
80              
81             =item * L
82              
83             =item * L
84              
85             =item * L
86              
87             =item * L
88              
89             =back
90              
91             =head1 AUTHOR
92              
93             JSON Structure Project
94              
95             =head1 LICENSE
96              
97             MIT License
98              
99             =cut
100              
101             sub validate_schema {
102 0     0 1   my ( $schema, $source_text ) = @_;
103 0           my $validator = JSON::Structure::SchemaValidator->new();
104 0           return $validator->validate( $schema, $source_text );
105             }
106              
107             sub validate_instance {
108 0     0 1   my ( $instance, $schema, $source_text ) = @_;
109 0           my $validator =
110             JSON::Structure::InstanceValidator->new( schema => $schema );
111 0           return $validator->validate( $instance, $source_text );
112             }
113              
114             1;