File: | C4/Output/JSONStream.pm |
Coverage: | 100.0% |
line | stmt | bran | cond | sub | time | code |
---|---|---|---|---|---|---|
1 | package 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 | 849 28 102 | use strict; | |||
40 | 2 2 2 | 31 22 127 | use warnings; | |||
41 | ||||||
42 | 2 2 2 | 49029 640031 45 | use JSON; | |||
43 | ||||||
44 | sub new { | |||||
45 | 1 | 26 | my $class = shift; | |||
46 | 1 | 25 | my $self = { | |||
47 | data => {}, | |||||
48 | options => {} | |||||
49 | }; | |||||
50 | ||||||
51 | 1 | 27 | bless $self, $class; | |||
52 | ||||||
53 | 1 | 25 | return $self; | |||
54 | } | |||||
55 | ||||||
56 | sub param { | |||||
57 | 5 | 9 | my $self = shift; | |||
58 | ||||||
59 | 5 | 16 | 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 | 38 | $self->{data}->{$_[$i]} = $_[$i + 1]; | |||
65 | 4 | 4 | } | |||
66 | } | |||||
67 | ||||||
68 | sub output { | |||||
69 | 4 | 22 | my $self = shift; | |||
70 | ||||||
71 | 4 | 37 | return to_json( $self->{data} ); | |||
72 | } | |||||
73 | ||||||
74 | 1; |