src/Language/Arabic/ArabicTripletTransformer.php
<?php
namespace NumberToWords\Language\Arabic;
use NumberToWords\Language\PowerAwareTripletTransformer;
class ArabicTripletTransformer implements PowerAwareTripletTransformer
{
/**
* @var ArabicDictionary
*/
private $dictionary;
/**
* @param ArabicDictionary $dictionary
*/
public function __construct(ArabicDictionary $dictionary)
{
$this->dictionary = $dictionary;
}
/**
* @param int $number
*
* @return string
*/
public function transformToWords($number, $power): string
{
$units = $number % 10;
$tens = (int) ($number / 10) % 10;
$hundreds = (int) ($number / 100) % 10;
$words = [];
if ($hundreds > 0) {
$words[] = $this->dictionary->getCorrespondingHundred($hundreds);
}
if ($tens !== 0 || $units !== 0) {
$words[] = $this->getSubHundred($tens, $units, $power);
}
return implode(' و ', $words);
}
/**
* @param int $tens
* @param int $units
*
* @return string
*/
private function getSubHundred($tens, $units, $power)
{
$words = [];
if ($tens === 1) {
$words[] = $this->dictionary->getCorrespondingTeen($units);
} else {
if ($units > 2 || $tens || $power === 0) {
if ($units > 0) {
$words[] = $this->dictionary->getCorrespondingUnit($units);
}
if ($tens > 0) {
$words[] = $this->dictionary->getCorrespondingTen($tens);
}
}
}
return implode(' و ', $words);
}
}