NAME
Data::Walk::Print - A data printing function
SYNOPSIS
#!perl
use Modern::Perl;
use YAML::Any;
use Moose::Util qw( with_traits );
use Data::Walk::Extracted v0.015;
use Data::Walk::Print v0.009;
$| = 1;
#Use YAML to compress writing the data ref
my $firstref = Load(
'---
Someotherkey:
value
Parsing:
HashRef:
LOGGER:
run: INFO
Helping:
- Somelevel
- MyKey:
MiddleKey:
LowerKey1: lvalue1
LowerKey2:
BottomKey1: 12345
BottomKey2:
- bavalue1
- bavalue2
- bavalue3'
);
my $secondref = Load(
'---
Someotherkey:
value
Helping:
- Somelevel
- MyKey:
MiddleKey:
LowerKey1: lvalue1
LowerKey2:
BottomKey2:
- bavalue1
- bavalue2
BottomKey1: 12354'
);
my $AT_ST = with_traits(
'Data::Walk::Extracted',
( 'Data::Walk::Print' ),
)->new(
match_highlighting => 1,#This is the default
);
$AT_ST->print_data(
print_ref => $firstref,
match_ref => $secondref,
sort_HASH => 1,#To force order for demo purposes
);
#####################################################################################
# Output of SYNOPSIS
# 01:{#<--- Ref Type Match
# 02: Helping => [#<--- Secondary Key Match - Ref Type Match
# 03: 'Somelevel',#<--- Secondary Position Exists - Secondary Value Matches
# 04: {#<--- Secondary Position Exists - Ref Type Match
# 05: MyKey => {#<--- Secondary Key Match - Ref Type Match
# 06: MiddleKey => {#<--- Secondary Key Match - Ref Type Match
# 07: LowerKey1 => 'lvalue1',#<--- Secondary Key Match - Secondary Value Matches
# 08: LowerKey2 => {#<--- Secondary Key Match - Ref Type Match
# 09: BottomKey1 => '12345',#<--- Secondary Key Match - Secondary Value Does NOT Match
# 10: BottomKey2 => [#<--- Secondary Key Match - Ref Type Match
# 11: 'bavalue1',#<--- Secondary Position Exists - Secondary Value Matches
# 12: 'bavalue2',#<--- Secondary Position Exists - Secondary Value Does NOT Match
# 13: 'bavalue3',#<--- Secondary Position Does NOT Exist - Secondary Value Does NOT Match
# 14: ],
# 15: },
# 16: },
# 17: },
# 18: },
# 19: ],
# 20: Parsing => {#<--- Secondary Key Mismatch - Ref Type Mismatch
# 21: HashRef => {#<--- Secondary Key Mismatch - Ref Type Mismatch
# 22: LOGGER => {#<--- Secondary Key Mismatch - Ref Type Mismatch
# 23: run => 'INFO',#<--- Secondary Key Mismatch - Secondary Value Does NOT Match
# 24: },
# 25: },
# 26: },
# 27: Someotherkey => 'value',#<--- Secondary Key Match - Secondary Value Matches
# 28:},
#####################################################################################
DESCRIPTION
This Moose::Role is mostly written as a demonstration module for Data::Walk::Extracted. Both Data::Dumper - Dumper and YAML - Dump functions are more mature than the printing function included here.
Caveat utilitor
Supported Node types
- ARRAY
- HASH
- SCALAR
Supported one shot "Attributes"
- match_highlighting
USE
This is a Moose::Role and can be used as such. One way to incorporate this role into Data::Walk::Extracted is the method 'with_traits' from Moose::Util. Otherwise see Moose::Manual::Roles.
Attributes
Data passed to ->new when creating an instance using a class. For modification of these attributes see "Methods". The ->new function will either accept fat comma lists or a complete hash ref that has the possible appenders as the top keys. Additionally some attributes that have all the following methods; get_$attribute, set_$attribute, has_$attribute, and clear_$attribute, can be passed to print_data and will be adjusted for just the run of that method call. These are called 'one shot' attributes.
match_highlighting
- Definition: this determines if a comments string is added after each printed row that indicates how the 'print_ref' matches the 'match_ref' (or not).
- Default True (1)
- Range This is a Boolean data type and generally accepts 1 or 0
Attributes in Data::Walk::Extracted - also affect the output.
Methods
print_data( $arg_ref|%args )
- Definition: this is the method used to print a data reference
- Accepts: either a single data reference or named arguments in a fat comma list or hashref
-
- named variable option - if data comes in a fat comma list or as a hash ref and the keys include a 'print_ref' key then the list is processed as such.
-
- print_ref - this is the data reference that should be printed in a perlish way - Required
- match_ref - this is a reference used to compare against the 'print_ref' - Optional
- [attribute name] - attribute names are accepted with temporary attribute settings. These settings are temporarily set for a single "print_data" call and then the original attribute values are restored. For this to work the the attribute must meet the necessary criteria.
- single variable option - if only one data_ref is sent and it fails the test for "exists $data_ref->{print_ref}" then the program will attempt to name it as print_ref => $data_ref and then process the data as a fat comma list.
- Returns: 1 (And prints out the data ref with matching assesment comments per "match_highlighting")
set_match_highlighting( $bool )
- Definition: this is a way to change the match_highlighting attribute
- Accepts: a Boolean value
- Returns: ''
GLOBAL VARIABLES
- $ENV{Smart_Comments}
-
The module uses Smart::Comments if the '-ENV' option is set. The 'use' is encapsulated in a BEGIN block triggered by the environmental variable to comfort non-believers. Setting the variable $ENV{Smart_Comments} will load and turn on smart comment reporting. There are three levels of 'Smartness' available in this module '### #### #####'.
SUPPORT
TODO
Support printing CodeRefs
Support printing Objects / Instances
print the data address if the node is skipped
AUTHOR
COPYRIGHT
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 LICENSE file included with this module.
Dependencies
SEE ALSO
- Smart::Comments - is used if the -ENV option is set
- Data::Walk
- Data::Walker
- Data::Dumper - Dumper
- YAML - Dump
2 POD Errors
The following errors were encountered while parsing the POD:
- Around line 430:
L<> starts or ends with whitespace
- Around line 478:
L<> starts or ends with whitespace