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 0.019;
	use Data::Walk::Print 0.015;

	#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
						- bavalue3
						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, 
		sorted_nodes =>{
			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.

USE

This is a Moose::Role. One way to incorporate this role into Data::Walk::Extracted. is MooseX::ShortCut::BuildInstance. or read Moose::Util for more class building information.

Attributes

Data passed to ->new when creating an instance. 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 attributes 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'.
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

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.
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. These attributes can include all attributes active for the constructed class not just this role.
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: ''

get_match_highlighting

Definition: this is a way to view "match_highlighting" attribute
Accepts: nothing
Returns: The current 'match_highlighting' state

has_match_highlighting

Definition: this is a way to know if the "match_highlighting" attribute is active
Accepts: nothing
Returns: 1 if the attribute is active (not just if it == 1)

clear_match_highlighting

Definition: this clears the "match_highlighting" attribute
Accepts: nothing
Returns: '' (always successful)

Caveat utilitor

Supported Node types

ARRAY
HASH
SCALAR

Supported one shot attributes

match_highlighting
explanation

Printing for skipped nodes

Data::Walk::Extracted allows for some nodes to be skipped. When a node is skipped the print_data function prints the scalar (perl pointer description) of that node.

GLOBAL VARIABLES

$ENV{Smart_Comments}

The module uses Smart::Comments if the '-ENV' option is set. The 'use' is encapsulated in an if block triggered by an environmental variable to comfort non-believers. Setting the variable $ENV{Smart_Comments} in a BEGIN block will load and turn on smart comment reporting. There are three levels of 'Smartness' available in this module '###', '####', and '#####'.

SUPPORT

Data-Walk-Extracted/issues

TODO

  • Support printing Objects / Instances

  • Support printing CodeRefs

AUTHOR

Jed Lund
jandrew@cpan.org

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

Data::Walk::Extracted
Data::Walk::Extracted::Dispatch
MooseX::Types::Moose
version
Moose::Role
requires
_process_the_data
_get_had_secondary
_dispatch_method

SEE ALSO

Smart::Comments - is used if the -ENV option is set
Data::Walk
Data::Walker
Data::Dumper - Dumper
YAML - Dump
Data::Walk::Clone
Data::Walk::Prune
Data::Walk::Graft