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
4
4
4
62097
74
141
use strict;
40
4
4
4
35
20
260
use warnings;
41
42
4
4
4
105929
226456
167
use JSON;
43
44sub new {
45
2
429947
    my $class = shift;
46
2
24
    my $self = {
47        data => {},
48        options => {}
49    };
50
51
2
30
    bless $self, $class;
52
53
2
28
    return $self;
54}
55
56sub param {
57
10
8703
    my $self = shift;
58
59
10
37
    if ( @_ % 2 != 0 ) {
60
2
26
        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
8
77
        $self->{data}->{$_[$i]} = $_[$i + 1];
65
8
11
    }
66}
67
68sub output {
69
8
63
    my $self = shift;
70
71
8
82
    return to_json( $self->{data} );
72}
73
741;