NAME
PYX::Parser - PYX parser with callbacks.
SYNOPSIS
use
PYX::Parser;
my
$obj
= PYX::Parser->new(
%parameters
);
my
$line
=
$obj
->line;
$obj
->parse(
$pyx
,
$out
);
$obj
->parse_file(
$input_file
,
$out
);
$obj
->parse_handler(
$input_file_handler
,
$out
);
METHODS
new
my
$obj
= PYX::Parser->new(
%parameters
);
Constructor.
callbacks
Callbacks.
attribute
Attribute callback.
Default value is
undef
.
comment
Comment callback.
Default value is
undef
.
data
Data callback.
Default value is
undef
.
end_element
End of element callback.
Default value is
undef
.
final
Final callback.
Default value is
undef
.
init
Init callback.
Default value is
undef
.
instruction
Instruction callback.
Default value is
undef
.
rewrite
Rewrite callback.
Callback is used on every line.
Default value is
undef
.
start_element
Start of element callback.
Default value is
undef
.
other
Other Callback.
Default value is
undef
.
input_encoding
Input encoding
for
parse_file() and parse_handler() usage.
Default value is
'utf-8'
.
non_parser_options
Non parser options.
Default value is blank reference to hash.
output_encoding
Output encoding.
Default value is
'utf-8'
.
output_handler
Output handler.
Default value is \
*STDOUT
.
output_rewrite
Output rewrite.
Default value is 0.
line
my
$line
=
$obj
->line;
Get actual parsing line.
Returns string.
parse
$obj
->parse(
$pyx
,
$out
);
Parse PYX text or array of PYX text. If $out
not present, use 'output_handler'.
Returns undef.
parse_file
$obj
->parse_file(
$input_file
,
$out
);
Parse file with PYX data. $input_file
file is decoded by 'input_encoding'. If $out
not present, use 'output_handler'.
Returns undef.
parse_handler
$obj
->parse_handler(
$input_file_handler
,
$out
);
Parse PYX handler. $input_file_handler
handler is decoded by 'input_encoding'. If $out
not present, use 'output_handler'.
Returns undef.
ERRORS
new():
Bad output handler.
From Class::Utils::set_params():
Unknown parameter
'%s'
.
parse():
Bad PYX line
'%s'
.
parse_file():
Bad PYX line
'%s'
.
No input handler.
parse_handler():
Bad PYX line
'%s'
.
No input handler.
EXAMPLE
use
strict;
use
warnings;
use
PYX::Parser;
# Open file.
my
$file_handler
= \
*STDIN
;
my
$file
=
$ARGV
[0];
if
(
$file
) {
if
(!
open
(INF,
'<'
,
$file
)) {
die
"Cannot open file '$file'."
;
}
$file_handler
= \
*INF
;
}
# PYX::Parser object.
my
$parser
= PYX::Parser->new(
'callbacks'
=> {
'start_element'
=> \
&start_element
,
'end_element'
=> \
&end_element
,
},
);
$parser
->parse_handler(
$file_handler
);
# Close file.
if
(
$file
) {
close
(INF);
}
# Start element callback.
sub
start_element {
my
(
$self
,
$elem
) =
@_
;
"Start of element '$elem'.\n"
;
return
;
}
# End element callback.
sub
end_element {
my
(
$self
,
$elem
) =
@_
;
"End of element '$elem'.\n"
;
return
;
}
DEPENDENCIES
Class::Utils, Encode, Error::Pure, Readonly.
SEE ALSO
- Task::PYX
-
Install the PYX modules.
REPOSITORY
https://github.com/michal-josef-spacek/PYX
AUTHOR
Michal Josef Špaček mailto:skim@cpan.org
LICENSE AND COPYRIGHT
© 2005-2023 Michal Josef Špaček
BSD 2-Clause License
VERSION
0.10