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

FreeBSD Manual Pages

  
 
  

home | help
Class::Forward(3)     User Contributed Perl Documentation    Class::Forward(3)

NAME
       Class::Forward -	Namespace Dispatch and Resolution

VERSION
       version 0.100006

SYNOPSIS
	   use Class::Forward;

	   # create a resolution object
	   my $res = Class::Forward->new(namespace => 'MyApp');

	   # returns MyApp::Data
	   say $res->forward('data');

	   # returns a MyApp::Data instance
	   my $data  = $res->forward('data.new');

	   # returns the string	/my_app/data
	   my $string =	$res->reverse('data.new');

	   # returns MyApp::Data
	   say $res->forward($string);

DESCRIPTION
       Class::Forward is designed to resolve Perl namespaces from shorthand
       (which is simply	a file-path-like specification). Class::Forward	can
       also be used to dispatch	method calls using said	shorthand. See the
       following exported functions for	examples on how	this can be used.

EXPORTS
   clsf
       The exported function clsf is responsible for resolving your shorthand.
       The following is	an example of how it functions:

	   package App::Store;

	   use CGI;
	   use Class::Forward;

	   clsf;			     # returns App::Store
	   clsf	'./user';		     # returns App::Store::User
	   clsf	'./user.new', name => 'N30'; # return a	new App::Store::User object
	   clsf	'./user_profile.new';	     # ... App::Store::UserProfile object
	   clsf	'../user';		     # returns App::User
	   clsf	'//';			     # returns App; (top of the	calling	class)
	   clsf	'//.new';		     # returns a new App object
	   clsf	'//view';		     # ... returns App::View
	   clsf	'//view.new';		     # ... returns a new App::View object
	   clsf	'//view.new.render';	     # ... dispatches methods in succession
	   clsf	'cgi';			     # returns App::Store::Cgi
	   clsf	'/cgi';			     # returns Cgi (or CGI if already loaded)

	   1;

       The clsf	function takes two arguments, the shorthand to be translated,
       and an optional list of arguments to be passed to the last method
       appended	to the shorthand.

   clsr
       The exported function clsr is responsible for resolving your shorthand.
       The following is	an example of how it functions:

	   package App::Store;

	   use CGI;
	   use Class::Forward;

	   clsr;			     # returns /app/store
	   clsr	'./user';		     # returns /app/store/user
	   clsr	'./user.new', name => 'N30'; # returns /app/store/user
	   clsr	'./user_profile';	     # returns /app/store/user_profile
	   clsr	'../user';		     # returns /app/user
	   clsr	'//';			     # returns /app
	   clsr	'//.new';		     # returns /app
	   clsr	'//view';		     # returns /app/view
	   clsr	'//view.new';		     # returns /app/view
	   clsr	'//view.new.render';	     # returns /app/view
	   clsr	'cgi';			     # returns /app/store/cgi
	   clsr	'/cgi';			     # returns /cgi

	   1;

       The clsr	function takes three arguments,	the shorthand to be translated
       (required), the offset (optional	level of namespace nodes to omit left-
       to-right), and the delimiter to be used to generate the resulting path
       (defaults to forward-slash).

METHODS
   new
       The new method is used to instantiate a new instance.

   namespace
       The namespace method is used to get/set the root	namespace used as an
       anchor for all resolution requests.

	   my $namespace = $self->namespace('MyApp');

   forward
       The forward (or forward_lookup) method is used to resolve Perl
       namespaces from path-like shorthand.

	   say $self->forward('example');
	   # given a default namespace of MyApp
	   # prints MyApp::Example

   reverse
       The reverse method (or reverse_lookup) is used to generate path-like
       shorthand from Perl namespaces.

	   say $self->reverse('Simple::Example');
	   # given a default namespace of MyApp
	   # prints /my_app/simple/example

	   say $self->reverse('Simple::Example', 1);
	   # given a default namespace of MyApp
	   # prints simple/example

	   say $self->reverse('Simple::Example', 1, '_');
	   # given a default namespace of MyApp
	   # prints simple_example

SEE ALSO
       Class::Forward was designed to provide shorthand	and easy access	to
       class namespaces	in an environment where	you're dealing with a
       multitude of long well-named classes. In	that vein, it provides an
       alternative to modules like aliased, aliased::factory, as, and the
       like, and also modules like Namespace::Dispatch which are similar
       enough to be mentioned but really address a completely different	issue.

AUTHOR
       Al Newkirk <anewkirk@ana.io>

COPYRIGHT AND LICENSE
       This software is	copyright (c) 2012 by Al Newkirk.

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

perl v5.24.1			  2013-08-08		     Class::Forward(3)

NAME | VERSION | SYNOPSIS | DESCRIPTION | EXPORTS | METHODS | SEE ALSO | AUTHOR | COPYRIGHT AND LICENSE

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

home | help