NAME

Language::FormulaEngine::Parser::ContextUtil - utility methods for parsers

VERSION

version 0.08

EXPORTED FUNCTIONS

calc_text_coordinates

my ($line, $col)= calc_text_coordinates( $buffer, $pos );
my ($line, $col)= calc_text_coordinates( $buffer, $pos, $buffer_line, $buffer_col );

Returns the 0-based line number and character number of an offset within a buffer. The line/column of the start of the buffer can be given as additional arguments.

format_context_string

my $message= format_context_string( $buffer, $token_start, $token_limit, $buffer_line, $buffer_col );
# "'blah blah' on line 15, char 12"

Returns a single-string view of where the token occurs in the buffer. This is useful for single-line "die" messages.

format_context_multiline

my $tty_text= format_context_multiline( $buffer, $token_start, $token_limit, \%args );

#   "blah blah blah token blah blah\n"
#  ."               ^^^^^\n"
#  ." (line 15, char 16)\n";

More advanced view of the input string, printed on three lines with the second marking the token within its context and third listing the line/column. This is only useful with a fixed-width font in a multi-line context.

This method also supports various options for formatting.

AUTHOR

Michael Conrad <mconrad@intellitree.com>

COPYRIGHT AND LICENSE

This software is copyright (c) 2023 by Michael Conrad, IntelliTree Solutions llc.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.