*Manual Reference Pages - * BADGER::LOGIC (3)
.ds Aq ’
### NAME
Badger::Logic - parse and evaluate simple logical expressions
### CONTENTS
### SYNOPSIS
`
``
use Badger::Logic Logic;
my $logic = Logic(animal and (eats_nuts or eats_berries));
my $values = {
animal => 1,
eats_nuts => 1,
}
if ($logic->test($values)) {
print "This is an animal that eats nuts or berries\n";
}
`
### DESCRIPTION
This module implements a simple parser and evaluator for boolean logic
expressions. It evolved from a piece of code that I originally wrote to
handle role-based authentication in web applications.
### EXPORTABLE SUBROUTINES
#### LOGIC
This is a shortcut alias to `Badger::Logic`.
`
` `
use Badger::Logic LOGIC;
my $logic = LOGIC->new($expr); # same as Badger::Logic->new($expr);
`
*Logic()*
This subroutine returns the name of the `Badger::Logic` class when called
without arguments. Thus it can be used as an alias for `Badger::Logic`
as per LOGIC.
`
` `
use Badger::Logic Logic;
my $logic = Logic->new($expr); # same as Badger::Logic->new($expr);
`
When called with arguments, it creates a new `Badger::Logic` object.
`
` `
my $logic = Logic($expr); # same as Badger::Logic->new($expr);
`
### METHODS
#### new($expr)
Constructor method to create a new `Badger::Logic` object from an expression.
`
` `
my $logic = Badger::Logic->new(animal and (cat or dog));
`
#### evaluate($values) / test($values)
Method to evaluate the expression. A reference to a hash array should be
passed containing the values that the expression can test.
`
` `
my $values = {
animal => 1,
cat => 1,
};
if ($logic->evaluate($values)) {
print "This animal is a cat or a dog\n";
}
`
*tree()*
Returns a reference to the root of a tree of `Badger::Logic::Node` objects
that represent the parsed expression.
*text()*
Returns a text representation of the logic expression.
### INTERNAL METHODS
#### parse($text)
Main method to parse a logical expression. This calls *parse_expr()* and
then checks that all of the text has been successfully parsed. It returns
a reference to a `Badger::Logic::Node` object.
#### parse_expr($text)
Method to parse a binary expression.
#### parse_unary($text)
Method to parse a unary expression.
#### parse_term($text)
Method to parse a single term in a logical expression.
### AUTHOR
Andy Wardley <http://wardley.org>
### COPYRIGHT
Copyright (C) 2007-2009 Andy Wardley. All Rights Reserved.
This module is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.
*perl v5.20.3* | BADGER::LOGIC (3) | *2012-01-25* |
Visit the GSP FreeBSD Man Page Interface. Output converted with manServer 1.07. |