diff options
author | Mario <mario@mariovavti.com> | 2018-01-09 09:00:20 +0100 |
---|---|---|
committer | Mario <mario@mariovavti.com> | 2018-01-09 09:00:20 +0100 |
commit | 4f4d0e416eac87121898b8a27b1afa6065ff17a2 (patch) | |
tree | aae7f2582b2b9c6596dcbf87c06a836434140830 /vendor/commerceguys/intl/src/NumberFormat/NumberFormatRepository.php | |
parent | 22c89b6c660e185d5c5c6362acf23b145d932d15 (diff) | |
parent | 8fde0f01b8472082158b38386046ed606bcfbc49 (diff) | |
download | volse-hubzilla-4f4d0e416eac87121898b8a27b1afa6065ff17a2.tar.gz volse-hubzilla-4f4d0e416eac87121898b8a27b1afa6065ff17a2.tar.bz2 volse-hubzilla-4f4d0e416eac87121898b8a27b1afa6065ff17a2.zip |
Merge branch '3.0RC'3.0
Diffstat (limited to 'vendor/commerceguys/intl/src/NumberFormat/NumberFormatRepository.php')
-rw-r--r-- | vendor/commerceguys/intl/src/NumberFormat/NumberFormatRepository.php | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/vendor/commerceguys/intl/src/NumberFormat/NumberFormatRepository.php b/vendor/commerceguys/intl/src/NumberFormat/NumberFormatRepository.php new file mode 100644 index 000000000..368eb7e2b --- /dev/null +++ b/vendor/commerceguys/intl/src/NumberFormat/NumberFormatRepository.php @@ -0,0 +1,91 @@ +<?php + +namespace CommerceGuys\Intl\NumberFormat; + +use CommerceGuys\Intl\LocaleResolverTrait; + +/** + * Repository for number formats based on JSON definitions. + */ +class NumberFormatRepository implements NumberFormatRepositoryInterface +{ + use LocaleResolverTrait; + + /** + * Number formats. + * + * @var array + */ + protected $numberFormats = []; + + /** + * Creates a NumberFormatRepository instance. + * + * @param string $definitionPath The path to the number format definitions. + * Defaults to 'resources/number_format'. + */ + public function __construct($definitionPath = null) + { + $this->definitionPath = $definitionPath ? $definitionPath : __DIR__ . '/../../resources/number_format/'; + } + + /** + * {@inheritdoc} + */ + public function get($locale, $fallbackLocale = null) + { + $locale = $this->resolveLocale($locale, $fallbackLocale); + if (!isset($this->numberFormats[$locale])) { + $filename = $this->definitionPath . $locale . '.json'; + $definition = json_decode(file_get_contents($filename), true); + $this->numberFormats[$locale] = $this->createNumberFormatFromDefinition($definition, $locale); + } + + return $this->numberFormats[$locale]; + } + + /** + * Creates a number format object from the provided definition. + * + * @param array $definition The number format definition. + * @param string $locale The locale of the number format definition. + * + * @return NumberFormat + */ + protected function createNumberFormatFromDefinition(array $definition, $locale) + { + if (!isset($definition['decimal_separator'])) { + $definition['decimal_separator'] = '.'; + } + if (!isset($definition['grouping_separator'])) { + $definition['grouping_separator'] = ','; + } + if (!isset($definition['plus_sign'])) { + $definition['plus_sign'] = '+'; + } + if (!isset($definition['minus_sign'])) { + $definition['minus_sign'] = '-'; + } + if (!isset($definition['percent_sign'])) { + $definition['percent_sign'] = '%'; + } + + $numberFormat = new NumberFormat(); + $setValues = \Closure::bind(function ($definition, $locale) { + $this->locale = $locale; + $this->numberingSystem = $definition['numbering_system']; + $this->decimalSeparator = $definition['decimal_separator']; + $this->groupingSeparator = $definition['grouping_separator']; + $this->plusSign = $definition['plus_sign']; + $this->minusSign = $definition['minus_sign']; + $this->percentSign = $definition['percent_sign']; + $this->decimalPattern = $definition['decimal_pattern']; + $this->percentPattern = $definition['percent_pattern']; + $this->currencyPattern = $definition['currency_pattern']; + $this->accountingCurrencyPattern = $definition['accounting_currency_pattern']; + }, $numberFormat, '\CommerceGuys\Intl\NumberFormat\NumberFormat'); + $setValues($definition, $locale); + + return $numberFormat; + } +} |