- Renamed MoneyExtension to NumberExtension
This commit is contained in:
1 parent
b3a8e3aca2
commit
b4964402fd
3 files changed
+70
-46
No files matched your search
@@ -1,43 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Picea\Extension;
|
||||
|
||||
use Picea\Compiler\Context;
|
||||
|
||||
class MoneyExtension implements Extension, FunctionExtension {
|
||||
|
||||
public string $token = "money";
|
||||
|
||||
public string $title = "";
|
||||
|
||||
public string $locale;
|
||||
|
||||
public \NumberFormatter $formatter;
|
||||
|
||||
public function __construct() {
|
||||
$this->locale = explode('.', \Locale::getDefault())[0];
|
||||
$this->formatter = new \NumberFormatter($this->locale, \NumberFormatter::CURRENCY);
|
||||
}
|
||||
|
||||
public function exportFunctions(): array
|
||||
{
|
||||
return [
|
||||
"money" => [ $this, 'money' ]
|
||||
];
|
||||
}
|
||||
|
||||
public function parse(\Picea\Compiler\Context &$context, ?string $arguments, string $token, array $options = []) : string
|
||||
{
|
||||
return "<?php echo money($arguments) ?>";
|
||||
}
|
||||
|
||||
public function money(float $money, ? string $currency = null) /* : string|false */
|
||||
{
|
||||
$this->formatter->setTextAttribute(\NumberFormatter::CURRENCY_CODE, 'CAD');
|
||||
|
||||
$this->formatter->setPattern( str_replace('¤#','¤ #', $this->formatter->getPattern() ) );
|
||||
|
||||
return $this->formatter->formatCurrency($money, $currency ?? $this->formatter->getTextAttribute(\NumberFormatter::CURRENCY_CODE));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
<?php
|
||||
|
||||
namespace Picea\Extension;
|
||||
|
||||
use Picea\Compiler\Context;
|
||||
|
||||
class NumberExtension implements Extension, FunctionExtension {
|
||||
|
||||
public string $locale;
|
||||
|
||||
public \NumberFormatter $formatter;
|
||||
|
||||
public function __construct(
|
||||
public string|array $token = [ "money", "format", "format_zero" ],
|
||||
public string $title = "",
|
||||
) {
|
||||
$this->locale = explode('.', \Locale::getDefault())[0];
|
||||
}
|
||||
|
||||
public function exportFunctions(): array
|
||||
{
|
||||
return [
|
||||
"money" => [ $this, 'money' ],
|
||||
"format" => [ $this, 'format' ],
|
||||
"format_zero" => [ $this, 'formatZero' ],
|
||||
];
|
||||
}
|
||||
|
||||
public function parse(\Picea\Compiler\Context &$context, ?string $arguments, string $token, array $options = []) : string
|
||||
{
|
||||
switch($token) {
|
||||
case "format":
|
||||
return "<?php echo format($arguments) ?>";
|
||||
|
||||
case "format_zero":
|
||||
return "<?php echo format_zero($arguments) ?>";
|
||||
|
||||
case "money":
|
||||
return "<?php echo money($arguments) ?>";
|
||||
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
public function format(int|float $num, int $decimals = 0, null|string $decimalSeparator = ".", null|string $thousandsSeparator = ",") : string
|
||||
{
|
||||
return number_format($num, $decimals, $decimalSeparator, $thousandsSeparator);
|
||||
}
|
||||
|
||||
public function formatZero(int $num, int $length) : string
|
||||
{
|
||||
return sprintf("%0{$length}d", $num);
|
||||
}
|
||||
|
||||
public function money(float $money, ? string $currency = null) /* : string|false */
|
||||
{
|
||||
$this->formatter ??= new \NumberFormatter($this->locale, \NumberFormatter::CURRENCY);
|
||||
|
||||
$this->formatter->setTextAttribute(\NumberFormatter::CURRENCY_CODE, 'CAD');
|
||||
|
||||
$this->formatter->setPattern( str_replace('¤#','¤ #', $this->formatter->getPattern() ) );
|
||||
|
||||
return $this->formatter->formatCurrency($money, $currency ?? $this->formatter->getTextAttribute(\NumberFormatter::CURRENCY_CODE));
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user