| 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 | 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 | ||||||
| 44 | sub 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 | ||||||
| 56 | sub 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 | ||||||
| 68 | sub output { | |||||
| 69 | 4 | 91 | my $self = shift; | |||
| 70 | ||||||
| 71 | 4 | 86 | return to_json( $self->{data} ); | |||
| 72 | } | |||||
| 73 | ||||||
| 74 | 1; | |||||