---
name: "Cucumber::TagExpressions::Node"
section: "3pm"
platform: "linux"
package: "libcucumber-tagexpressions-perl"
version: "6.1.0-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Cucumber::TagExpressions::Node"
---

# Cucumber::TagExpressions::Node(3pm)

Cucumber Tag expression components

## NAME

Cucumber::TagExpressions::Node - Cucumber Tag expression components

## SYNOPSIS

```
  use Cucumber::TagExpressions;
  my $expr = Cucumber::TagExpressions->parse( '@a and @b' );
  if ( $expr->evaluate( qw/x y z/ ) ) {
     say "The evaluation returned false";
  }
```

## DESCRIPTION

This module defines the components making up the tag expressions.

## METHODS

### evaluate( @tags )

Returns `"true"` when the tag set specified in `$tags` satisfies the condition(s) of the expression, `"false"` otherwise.

`@tags` can be a list of tags to be used in the expression. It can also be a reference to a hash with the keys being the tags and the values being considered boolean values indicating whether the tag (key) is considered part of the tagset (true) or not (false).

### stringify

Returns a string representation of the expression node.

## NODE CLASSES

### Cucumber::TagExpressions::LiteralNode

*DESCRIPTION*

This node class returns `"true"` if the literal tag is specified as part of the tag-list in the expression evaluation.

*ATTRIBUTES*

tag

The tag to test presence for.

### Cucumber::TagExpressions::AndNode

*DESCRIPTION*

This node class type evaluates one or more sub-expressions ("terms") and returns `"false"` if any of the terms does. It returns `"true"` if all of the terms return `"true"`.

*ATTRIBUTES*

terms

The sub-expressions to evaluate.

### Cucumber::TagExpressions::OrNode

*DESCRIPTION*

This node class type evaluates one or more sub-expressions ("terms") and returns `"true"` if any of the terms does. It returns `"false"` if all of the terms return `"false"`.

*ATTRIBUTES*

terms

The sub-expressions to evaluate.

### Cucumber::TagExpressions::NotNode

*DESCRIPTION*

This class wraps one of the other node class types, negating its result on evaluation.

*ATTRIBUTES*

expression

The wrapped node class instance for which to negate the result.

### Cucumber::TagExpressions::ExpressionNode

*DESCRIPTION*

This class models the outer-most node in the tag expression; it wraps all other nodes and is the entry-point for tag expression evaluation.

*ATTRIBUTES*

sub\_expression

An instance of one of the other node class types.

## LICENSE

Please see the included LICENSE for the canonical version. In summary:

The MIT License (MIT)

```
  Copyright (c) 2021 Erik Huelsmann
  Copyright (c) 2021 Cucumber Ltd
```

This work is loosely derived from prior work of the same library for Ruby, called `"cucumber-messages"`.
