XML::Grammar::FictionBase::FromProto::Parser::LineIterator - line iterator base class for the parser.
For internal use only.
Version 0.9.2
TODO: write one.
This is a line iterator that is useful to handle text (e.g: out of a file) and process it incrementally.
Use $multi_line_text as the text to process, populate the lines array with it and reset the other variables.
Returns a reference to the current line (a string).
For example:
my $l_ref = $self->curr_line_ref(); if ($$l_ref !~ m{\G<tag>}g) { die "Could not match tag."; }
Returns the current position (using pos($$l)) of the current line.
Returns if at start of line (curr_pos == 0).
Convenience method to return the line reference and the position.
# Check for a tag. my ($l_ref, $p) = $self->curr_line_and_pos(); my $is_tag_cond = ($$l_ref =~ m{\G<}cg); my $is_close = $is_tag_cond && ($$l_ref =~ m{\G/}cg); pos($$l) = $p; return ($is_tag_cond, $is_close);
Returns a reference to a copy of the current line that is allowed to be tempered with (by assigning to pos() or in a different way.). The line is returned as a reference so to avoid destroying its pos() value.
sub _look_ahead_for_tag { my $self = shift; my $l = $self->curr_line_copy(); my $is_tag_cond = ($$l =~ m{\G<}cg); my $is_close = $is_tag_cond && ($$l =~ m{\G/}cg); return ($is_tag_cond, $is_close); }
Advance the line pointer and return the next line.
Skip whitespace (spaces and tabs) from the current position onwards.
Skip multiline space.
Matches the current line with $regex starting from the current position and returns the result. The position remains at the original position if the regular expression does not match (using qr//cg ).
qr//cg
Returns the line index as an integer. It starts from 0 for the first line (like in Perl lines.)
Returns the line number as an integer. It starts from 1 for the first line (like in file lines.)
Consume as much text as $regex matches.
Consume up to the point where $regex matches.
Throws the Error class $exception_class with the text $text (and the current line number.
Returns if the parser reached the end of the file.
Leftover from Mouse.
Shlomi Fish, http://www.shlomifish.org/.
Please report any bugs or feature requests to bug-xml-grammar-fiction at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=XML-Grammar-Fiction. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
bug-xml-grammar-fiction at rt.cpan.org
Copyright 2007 Shlomi Fish, all rights reserved.
This program is released under the following license: MIT X11.
To install XML::Grammar::Fiction, copy and paste the appropriate command in to your terminal.
cpanm
cpanm XML::Grammar::Fiction
CPAN shell
perl -MCPAN -e shell install XML::Grammar::Fiction
For more information on module installation, please visit the detailed CPAN module installation guide.