Any::Renderer::JavaScript::Anon - renders anonymous JavaScript data structure


Any-Renderer documentation Contained in the Any-Renderer distribution.

Index


Code Index:

NAME

Top

Any::Renderer::JavaScript::Anon - renders anonymous JavaScript data structure

SYNOPSIS

Top

  use Any::Renderer;

  my %options = ( 'VariableName' => 'myvariable' );
  my $format = "JavaScript::Anon";
  my $r = new Any::Renderer ( $format, \%options );

  my $data_structure = [...]; # arbitrary structure code
  my $string = $r->render ( $data_structure );

You can get a list of all formats that this module handles using the following syntax:

  my $list_ref = Any::Renderer::JavaScript::Anon::available_formats ();

Also, determine whether or not a format requires a template with requires_template:

  my $bool = Any::Renderer::JavaScript::Anon::requires_template ( $format );

DESCRIPTION

Top

Any::Renderer::JavaScript::Anon renders any Perl data structure passed to it as a JavaScript anonymous data structure.

FORMATS

Top

JavaScript::Anon (aka Javascript::Anon)

A more compact equivalent to the JavaScript format, using anonymous structures in the assignment.

  perl -MAny::Renderer -e "print Any::Renderer->new('Javascript::Anon')->render({a => 1, b => [2,3]})"

results in:

  var script_output = { a: 1, b: [ 2, 3 ] };

JSON

Use the format 'JSON' to return completely anonymous data structures - i.e. with no leading "var script_output = " and no trailing ";"

  perl -MAny::Renderer -e "print Any::Renderer->new('JSON')->render({a => 1, b => [2,3]})"

results in:

  { a: 1, b: [ 2, 3 ] }

METHODS

Top

$r = new Any::Renderer::JavaScript::Anon($format,\%options)

See FORMATS for a description of valid values for $format. See OPTIONS for a description of valid %options.

$scalar = $r->render($data_structure)

The main method.

$bool = Any::Renderer::JavaScript::Anon::requires_template($format)

False in this case.

$list_ref = Any::Renderer::JavaScript::Anon::available_formats()

See FORMATS for a list.

OPTIONS

Top

VariableName

Name of the javascript variable that the new data structure is to be assigned to. Defaults to script_output. Does not apply when using JSON format.

SEE ALSO

Top

Data::JavaScript::Anon, Any::Renderer

VERSION

Top

$Revision: 1.9 $ on $Date: 2006/08/21 08:30:24 $ by $Author: johna $

AUTHOR

Top

Matt Wilson <matthew.wilson@bbc.co.uk>

COPYRIGHT

Top


Any-Renderer documentation Contained in the Any-Renderer distribution.

package Any::Renderer::JavaScript::Anon;

# $Id: Anon.pm,v 1.9 2006/08/21 08:30:24 johna Exp $

use strict;
use vars qw($VERSION %Formats);
use Data::JavaScript::Anon;

$VERSION = sprintf"%d.%03d", q$Revision: 1.9 $ =~ /: (\d+)\.(\d+)/;
%Formats = map {$_ => 1} @{available_formats()};

sub new
{
  my ( $class, $format, $options ) = @_;
  die("The format '$format' isn't supported") unless($Formats{$format});

  my $self = {
    'format'  => $format,
    'options' => $options,
  };

  bless $self, $class;

  return $self;
}

sub render
{
  my ( $self, $data ) = @_;

  if ($self->{'format'} eq 'JSON') {
    TRACE ( "Rendering to JSON" );
    DUMP ( $data );

    return Data::JavaScript::Anon->anon_dump ( $data ); 
  } else {
    TRACE ( "Rendering to Data::JavaScript::Anon" );
    DUMP ( $data );

    my $variable_name = $self->{ 'options' }->{ 'VariableName' } || 'script_output';
    return Data::JavaScript::Anon->var_dump ( $variable_name, $data ); 
  }
}

sub requires_template
{
  return 0;
}

sub available_formats
{
  return [ "JavaScript::Anon", "Javascript::Anon", "JSON" ];
}

sub TRACE {}
sub DUMP {}

1;