| Lingua-Conjunction documentation | view source | Contained in the Lingua-Conjunction distribution. |
Lingua::Conjunction - Convert Perl lists into linguistic conjunctions
use Lingua::Conjunction;
# emits "Jack"
$name_list = conjunction('Jack');
# emits "Jack and Jill"
$name_list = conjunction('Jack', 'Jill');
# emits "Jack, Jill, and Spot"
$name_list = conjunction('Jack', 'Jill', 'Spot');
# emits "Jack, a boy; Jill, a girl; and Spot, a dog"
$name_list = conjunction('Jack, a boy', 'Jill, a girl', 'Spot, a dog');
# emits "Jacques, un garcon; Jeanne, une fille; et Spot, un chien"
Lingua::Conjunction->lang('fr');
$name_list = conjunction(
'Jacques, un garcon',
'Jeanne, une fille',
'Spot, un chien'
);
Lingua::Conjunction exports a single subroutine, conjunction, that
converts a list into a properly punctuated text string.
You can cause conjunction to use the connectives of other languages, by
calling the appropriate subroutine:
Lingua::Conjunction->lang('en'); # use 'and' (default)
Lingua::Conjunction->lang('es'); # use 'y'
Supported languages in this version are English, Spanish, French, Italian, German, Portuguese, Norwegian, Danish, Dutch, Afrikaans, Swahili, and Latin. (Klingon is intentionally not supported.)
You can also set connectives individually:
Lingua::Conjunction->separator("...");
Lingua::Conjunction->separator_phrase("--");
Lingua::Conjunction->connector_type("or");
# emits "Jack... Jill... or Spot"
$name_list = conjunction('Jack', 'Jill', 'Spot');
The separator_phrase is used whenever the separator already appears in
an item of the list. For example:
# emits "Doe, a deer; Ray; and Me"
$name_list = conjunction('Doe, a deer', 'Ray', 'Me');
You may use the penultimate routine to diable the separator after the
next to last item. Generally this is bad English practice but the option
is there if you want it:
# emits "Jack, Jill and Spot"
Lingua::Conjunction->penultimate(0);
$name_list = conjunction('Jack', 'Jill', 'Spot');
I have been told that the penultimate comma is not standard for some
languages, such as Norwegian. Hence the defaults set in the %languages.
Originally this modules was uploaded to CPAN as Text::List. After some
criticism, it was renamed.
As per suggestions, other features were added. Probably too many features for what amounts to a simple hack.
More languages could be added, but some languages have more complex rules (inflections and multiple forms of 'and' depending on the context, etc.)
Locale::Language
The Perl Cookbook in Section 4.2 has a simular subroutine called
commify_series. The different is that 1. this routine handles
multiple languages and 2. being a module, you do not have to add
the subroutine to a script every time you need it.
Robert Rothenberg <rrwo@cpan.org>
Damian Conway <damian@csse.monash.edu.au>
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
| Lingua-Conjunction documentation | view source | Contained in the Lingua-Conjunction distribution. |