* _brian_d_foy ([EMAIL PROTECTED]) [030123 18:24]:
> In article <[EMAIL PROTECTED]>, Johan
> Vromans <[EMAIL PROTECTED]> wrote:
> > I suggest to go ahead with User::Identity and Mail::Identity and see
> > how it works out. I'm convinced that Mark has done a lot of thinking
> > about it, and I don't see any better names coming up anyway.
> 
> i disgree---it sounds like two similar modules are getting different
> top-level namespaces here.  if the common thing is Identity, that
> concept should get pride of place in the name.  I suspect the 
> actual data used to make the identity do not matter that much.
> 
> perhaps Mark should post some example code to show us what the 
> modules do.

I agrree that there is some communility.  In the original name space
request I gave a small example what my plans are.

On this moment, I try to get unicode working on e-mail headers in Mail::Box.
Till now, Mail::Box uses the infamous Mail::Address object to pass addresses.
However, that object is not unicode capabable, and will never be: it is
used in many ancient applications, published in many books, and so on.

So I am planning a new object which supports:
 - username (unicode)
 - e-mail address
 - character set (to encode username correctly)
 - pgp-key (and friends)
 - signature
 - address groups
 - use application dependent settings

The User::Identity (representing one physical person) can have more than
one e-mail address where each of these components may differ.  In my
personal situation, I will have about 10 different settings.

Now about the suggested name.  My first idea was to call it
User::Idenity::Email, however:
 - this is very long: people have to type it often
 - a group would become User::Identity::Email::Group
 - in some situations, you do not have a user related to an e-mail address
   (yet: some data can be derived)

Much cleaner is Mail::Identity, mand Mail::Identity::Group

 # straight forward creation
 my $you     = Mail::Identity->new('Hi you!', '[EMAIL PROTECTED]');
 print $you;        # no defaults for use object, but still usable
                    # "Hi you!" <[EMAIL PROTECTED]>
 $msg->send(to => $you);

 # based on an existing user
 my $mark    = User::Identity->new(fullname => 'Mark Overmeer',
    charset => 'iso-8859-15', language => 'nl');
 my $my_role = $mark->createEmail(adress => '[EMAIL PROTECTED]');
 print $my_role;    # defaults from the user object, so
                    # Mark Overmeer <[EMAIL PROTECTED]>

 # create a group
 my $us = Mail::Identity::Group->new('us', $you, $my_role);
 $us->add(him => '[EMAIL PROTECTED]');
 $msg->reply(From => $us, Sender => $my_role)->send;

The internals of Mail::Identity only store the information and organize
the defaults.  The formatting depends on the possibilities of the
agent, so the object can find wider use.

Concluding, the reasons for Mail::Identity:
 - only partially related to User::Indenity
 - much shorter than User::Identity::Email, and needs to be typed often
 - Mail::Identity::Group reads much better than User::Identity::Email::Group
 - separate versioning.
-- 
Thanks for listening,
               MarkOv       %-]

------------------------------------------------------------------------
drs Mark A.C.J. Overmeer                                MARKOV Solutions
       [EMAIL PROTECTED]                          [EMAIL PROTECTED]
http://Mark.Overmeer.net                   http://solutions.overmeer.net

Reply via email to