File Coverage

File:C4/Output/JSONStream.pm
Coverage:100.0%

linestmtbrancondsubtimecode
1package C4::Output::JSONStream;
2#
3# Copyright 2008 LibLime
4#
5# This file is part of Koha.
6#
7# Koha is free software; you can redistribute it and/or modify it under the
8# terms of the GNU General Public License as published by the Free Software
9# Foundation; either version 2 of the License, or (at your option) any later
10# version.
11#
12# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
13# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
14# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
15#
16# You should have received a copy of the GNU General Public License along
17# with Koha; if not, write to the Free Software Foundation, Inc.,
18# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19
20 - 37
=head1 NAME

C4::Output::JSONStream - progressively build JSON data

=head1 SYNOPSIS

my $json = new C4::Output::JSONStream;

$json->param( issues => [ 'yes!', 'please', 'no', { emphasis = 'NO' } ] );
$json->param( stuff => 'realia' );

print $json->output;

=head1 DESCRIPTION

This module allows you to build JSON incrementally.

=cut
38
39
2
2
2
33840
3
69
use strict;
40
2
2
2
9
3
104
use warnings;
41
42
2
2
2
32446
134868
60
use JSON;
43
44sub new {
45
1
211111
    my $class = shift;
46
1
38
    my $self = {
47        data => {},
48        options => {}
49    };
50
51
1
40
    bless $self, $class;
52
53
1
38
    return $self;
54}
55
56sub param {
57
5
4232
    my $self = shift;
58
59
5
54
    if ( @_ % 2 != 0 ) {
60
1
11
        die 'param() received odd number of arguments (should be called with param => "value" pairs)';
61    }
62
63    for ( my $i = 0; $i < $#_; $i += 2 ) {
64
4
78
        $self->{data}->{$_[$i]} = $_[$i + 1];
65
4
40
    }
66}
67
68sub output {
69
4
91
    my $self = shift;
70
71
4
86
    return to_json( $self->{data} );
72}
73
741;