The Perl Advent Calendar needs more articles for 2022. Submit your idea today!

NAME

Venus::Search - Search Class

ABSTRACT

Search Class for Perl 5

SYNOPSIS

  package main;

  use Venus::Search;

  my $search = Venus::Search->new(
    string => 'hello world',
    regexp => '(hello)',
  );

  # $search->captures;

DESCRIPTION

This package provides methods for manipulating regexp search data.

ATTRIBUTES

This package has the following attributes:

flags

  flags(Str)

This attribute is read-write, accepts (Str) values, is optional, and defaults to ''.

regexp

  regexp(Regexp)

This attribute is read-write, accepts (Regexp) values, is optional, and defaults to qr//.

string

  string(Str)

This attribute is read-write, accepts (Str) values, is optional, and defaults to ''.

INHERITS

This package inherits behaviors from:

Venus::Kind::Utility

INTEGRATES

This package integrates behaviors from:

Venus::Role::Explainable

Venus::Role::Stashable

METHODS

This package provides the following methods:

captures

  captures() (ArrayRef)

The captures method returns the capture groups from the result object which contains information about the results of the regular expression operation. This method can return a list of values in list-context.

Since 0.01

captures example 1
  # given: synopsis;

  my $captures = $search->captures;

  # ["hello"]

count

  count() (Num)

The count method returns the number of matches found in the result object which contains information about the results of the regular expression operation.

Since 0.01

count example 1
  # given: synopsis;

  my $count = $search->count;

  # 1

evaluate

  evaluate() (ArrayRef)

The evaluate method performs the regular expression operation and returns an arrayref representation of the results.

Since 0.01

evaluate example 1
  # given: synopsis;

  my $evaluate = $search->evaluate;

  # ["(hello)", "hello world", 1, [0, 0], [5, 5], {}, "hello world"]
evaluate example 2
  package main;

  use Venus::Search;

  my $search = Venus::Search->new(
    string => 'hello world',
    regexp => 'hello:)',
  );

  my $evaluate = $search->evaluate;

  # Exception! Venus::Search::Error (isa Venus::Error)

explain

  explain() (Str)

The explain method returns the subject of the regular expression operation and is used in stringification operations.

Since 0.01

explain example 1
  # given: synopsis;

  my $explain = $search->explain;

  # "hello world"

get

  get() (Str)

The get method returns the subject of the regular expression operation.

Since 0.01

get example 1
  # given: synopsis;

  my $get = $search->get;

  # "hello world"

initial

  initial() (Str)

The initial method returns the unaltered string from the result object which contains information about the results of the regular expression operation.

Since 0.01

initial example 1
  # given: synopsis;

  my $initial = $search->initial;

  # "hello world"

last_match_end

  last_match_end() (Maybe[ArrayRef[Int]])

The last_match_end method returns an array of offset positions into the string where the capture(s) stopped matching from the result object which contains information about the results of the regular expression operation.

Since 0.01

last_match_end example 1
  # given: synopsis;

  my $last_match_end = $search->last_match_end;

  # [5, 5]

last_match_start

  last_match_start() (Maybe[ArrayRef[Int]])

The last_match_start method returns an array of offset positions into the string where the capture(s) matched from the result object which contains information about the results of the regular expression operation.

Since 0.01

last_match_start example 1
  # given: synopsis;

  my $last_match_start = $search->last_match_start;

  # [0, 0]

matched

  matched() (Maybe[Str])

The matched method returns the portion of the string that matched from the result object which contains information about the results of the regular expression operation.

Since 0.01

matched example 1
  # given: synopsis;

  my $matched = $search->matched;

  # "hello"

named_captures

  named_captures() (HashRef)

The named_captures method returns a hash containing the requested named regular expressions and captured string pairs from the result object which contains information about the results of the regular expression operation.

Since 0.01

named_captures example 1
  # given: synopsis;

  my $named_captures = $search->named_captures;

  # {}
named_captures example 2
  package main;

  use Venus::Search;

  my $search = Venus::Search->new(
    string => 'hello world',
    regexp => '(?<locale>world)',
  );

  my $named_captures = $search->named_captures;

  # { locale => ["world"] }

postmatched

  postmatched() (Maybe[Str])

The postmatched method returns the portion of the string after the regular expression matched from the result object which contains information about the results of the regular expression operation.

Since 0.01

postmatched example 1
  # given: synopsis;

  my $postmatched = $search->postmatched;

  # " world"

prematched

  prematched() (Maybe[Str])

The prematched method returns the portion of the string before the regular expression matched from the result object which contains information about the results of the regular expression operation.

Since 0.01

prematched example 1
  # given: synopsis;

  my $prematched = $search->prematched;

  # ""

set

  set(Str $string) (Str)

The set method sets the subject of the regular expression operation.

Since 0.01

set example 1
  # given: synopsis;

  my $set = $search->set('hello universe');

  # "hello universe"

OPERATORS

This package overloads the following operators:

operation: (.)

This package overloads the . operator.

example 1

  # given: synopsis;

  my $result = $search . ', welcome';

  # "hello world, welcome"
operation: (eq)

This package overloads the eq operator.

example 1

  # given: synopsis;

  my $result = $search eq 'hello world';

  # 1
operation: (ne)

This package overloads the ne operator.

example 1

  # given: synopsis;

  my $result = $search ne 'Hello world';

  # 1
operation: (qr)

This package overloads the qr operator.

example 1

  # given: synopsis;

  my $result = 'hello world, welcome' =~ qr/$search/;

  # 1
operation: ("")

This package overloads the "" operator.

example 1

  # given: synopsis;

  my $result = "$search";

  # "hello world"

example 2

  # given: synopsis;

  my $result = "$search, $search";

  # "hello world, hello world"
operation: (~~)

This package overloads the ~~ operator.

example 1

  # given: synopsis;

  my $result = $search ~~ 'hello world';

  # 1