hylianshield / alphabet
Library to support operations on a given alphabet
Installs: 10 724
Dependents: 2
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 0
Open Issues: 0
Requires
- php: ^7.0
- ext-spl: ^7.0
Requires (Dev)
- phpunit/phpunit: ^5.7.5
This package is auto-updated.
Last update: 2024-10-29 04:25:43 UTC
README
The alphabet library is a means to standardize iterating over a given alphabet. It is useful for code that deals with encoding, cryptography or text manipulation.
Installation
composer require hylianshield/alphabet:^1.0
Usage
The alphabet constructor accepts 0 (zero) or more arguments, all of the type string.
The alphabet can function as an iterator and give you the number of entries.
<?php use \HylianShield\Alphabet\Alphabet; $alphabet = new Alphabet('A', 'B', 'C'); echo sprintf( 'Found %d entries:', count($alphabet) ) . PHP_EOL; foreach ($alphabet as $character) { echo $character . PHP_EOL; }
Outputs:
Found 3 entries:
A
B
C
Alphabet unpacking
If the input of the alphabet exists in a PHP array, one can use argument unpacking to populate the alphabet:
<?php use \HylianShield\Alphabet\Alphabet; $input = range('A', 'Z'); $alphabet = new Alphabet(...$input); echo sprintf( 'Alphabet consists of %d characters.', count($alphabet) );
Outputs:
Alphabet consists of 26 characters.
Alphabet (de)normalization
When turning back the alphabet into a flat structure, one can use the built-in PHP function, iterator_to_array.
<?php use \HylianShield\Alphabet\Alphabet; /** * @var Alphabet $alphabet * @var string[] $normalized */ $normalized = iterator_to_array($alphabet, false); // And to de-normalize the alphabet again, simply unpack the array. $alphabet = new Alphabet(...$normalized);
The second argument to iterator_to_array
is set to false
, since the keys do
not need to be interpreted and/or transformed.
It is a small performance optimization.
Testing
To run the unit tests, to check the code, simply run one of the pre-configured composer scripts:
composer test
Runs PHPUnitcomposer coverage
Runs PHPUnit with text coveragecomposer coverage-html
Runs PHPUnit with HTML coverage and opens the result in the browser.