bert-w / typomaniac
Create deliberate spelling mistakes or typos in text.
v1.0.0
2020-05-16 19:49 UTC
Requires
- php: >=5.6.0
- ext-mbstring: *
This package is auto-updated.
Last update: 2024-10-17 05:46:03 UTC
README
A library that creates deliberate spelling mistakes/typos for you.
Installation instructions
composer require bert-w/typomaniac
Quick start
Code Samples
$typomaniac = new \BertW\Typomaniac\Typomaniac([ // Chance of an error (0 - 100), decided per character (default). 'chance' => 2, // Usable mistakes (default). 'mistakes' => [ BertW\Typomaniac\Mistakes\CharacterAccents::class, BertW\Typomaniac\Mistakes\CharacterRepeat::class, BertW\Typomaniac\Mistakes\CharactersFlip::class, BertW\Typomaniac\Mistakes\CharacterSkip::class, BertW\Typomaniac\Mistakes\KeyboardTypo::class, BertW\Typomaniac\Mistakes\CharacterChangeCapitalization::class, ], ]); $result = $typomaniac->typo('Please create random typo\'s in this text. The longer the text the more chance of an error!');
It has a convenient __toString()
method to get the actual string output:
echo $result; // Result: // 'Please create randoom typo's in tihs text. The longer the text the more chance of an error!'
$result
also has more properties that could be useful:
class Result { /** @var array List of used mistakes and their frequency. */ public $usedMistakes = []; /** @var array List of available mistakes. */ public $mistakes = []; /** @var int The chance of a mistake (0 - 100). */ public $chance; }
Explanation of the various Mistake
types
CharacterAccents
: Make a mistake for misentered accent characters.ΓΌ => "u || u"
.CharacterRepeat
: Repeat a character.a => aa
CharactersFlip
: Flip a character with the previous one.af => fa
CharacterSkip
: Skip a key stroke (simply returns an empty string).a => (empty)
KeyboardTypo
: Choose a random key that is physically near another key on a QWERTY keyboard.a => q
CharacterChangeCapitalization
: Change the character capitalization to either lower or uppercase.A => a
Adding your own mistake type
Before trying to add your own mistake class, please read the Inner workings below first.
To add your own spelling mistake, simply create a class and extend it from BertW\Typomaniac\Mistakes\Mistake
. See the
source code for examples.
// Add a mistake to the default mistake options (or assign it in the constructor). $typomaniac->addMistake(\MyLibrary\FindSynonym::class); $result = $typomaniac->typo(...);
Inner workings
- Typomaniac loops your input string one character at a time.
- Per each character, the
$chance
property is used to determine whether a mistake should take place. - Once this happens, one of the
Mistake
classes is randomly chosen as the current active Mistake. - As long as the
Mistake->end()
function returnsfalse
, it will continue to push characters to the Mistakeinput
. This allows us to send a substring of arbitrary length of the input to the Mistake class. For instance, theCharactersFlip
class expects 2 characters and returns the 2 characters but flipped. - Once the
Mistake->end()
function returnstrue
, the Mistake class is asked to make a mistake on the received input. i.e.CharactersFlip
would return'af'
for a given input string'fa'
. - The loop is continued, so a new Mistake can take place (or the end is reached, in which case, it stops).