Acme-Insult-Glax
view release on metacpan or search on metacpan
[](https://github.com/sanko/Acme-Insult-Glax/actions) [](https://metacpan.org/release/Acm...
# NAME
Acme::Insult::Glax - Programmatically Generate Insults
# SYNOPSIS
```perl
use Acme::Insult::Glax qw[insult];
say insult( );
```
# DESCRIPTION
Acme::Insult::Glax provides 'insulting' statements generated by the RESTful libInsult API.
# METHODS
These functions may be imported by name or with the `:all` tag.
## `insult( [...] )`
Tear someone down.
```perl
my $shade = insult( ); # Random insult
print insult( lang => 'en_corporate', who => 'John and Eric', plural => 1 );
print insult( lang => 'en_corporate', who => 'John' );
print insult( lang => 'en_corporate', who => 'John' );
```
You may request specific insults by passing parameters.
Expected parameters include:
- `lang`
Insult's language style. Expected styles include:
- `en`
Plain English. This is the default.
- `en_corporate`
English with corporate jargon inserted. Perfect for the 4:50p work email.
- `template`
Insult template.
The default value is different depending on the parameters passed to the API:
- `lang => 'en'`
```
You are as <adjective> as <article target=adj1> <adjective min=1 max=3 id=adj1> <amount> of <adjective min=1 max=3> <animal> <animal_part>
```
- `lang => 'en', who => 'Alex'`
```
Alex is as <adjective> as <article target=adj1> <adjective min=1 max=3 id=adj1> <amount> of <adjective min=1 max=3> <animal> <animal_part>
```
- `lang => 'en', plural => 1`
```
You are as <adjective> as <article target=adj1> <adjective min=1 max=3 id=adj1> <amount> of <adjective min=1 max=3> <animal> <animal_part>
```
- `en_corporate`
```
We <adverb> <verb> <adjective min=1 max=3> <noun>
```
- `lang => 'en_corporate', who => 'Alex'`
```
Alex <adverb> <verb id=verb><verb_3rd target=verb> <adjective min=1 max=3> <noun>
```
- `lang => 'en_corporate', plural => 1`
```
We <adverb> <verb> <adjective min=1 max=3> <noun>"
```
A few examples might be...
```
John and Eric <adverb> <verb id=verb><verb_3rd target=verb> <adjective min=1 max=3> <noun>
# John and Eric proactively facilitates cutting-edge elastic products
John and Eric are as <adjective> as <article target=adj1> <adjective min=1 max=3 id=adj1> <amount> of <adjective min=1 max=3> <animal> <animal_part>
# John and Eric is as disgusting as an unsatisfactory mass of stinky revolting boring maggot toes
```
These are undocumented but from my tinkering, I've figured out that templates can accept the following pseudo-XML tags:
- `<article>`
Properly fills in a/an depending on what follows it.
You may target another field by its id.
```
... <article target='adj1' /> <adjective id='adj1' max='3' /> ...
```
- `<adverb>`
- `<adjective>`
```
<adjective min=1 max=3 id=adj1>
```
- `<amount>`
- `<animal>`
- `<animal_part>`
- `<noun>`
- `<verb>`
Inserts an action or activity.
Be aware that some of these are unsupported when the language is set to `en_corporate`.
- `who`
Person to insult. If present, changes the template to third person singular.
- `plural`
If present (along with a `who` value), changes the template to third person plural.
## `adjective( [...] )`
```perl
my $adjective0 = adjective( );
my $adjective1 = adjective( 'en' );
my $adjective2 = adjective( 'en_corporate' );
```
Generates a single descriptive adjective in plain text.
Expected parameters include:
- `lang`
Language style. Expected values include:
- `en`
Plain English. This is the default.
- `en_corporate`
English with corporate jargon inserted.
# LICENSE & LEGAL
Copyright (C) Sanko Robinson.
This library is free software; you can redistribute it and/or modify it under the terms found in the Artistic License
2\. Other copyrights, terms, and conditions may apply to data transmitted through this module.
Insults are generated by [libInsult](https://gitlab.com/mattia.basaglia/LibInsult) which is maintained by [Mattia
"Glax" Basaglia](https://mattbas.org/).
# AUTHOR
Sanko Robinson <sanko@cpan.org>
## ...but why?
I'm inflicting this upon the world because [oodler577](https://github.com/oodler577/) invited me to help expand Perl's
coverage of smaller open APIs. Blame them or [join us](https://github.com/oodler577/FreePublicPerlAPIs) in the effort.
( run in 0.872 second using v1.01-cache-2.11-cpan-140bd7fdf52 )