SYNOPSIS

  # Dump an arbitrary structure to javascript
  Data::JavaScript::Anon->anon_dump( [ 'a', 'b', { a => 1, b => 2 } ] );

DESCRIPTION

Data::JavaScript::Anon provides the ability to dump large simple data structures to JavaScript. That is, things that don't need to be a class, or have special methods or whatever.

The method it uses is to write anonymous variables, in the same way you would in Perl. The following shows some examples.

# Perl anonymous array [ 1, 'a', 'Foo Bar' ]

# JavaScript equivalent ( yes, it's exactly the same ) [ 1, 'a', 'Foo Bar' ]

# Perl anonymous hash { foo => 1, bar => 'bar' }

# JavaScript equivalent { foo: 1, bar: 'bar' }

One advantage of doing it in this method is that you do not have to co-ordinate variable names between your \s-1HTML\s0 templates and Perl. You could use a simple Template Toolkit phrase like the following to get data into your \s-1HTML\s0 templates.

var javascript_data = [% data %];

In this way, it doesn't matter \s-1WHAT\s0 the \s-1HTML\s0 template calls a particular variables, the data dumps just the same. This could help you keep the work of JavaScript and Perl programmers ( assuming you were using different people ) seperate, without creating cross-dependencies between their code, such as variable names.

The variables you dump can also be of arbitrary depth and complexity, with a few limitations.

\s-1ARRAY\s0 and \s-1HASH\s0 only

Since arrays and hashs are all that is supported by JavaScript, they are the only things you can use in your structs. Any references or a different underlying type will be detected and an error returned. Note that Data::JavaScript::Anon will use the \s-1UNDERLYING\s0 type of the data. This means that the blessed classes or objects will be ignored and their data based on the object's underlying implementation type. This can be a positive thing, as you can put objects for which you expect a certain dump structure into the data to dump, and it will convert to unblessed, more stupid, JavaScript objects cleanly.

No Circular References

Since circular references can't be defined in a single anonymous struct, they are not allowed. Try something like Data::JavaScript instead. Although not supported, they will be detected, and an error returned.

MAIN METHODS

All methods are called as methods directly, in the form \*(C`Data::JavaScript::Anon->anon_dump( [ 'etc' ] )\*(C'.

anon_dump \s-1STRUCT\s0

The main method of the class, anon_dump takes a single arbitrary data struct, and converts it into an anonymous JavaScript struct.

If needed, the argument can even be a normal text string, although it wouldn't do a lot to it. :)

Returns a string containing the JavaScript struct on success, or \*(C`undef\*(C' if an error is found. As above, but the \*(C`var_dump\*(C' method allows you to specify a variable name, with the resulting JavaScript being \*(C`var name = struct;\*(C'. Note that the method \s-1WILL\s0 put the trailing semi-colon on the string. The \*(C`script_wrap\*(C' method is a quick way of wrapping a normal JavaScript html tag around your JavaScript. When generating the javascript, numbers will be printed directly and not quoted. The \*(C`is_a_number\*(C' method provides convenient access to the test that is used to see if something is a number. The test handles just about everything legal in JavaScript, with the one exception of the exotics, such as Infinite, -Infinit and NaN.

Returns true is a scalar is numeric, or false otherwise.

You may also access method in using an instantiated object.

new \s-1HASH\s0

This will create a Data::JavaScript::Anon object that will allow you to change some of the default behaviors of some methods.

Options: quote_char : Set the quote_char for stirng scalars. Default is '"'.

SECONDARY METHODS

The following are a little less general, but may be of some use. Creates a named variable from a scalar reference. Creates a named variable from an array reference. Creates a named variable from a hash reference.

anon_scalar \$scalar

Creates an anonymous JavaScript value from a scalar reference.

anon_array \@array

Creates an anonymous JavaScript array from an array reference.

anon_hash \%hash

Creates an anonymous JavaScript object from a hash reference. Applys the formatting for a key in a JavaScript object

SUPPORT

Bugs should be reported via the \s-1CPAN\s0 bug tracker at:

http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Data-JavaScript-Anon <http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Data-JavaScript-Anon>

For other comments or queries, contact the author.

AUTHOR

Adam Kennedy <[email protected]>

RELATED TO Data::JavaScript::Anon…

\s-1JSON\s0, <http://ali.as/>

COPYRIGHT

Copyright 2003 - 2009 Adam Kennedy.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

The full text of the license can be found in the \s-1LICENSE\s0 file included with this module.