The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Data::Sah::Util - Sah utility routines

VERSION

version 0.02

DESCRIPTION

This module provides some utility routines.

FUNCTIONS

has_clause($name, %opts)

Define a clause. Used in type roles (Data::Sah::Type::*). Internally it adds a 'require' for 'clause_$name'.

Options:

  • arg => $schema

    Define schema for clause value.

  • prio => $priority

    Optional. Default is 50. The higher the priority, the earlier the clause will be processed.

  • aliases => \@aliases OR $alias

    Define aliases. Optional.

  • code => $code

    Optional. Define implementation for the clause. The code will be installed as 'clause_$name'.

Example:

 has_clause minimum => (arg => 'int*', aliases => 'min');

clause_alias TARGET => ALIAS | [ALIAS1, ...]

Specify that clause named ALIAS is an alias for TARGET.

You have to define TARGET clause first (see has_clause above).

Example:

 has_clause max_length => ...;
 clause_alias max_length => "maxlen";

clause_conflict CLAUSE, CLAUSE, ...

State that specified clauses conflict with one another and cannot be specified together in a schema. Example:

Example:

 clause_conflict 'set', 'forbidden';
 clause_conflict 'set', 'required';

Not yet implemented.

clause_codepend CLAUSE, CLAUSE, ...

State that specified clauses must be specified together (or none at all).

Example:

 clause_codepend 'foo', 'bar';

Not yet implemented.

has_func($name, %opts)

Define a Sah function. Used in function set roles (Sah::Func::*). Internally it adds a 'require func_$name'.

Options:

  • args => [$schema_arg0, $schema_arg1, ...]

    Declare schema for arguments.

  • aliases => \@aliases OR $alias

    Optional. Declare aliases.

  • code => $code

    Supply implementation for the function. The code will be installed as 'func_$name'.

Example:

 has_func abs => (args => 'num');

func_alias TARGET => ALIAS | [ALIASES...]

Specify that function named ALIAS is an alias for TARGET.

You have to specify TARGET function first (see has_func above).

Example:

 func_alias 'atan' => 'arctan';

AUTHOR

Steven Haryanto <stevenharyanto@gmail.com>

COPYRIGHT AND LICENSE

This software is copyright (c) 2012 by Steven Haryanto.

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