X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FTemplate%2FPlugin%2FJSON.pm;h=0586511c68ccf517b2ef50e080c41108eab5f8a2;hb=0ebb8f829ac2d23b65e8d993c7d03aa0b172b637;hp=71e49c33dff3cea3da8798bda2f007842aadeafd;hpb=7fa5f43bdbea4e4136b93f8de248782d25c9993d;p=kivitendo-erp.git diff --git a/SL/Template/Plugin/JSON.pm b/SL/Template/Plugin/JSON.pm index 71e49c33d..0586511c6 100644 --- a/SL/Template/Plugin/JSON.pm +++ b/SL/Template/Plugin/JSON.pm @@ -1,8 +1,9 @@ package SL::Template::Plugin::JSON; +use strict; use JSON (); use Carp qw(croak); -use parent qw(Template::Plugin); +use base qw(Template::Plugin); our $VERSION = "0.06"; @@ -11,14 +12,16 @@ sub new { my $self = bless {context => $context, json_args => $args }, $class; - $context->define_vmethod( $_ => json => sub { $self->json(@_) } ) for qw(hash list scalar); + $context->define_vmethod($_, json => sub { $self->json(@_) }) for qw(hash list scalar); + + return $self; } sub json_converter { my ($self, %params) = @_; if (!$self->{json}) { - $self->{json} = JSON->new->allow_nonref(1); + $self->{json} = JSON->new->allow_nonref(1)->convert_blessed(1); my $args = $self->{json_args}; @@ -35,11 +38,11 @@ sub json_converter { sub json { my ($self, $value) = @_; - $self->json_converter->encode($value) . join '-', map { "'$_'" }@_; + $self->json_converter->encode($value); } sub json_decode { - my ( $self, $context, $value ) = @_; + my ( $self, $value ) = @_; $self->json_converter->decode($value); } @@ -47,73 +50,3 @@ sub json_decode { 1; __END__ - -=pod - -=head1 NAME - -Template::Plugin::JSON - Adds a .json vmethod for all TT values. - -=head1 SYNOPSIS - - [% USE JSON ( pretty => 1 ) %]; - - - - or read in JSON - - [% USE JSON %] - [% data = JSON.json_decode(json) %] - [% data.thing %] - -=head1 DESCRIPTION - -This plugin provides a C<.json> vmethod to all value types when loaded. You -can also decode a json string back to a data structure. - -It will load the L module (you probably want L installed for -automatic speed ups). - -Any options on the USE line are passed through to the JSON object, much like L. - -=head1 SEE ALSO - -L, L - -=head1 VERSION CONTROL - -L - -=head1 AUTHOR - -Yuval Kogman - -=head1 COPYRIGHT & LICENSE - -Copyright (c) 2006, 2008 Infinity Interactive, Yuval Kogman. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. - -=cut - -