Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
MakeMethods::Utility::UserBContributed PerMakeMethods::Utility::TextBuilder(3)

NAME
       Class::MakeMethods::Utility::TextBuilder	- Basic	text substitutions

SYNOPSIS
	print text_builder( $base_text,	@exprs )

DESCRIPTION
       This module provides a single function, which implements	a simple "text
       macro" mechanism	for assembling templated text strings.

	 $expanded_text	= text_builder(	$base_text, @exprs )

       Returns a modified copy of $base_text using rules from the @exprs list.

       The @exprs list may contain any of the following:

       o   A string, in	which any '*' characters will be replaced by the base
	   text. The interpolated string then replaces the base	text.

       o   A code-ref, which will be called with the base text as its only
	   argument. The result	of that	call then replaces the base text.

       o   A hash-ref, which will be added to the substitution hash used in
	   the second pass, below.

       o   An array-ref, containing additional expressions to be treated as
	   above.

       After any initial string	and code-ref rules have	been applied, the hash
       of substitution rules are applied.

       The text	will be	searched for occurances	of the keys of the
       substitution hash, which	will be	modified based on the corresponding
       value in	the hash. If the substitution key ends with '{}', the search
       will also match a balanced block	of braces, and that value will also be
       used in the substitution.

       The hash-ref may	contain	the following types of rules:

       o   'string' => 'string'

	   Occurances of the first string are to be replaced by	the second.

       o   'string' => code_ref

	   Occurances of the string are	to be replaced by the results of
	   calling the subroutine with no arguments.

       o   'string{}' => 'string'

	   Occurances of the first string and subsequent block of braces are
	   replaced by a copy of the second string in which any	'*' characters
	   have	first been replaced by the contents of the brace block.

       o   'string{}' => code_ref

	   Occurances of the string and	subsequent block of braces are
	   replaced by the results of calling the subroutine with the contents
	   of the brace	block as its only argument.

       o   'string{}' => hash_ref

	   Occurances of the string and	subsequent block of braces are
	   replaced by using the contents of the brace block as	a key into the
	   provided hash-ref.

EXAMPLE
       The following text and modification rules provides a skeleton for a
       collection letter:

	 my $letter = "You owe us AMOUNT. Please pay up!\n\n" .
			 "THREAT{SEVERITY}";

	 my @exprs = (
	   "Dear NAMEm\n\n*",
	   "*\n\n-- The	Management",

	   { 'THREAT{}'	=> { 'good'=>'Please?',	'bad'=>'Or else!' } },

	   "\t\t\t\tDATE\n*",
	   { 'DATE' => 'Tuesday, April 1, 2001'	},
	 );

       One might invoke	this template by providing additional data for a given
       instance	and calling the	text_builder function:

	 my $item = { 'NAME'=>'John', 'AMOUNT'=>'200 camels', 'SEVERITY'=>'bad'	};

	 print text_builder( $letter, @exprs, $item );

       The resulting output is shown below:

					 Tuesday, April	1, 2001
	 Dear John,

	 You owe us 200	camels.	Please pay up!

	 Or else!

	 -- The	Management

SEE ALSO
       See Class::MakeMethods for general information about this distribution.

perl v5.24.1			  2004-09-MakeMethods::Utility::TextBuilder(3)

NAME | SYNOPSIS | DESCRIPTION | EXAMPLE | SEE ALSO

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=Class::MakeMethods::Utility::TextBuilder&sektion=3&manpath=FreeBSD+12.0-RELEASE+and+Ports>

home | help