=head1 NAME

Number::Phone::Formatters - how to write custom formatters


How to write custom formatters for phone numbers.

=head1 NAMING

Formatters are modules that live in the C<Number::Phone::Formatter::*>
namespace. Users only need to type the last bit of the name, without the
leading C<Number::Phone::Formatter::>, when calling the C<format_using>
method of L<Number::Phone>.

The 'E123' formatter name is reserved and implemented by Number::Phone
subclasses in their C<format()> methods.

The 'FishAndChips' formatter name is reserved because I needed something
guaranteed to not exist so I could test that it failed correctly.

=head1 METHODS

There is one compulsory method, C<format> that you must write. It will
be called as a class method, with a number in E.123 international format as its
first argument, looking something like '+CC NNN NNN NNN', and a Number::Phone
object as its second argument. The gory details of what E.123 looks like
are at L<http://www.itu.int/rec/T-REC-E.123/en> but in summary, you'll get
a string consisting of:


=item a plus sign

=item a 1, 2 or 3 digit country code

=item whitespace

=item a mixture of digits and whitespace


You should return a string.

=head1 EXAMPLE

See L<Number::Phone::Formatter::Raw> for an example that uses the string
argument, and L<Number::Phone::Formatter::NationallyPreferredIntl> for one
that uses the object.


Copyright 2016 David Cantrell E<lt>F<david@cantrell.org.uk>E<gt>

This documentation is free-as-in-speech software.  It may be used, distributed, and modified under the terms of the Creative Commons Attribution-Share Alike 2.0 UK: England & Wales License, whose text you may read at L<http://creativecommons.org/licenses/by-sa/2.0/uk/>.