Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/robrwo/struct-flatten-template

Flatten arbitrary structures using a template
https://github.com/robrwo/struct-flatten-template

Last synced: 11 days ago
JSON representation

Flatten arbitrary structures using a template

Awesome Lists containing this project

README

        

NAME
Struct::Flatten::Template - flatten data structures using a template

SYNOPSIS
use Struct::Flatten::Template;

my $tpl = {
docs => [
{
key => \ { column => 0 },
sum => {
value => \ { column => 1 },
}
],
};

my @data = ( );

my $hnd = sub {
my ($obj, $val, $args) = @_;

my $idx = $args->{_index};
my $col = $args->{column};

$data[$idx] ||= [ ];
$data[$idx]->[$col] = $val;
};

my $data = {
docs => [
{ key => 'A', sum => { value => 10 } },
{ key => 'B', sum => { value => 4 } },
{ key => 'C', sum => { value => 18 } },
],
};

my $p = Struct::Flatten::Template->new(
template => $tpl,
handler => $hnd,
);

DESCRIPTION
This module is used for "flattening" complex, deeply-nested data
structures, such as those returned by an ElasticSearch aggregation
query.

It is configured with a template that mirrors the data structure, where
some parts of the template contain information how to process the
corresponding parts of the data structure.

SEE ALSO
The following alternative modules can be used to flatten hashes:

Data::Hash::Flatten
Hash::Flatten

AUTHOR
Robert Rothenberg, `'

ACKNOWLEDGEMENTS
Foxtons, Ltd.

LICENSE AND COPYRIGHT
Copyright 2014 Robert Rothenberg.

This program is free software; you can redistribute it and/or modify it
under the terms of the the Artistic License (2.0). You may obtain a copy
of the full license at:

http://www.perlfoundation.org/artistic_license_2_0