---
name: "Data::Phrasebook::Generic"
section: "3pm"
platform: "linux"
package: "libdata-phrasebook-perl"
version: "0.35-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Data::Phrasebook::Generic"
---

# Data::Phrasebook::Generic(3pm)

Base class for Phrasebook Models

## NAME

Data::Phrasebook::Generic - Base class for Phrasebook Models

## SYNOPSIS

```
    use Data::Phrasebook;
    my $q = Data::Phrasebook->new(
        class  => 'Fnerk',
        loader => 'XML',
        file   => 'phrases.xml',
        dict   => 'English',
    );
```

## DESCRIPTION

This module provides a base class for phrasebook implementations.

## CONSTRUCTOR

### new

`"new"` takes an optional hash of arguments. Each value in the hash is given as an argument to a method of the same name as the key.

This constructor should **never** need to be called directly as Phrasebook creation should go through the Data::Phrasebook factory.

Subclasses should provide at least an accessor method to retrieve values for a named key. Further methods can be overloaded, but must retain a standard API to the overloaded method.

All, or at least *most*, phrasebook implementations should inherit from **this** class.

## METHODS

### loader

Set, or get, the loader class. Uses a default if none have been specified. See Data::Phrasebook::Loader.

### unload

Called by the **file()** and **dict()** methods when a fresh file or dictionary is specified, and reloading is required.

### loaded

Accessor to determine whether the current dictionary has been loaded

### file

A description of a file that is passed to the loader. In most cases, this is a file. A loader that gets its data from a database could conceivably have this as a hash like thus:

```
   $q->file( {
       dsn => "dbi:SQLite:dbname=bookdb",
       table => 'phrases',
   } );
```

That is, which loader you use determines what your `"file"` looks like.

The default loader takes just an ordinary filename.

### dict

Accessor to store the dictionary to be used.

### dicts

Having instantiated the `"Data::Phrasebook"` object class, and using the `"file"` attribute as a directory path, the object can return a list of the current dictionaries available (provided the plugin supports it) as:

```
  my $pb = Data::Phrasebook->new(
    loader => 'Text',
    file   => '/tmp/phrasebooks',
  );
  my @dicts = $pb->dicts;
```

or

```
  my @dicts = $pb->dicts( $path );
```

### keywords

Having instantiated the `"Data::Phrasebook"` object class, using the `"dict"` attribute as required, the object can return a list of the current keywords available (provided the plugin supports it) as:

```
  my $pb = Data::Phrasebook->new(
    loader => 'Text',
    file   => '/tmp/phrasebooks',
    dict   => 'TEST',
  );
  my @keywords = $pb->keywords;
```

or

```
  my @keywords = $pb->keywords( $dict );
```

Note the list will be a combination of the default and any named dictionary. However, not all Loader plugins may support the second usage.

### data

Loads the data source, if not already loaded, and returns the data block associated with the given key.

```
    my $data = $self->data($key);
```

This is typically only used internally by implementations, not the end user.

### delimiters

Returns or sets the current delimiters for substitution variables. Must be a regular expression with at least one capture group.

The example below shows the default ':variable' style regex.

```
   $q->delimiters( qr{ :(\w+) }x );
```

The example below shows a Template Toolkit style regex.

```
   $q->delimiters( qr{ \[% \s* (\w+) \s* %\] }x );
```

In addition to the delimiter pattern, an optional setting to suppress missing value errors can be passed after the pattern. If set to a true value, will  turn any unmatched delimiter patterns to an empty string.

## SEE ALSO

Data::Phrasebook, Data::Phrasebook::Loader.

## SUPPORT

Please see the README file.

## AUTHOR

```
  Original author: Iain Campbell Truskett (16.07.1979 - 29.12.2003)
  Maintainer: Barbie <barbie@cpan.org> since January 2004.
  for Miss Barbell Productions <http://www.missbarbell.co.uk>.
```

## COPYRIGHT AND LICENSE

```
  Copyright (C) 2003 Iain Truskett.
  Copyright (C) 2004-2013 Barbie for Miss Barbell Productions.
  This distribution is free software; you can redistribute it and/or
  modify it under the Artistic License v2.
```
