Esempio n. 1
0
 /**
  * Returns the pattern for this locale
  *
  * The pattern contains the placeholder "{{ widget }}" where the HTML tag should
  * be inserted
  */
 public function getPattern()
 {
     if (!$this->getOption('currency')) {
         return '{{ widget }}';
     }
     if (!isset(self::$patterns[$this->locale])) {
         self::$patterns[$this->locale] = array();
     }
     if (!isset(self::$patterns[$this->locale][$this->getOption('currency')])) {
         $format = new \NumberFormatter($this->locale, \NumberFormatter::CURRENCY);
         $pattern = $format->formatCurrency('123', $this->getOption('currency'));
         // the spacings between currency symbol and number are ignored, because
         // a single space leads to better readability in combination with input
         // fields
         // the regex also considers non-break spaces (0xC2 or 0xA0 in UTF-8)
         preg_match('/^([^\\s\\xc2\\xa0]*)[\\s\\xc2\\xa0]*123[,.]00[\\s\\xc2\\xa0]*([^\\s\\xc2\\xa0]*)$/', $pattern, $matches);
         if (!empty($matches[1])) {
             self::$patterns[$this->locale] = $matches[1] . ' {{ widget }}';
         } else {
             if (!empty($matches[2])) {
                 self::$patterns[$this->locale] = '{{ widget }} ' . $matches[2];
             } else {
                 self::$patterns[$this->locale] = '{{ widget }}';
             }
         }
     }
     return self::$patterns[$this->locale];
 }
Esempio n. 2
0
 public function render(\Erebot\IntlInterface $translator)
 {
     $locale = $translator->getLocale(\Erebot\IntlInterface::LC_NUMERIC);
     $formatter = new \NumberFormatter($locale, \NumberFormatter::IGNORE);
     $result = (string) $formatter->format($this->value, \NumberFormatter::TYPE_INT32);
     return $result;
 }
Esempio n. 3
0
 /**
  * @param array    $data
  * @param Campaign $campaign
  *
  * @return Response
  */
 public function createResponse(array $data, Campaign $campaign)
 {
     $response = new Response();
     $response->setCampaign($campaign);
     $response->setGrossAnnualSalary($this->numberFormatter->parse($data["gross_annual_salary"]));
     $response->setVariableAnnualSalary($this->numberFormatter->parse($data["variable_annual_salary"]));
     $response->setAnnualSalary($this->numberFormatter->parse($data["annual_salary"]));
     $response->setSalarySatisfaction($this->numberFormatter->parse($data["salary_satisfaction"]));
     $response->setStatus($this->enums->getEnums('status')->getIdByLabel($data["status"]));
     $response->setJobTitle($this->enums->getEnums('job_title')->getIdByLabel($data["job_title"]));
     $response->setExperience($this->enums->getEnums('experience')->getIdByLabel($data["experience"]));
     $response->setInitialTraining($this->enums->getEnums('initial_training')->getIdByLabel($data["initial_training"]));
     $response->setCompanyType($this->enums->getEnums('company_type')->getIdByLabel($data["company_type"]));
     $response->setCompanySize($this->enums->getEnums('company_size')->getIdByLabel($data["company_size"]));
     $department = new Departments();
     if (in_array($data["company_department"], array_keys($department->getAll()))) {
         $response->setCompanyDepartment($data["company_department"]);
     }
     $response->setJobInterest($this->enums->getEnums('job_interest')->getIdByLabel($data["job_interest"]));
     $response->setPhpVersion($this->enums->getEnums('php_version')->getIdByLabel($data["php_version"]));
     $response->setPhpStrength($this->enums->getEnums('php_strength')->getIdByLabel($data["php_strength"]));
     $response->setHasRecentTraining("oui" === strtolower($data["has_formation"]));
     $response->setRecentTrainingHadSalaryImpact("oui" === strtolower($data["formation_impact"]));
     if ("oui" === strtolower($data['has_certification'])) {
         $this->addCertification($response, explode(', ', $data['certification_list']));
     }
     if (strlen(trim($data["speciality"])) !== 0) {
         $this->addSpeciality($response, explode(', ', $data['speciality']));
     }
     $response->setGender($this->enums->getEnums('gender')->getIdByLabel($data["gender"]));
     return $response;
 }
Esempio n. 4
0
 /**
  * Formatação de numero decimal
  * @param float/integer $value
  * @param integer $precision
  * @param string $language
  * @return float
  */
 public static function decimalNumber($value, $precision = 2, $language = 'pt_BR')
 {
     $valDecimal = new \NumberFormatter($language, \NumberFormatter::DECIMAL);
     $valDecimal->setAttribute(\NumberFormatter::MIN_FRACTION_DIGITS, $precision);
     $valDecimal->setAttribute(\NumberFormatter::MAX_FRACTION_DIGITS, $precision);
     return $valDecimal->format((double) $value, \NumberFormatter::TYPE_DOUBLE);
 }
Esempio n. 5
0
 public function currencySymbolFunction($locale)
 {
     $locale = $locale == null ? \Locale::getDefault() : $locale;
     $formatter = new \NumberFormatter($locale, \NumberFormatter::CURRENCY);
     $symbol = $formatter->getSymbol(\NumberFormatter::CURRENCY_SYMBOL);
     return $symbol;
 }
Esempio n. 6
0
 /**
  * @param FormView      $view
  * @param FormInterface $form
  * @param array         $options
  */
 public function buildView(FormView $view, FormInterface $form, array $options)
 {
     $dataType = self::DATA_INTEGER;
     if (isset($options['data_type'])) {
         $dataType = $options['data_type'];
     }
     $formatterOptions = array();
     switch ($dataType) {
         case self::PERCENT:
             $formatterOptions['decimals'] = 2;
             $formatterOptions['grouping'] = false;
             $formatterOptions['percent'] = true;
             break;
         case self::DATA_DECIMAL:
             $formatterOptions['decimals'] = 2;
             $formatterOptions['grouping'] = true;
             break;
         case self::DATA_INTEGER:
         default:
             $formatterOptions['decimals'] = 0;
             $formatterOptions['grouping'] = false;
     }
     $formatter = new \NumberFormatter(\Locale::getDefault(), \NumberFormatter::DECIMAL);
     $formatterOptions['orderSeparator'] = $formatterOptions['grouping'] ? $formatter->getSymbol(\NumberFormatter::GROUPING_SEPARATOR_SYMBOL) : '';
     $formatterOptions['decimalSeparator'] = $formatter->getSymbol(\NumberFormatter::DECIMAL_SEPARATOR_SYMBOL);
     $view->vars['formatter_options'] = array_merge($formatterOptions, $options['formatter_options']);
 }
 /**
  * Get price with currency only if data is not null
  * (if data is null and formatted by formatCurrency(), it will return 0)
  *
  * @param \NumberFormatter $numberFormatter
  * @param array            $price
  *
  * @return string
  */
 protected function getPrice(\NumberFormatter $numberFormatter, array $price)
 {
     if (!isset($price['data'])) {
         return '';
     }
     return $numberFormatter->formatCurrency($price['data'], $price['currency']);
 }
 public function notify(RequestVerifiedEvent $event)
 {
     $payment = $event->getPayment();
     $status = $event->getStatus()->getValue();
     switch ($status) {
         case GetHumanStatus::STATUS_AUTHORIZED:
         case GetHumanStatus::STATUS_CAPTURED:
         case GetHumanStatus::STATUS_REFUNDED:
             $this->repository->clearCart();
             $type = 'success';
             break;
         case GetHumanStatus::STATUS_CANCELED:
         case GetHumanStatus::STATUS_EXPIRED:
         case GetHumanStatus::STATUS_FAILED:
             $type = 'danger';
             break;
         case GetHumanStatus::STATUS_PENDING:
         case GetHumanStatus::STATUS_SUSPENDED:
             $this->repository->clearCart();
             $type = 'warning';
             break;
         case GetHumanStatus::STATUS_NEW:
         case GetHumanStatus::STATUS_UNKNOWN:
             $this->repository->clearCart();
             $type = 'info';
             break;
         default:
             throw new \RuntimeException('Unknown status ' . $status);
     }
     $formatter = new \NumberFormatter($this->translator->getLocale(), \NumberFormatter::CURRENCY);
     $this->session->getFlashBag()->add($type, $this->translator->trans('flash.payment.' . $type, ['%status%' => $this->translator->trans('meta.status.' . $status), '%amount%' => $formatter->formatCurrency($payment->getTotalAmount() / 100, $payment->getCurrencyCode())]));
 }
Esempio n. 9
0
 public function currency($value, $currency = 'USD')
 {
     // use of NumberFormatter from extension package intl
     //
     $formatter = new \NumberFormatter('en_US', \NumberFormatter::CURRENCY);
     return $formatter->formatCurrency($value, $currency);
 }
Esempio n. 10
0
 /**
  * \copydoc ::Erebot::Styling::VariableInterface::render()
  *
  * \note
  *      If no currency was passed to this class' constructor,
  *      the currency associated with the translator's locale
  *      is used.
  */
 public function render(\Erebot\IntlInterface $translator)
 {
     $locale = $translator->getLocale(\Erebot\IntlInterface::LC_MONETARY);
     $formatter = new \NumberFormatter($locale, \NumberFormatter::CURRENCY);
     $currency = $this->currency !== null ? $this->currency : $formatter->getSymbol(\NumberFormatter::INTL_CURRENCY_SYMBOL);
     return (string) $formatter->formatCurrency($this->value, $currency);
 }
Esempio n. 11
0
 /**
  * Returns the pattern for this locale.
  *
  * The pattern contains the placeholder "{{ widget }}" where the HTML tag should
  * be inserted
  */
 protected static function getPattern($currency)
 {
     if (!$currency) {
         return '{{ widget }}';
     }
     $locale = \Locale::getDefault();
     if (!isset(self::$patterns[$locale])) {
         self::$patterns[$locale] = array();
     }
     if (!isset(self::$patterns[$locale][$currency])) {
         $format = new \NumberFormatter($locale, \NumberFormatter::CURRENCY);
         $pattern = $format->formatCurrency('123', $currency);
         // the spacings between currency symbol and number are ignored, because
         // a single space leads to better readability in combination with input
         // fields
         // the regex also considers non-break spaces (0xC2 or 0xA0 in UTF-8)
         preg_match('/^([^\\s\\xc2\\xa0]*)[\\s\\xc2\\xa0]*123(?:[,.]0+)?[\\s\\xc2\\xa0]*([^\\s\\xc2\\xa0]*)$/u', $pattern, $matches);
         if (!empty($matches[1])) {
             self::$patterns[$locale][$currency] = $matches[1] . ' {{ widget }}';
         } elseif (!empty($matches[2])) {
             self::$patterns[$locale][$currency] = '{{ widget }} ' . $matches[2];
         } else {
             self::$patterns[$locale][$currency] = '{{ widget }}';
         }
     }
     return self::$patterns[$locale][$currency];
 }
Esempio n. 12
0
 /**
  * {@inheritdoc}
  */
 public function format($amount, $currency, $locale = 'en')
 {
     $formatter = new \NumberFormatter($locale, \NumberFormatter::CURRENCY);
     $result = $formatter->formatCurrency($amount / 100, $currency);
     Assert::notSame(false, $result, sprintf('The amount "%s" of type %s cannot be formatted to currency "%s".', $amount, gettype($amount), $currency));
     return $result;
 }
Esempio n. 13
0
 public function bytesToHuman($bytes, $precision = 2)
 {
     $suffixes = ['bytes', 'kB', 'MB', 'GB', 'TB'];
     $formatter = new \NumberFormatter($this->translator->getLocale(), \NumberFormatter::PATTERN_DECIMAL, 0 === $precision ? '#' : '.' . str_repeat('#', $precision));
     $exp = floor(log($bytes, 1024));
     return $formatter->format($bytes / pow(1024, floor($exp))) . ' ' . $this->translator->trans($suffixes[$exp]);
 }
 /**
  * localized format for money with the NumberFormatter class in Currency mode
  * with currency symbol
  * like €1.234,56
  *
  * @param Money $money
  * @param null  $locale
  * @return bool|string
  */
 public function formatI18n(Money $money, $locale = null)
 {
     if ($locale === null) {
         $locale = $this->locale;
     }
     $formatter = new \NumberFormatter($locale, \NumberFormatter::CURRENCY);
     return $formatter->formatCurrency($money->getConvertedAmount(), $money->getCurrency()->getCurrencyCode());
 }
Esempio n. 15
0
 /**
  * Retorna número por extenso
  * @param int $number 
  * @return string número por extenso
  */
 public function porExtenso($number)
 {
     if (!is_numeric($number)) {
         return false;
     }
     $fmt = new \NumberFormatter('br', \NumberFormatter::SPELLOUT);
     return $fmt->format($number);
 }
 /**
  * {@inheritDoc}
  */
 protected function getNumberFormatter()
 {
     $formatter = new \NumberFormatter(\Locale::getDefault(), \NumberFormatter::DECIMAL);
     if (null !== $this->precision) {
         $formatter->setAttribute(\NumberFormatter::FRACTION_DIGITS, $this->precision);
     }
     return $formatter;
 }
Esempio n. 17
0
 /**
  * @todo This is the easiet way I could see to get a currency from a String such as 'GBP'
  * However it's not a very nice solution. This should probably be updated in the future.
  */
 public function currencySymbolFunction($currency = null, $locale = null)
 {
     $locale = $locale == null ? \Locale::getDefault() : $locale;
     $formatter = new \NumberFormatter($locale, \NumberFormatter::CURRENCY);
     $currency = $currency ?: $this->_defaultCurrency;
     $symbol = substr($formatter->formatCurrency(0, $currency), 0, -4);
     return $symbol;
 }
Esempio n. 18
0
 /**
  * 数值转为中文拼读
  */
 public static function spell($number, $capital = false)
 {
     $formatter = new \NumberFormatter('zh_CN', \NumberFormatter::SPELLOUT);
     $sentence = $formatter->format($number);
     if ($capital) {
         $sentence = self::mbStrtr($sentence, self::$chars, self::$caps);
     }
     return $sentence;
 }
 public static function Repeat($times)
 {
     $list = new ArrayList();
     $formatter = new NumberFormatter('en-NZ', NumberFormatter::SPELLOUT);
     for ($i = 1; $i <= $times; $i++) {
         $list->push(array('Num' => $i, 'Word' => ucwords(strtolower($formatter->format($i)))));
     }
     return $list;
 }
Esempio n. 20
0
 /**
  * @param  string|int|float|null                    $value
  * @param  Doctrine\DBAL\Platforms\AbstractPlatform $platform
  * @return mixed
  */
 public function convertToDatabaseValue($value, AbstractPlatform $platform)
 {
     if ($value === null) {
         return;
     }
     $formatter = new \NumberFormatter('pt_BR', \NumberFormatter::DECIMAL);
     $formatted = $formatter->parse($value);
     return $formatted;
 }
Esempio n. 21
0
 public function render(\Erebot\IntlInterface $translator)
 {
     $locale = $translator->getLocale(\Erebot\IntlInterface::LC_NUMERIC);
     $formatter = new \NumberFormatter($locale, \NumberFormatter::DECIMAL);
     $formatter->setAttribute(\NumberFormatter::MIN_FRACTION_DIGITS, 0);
     $formatter->setAttribute(\NumberFormatter::MAX_FRACTION_DIGITS, 100);
     $result = (string) $formatter->format($this->value);
     return $result;
 }
 /**
  * Creates a number formatter according to options and with predefined formats.
  *
  * @param array $options
  *
  * @return \NumberFormatter
  */
 public function create(array $options)
 {
     $options = $this->resolve($options);
     $formatter = new \NumberFormatter($options['locale'], $options['type']);
     if (null !== $options['number_format']) {
         $formatter->setPattern($options['number_format']);
     }
     return $formatter;
 }
Esempio n. 23
0
function ut_main()
{
    setlocale(LC_ALL, 'de_DE');
    $fmt = new NumberFormatter('sl_SI.UTF-8', NumberFormatter::DECIMAL);
    $num = "1.234.567,891";
    $res_str = $fmt->parse($num) . "\n";
    $res_str .= setlocale(LC_NUMERIC, 0);
    return $res_str;
}
 /**
  * Returns a preconfigured \NumberFormatter instance
  *
  * @return \NumberFormatter
  */
 protected function getNumberFormatter()
 {
     $formatter = new \NumberFormatter($this->locale, \NumberFormatter::DECIMAL);
     if ($this->getOption('precision') !== null) {
         $formatter->setAttribute(\NumberFormatter::FRACTION_DIGITS, $this->getOption('precision'));
     }
     $formatter->setAttribute(\NumberFormatter::GROUPING_USED, $this->getOption('grouping'));
     return $formatter;
 }
Esempio n. 25
0
 /**
  * Retrieve the currency code.
  *
  * @return string|null
  */
 public function getCurrencyCode()
 {
     if (!isset($this->options['currency_code'])) {
         if ($this->formatter) {
             return $this->formatter->getTextAttribute(\NumberFormatter::CURRENCY_CODE);
         }
         return null;
     }
     return $this->options['currency_code'];
 }
Esempio n. 26
0
 protected function getDefaultNumberFormatter($currencyCode, $locale = null)
 {
     if (is_null($locale)) {
         $locale = \Locale::getDefault();
     }
     $numberFormatter = new \NumberFormatter($locale, \NumberFormatter::CURRENCY);
     $numberFormatter->setTextAttribute(\NumberFormatter::CURRENCY_CODE, $currencyCode);
     $numberFormatter->setAttribute(\NumberFormatter::FRACTION_DIGITS, $this->decimals);
     return $numberFormatter;
 }
 private function getRules($locale, $type)
 {
     $formatter = new \NumberFormatter($locale, $type);
     $rules = [];
     $rawRules = explode(';', trim($formatter->getTextAttribute(\NumberFormatter::PUBLIC_RULESETS), ';'));
     $default = $formatter->getTextAttribute(\NumberFormatter::DEFAULT_RULESET);
     foreach ($rawRules as $rule) {
         $rules[$rule] = $rule === $default;
     }
     return $rules;
 }
Esempio n. 28
0
function smarty_function_numberDecimal(array $params, Smarty_Internal_Template $template)
{
    $value = $params['value'];
    if (!is_numeric($value)) {
        throw new CM_Exception_Invalid('Invalid non-numeric value');
    }
    /** @var CM_Frontend_Render $render */
    $render = $template->getTemplateVars('render');
    $formatter = new NumberFormatter($render->getLocale(), NumberFormatter::DECIMAL);
    return $formatter->format($value);
}
Esempio n. 29
0
 public function convert()
 {
     $formatter = new \NumberFormatter($this->locale, \NumberFormatter::PATTERN_DECIMAL);
     foreach ($this->binaryPrefixes as $size => $unitPattern) {
         if ($size <= $this->number) {
             $value = $this->number >= self::CONVERT_THRESHOLD ? $this->number / (double) $size : $this->number;
             $formatter->setPattern($unitPattern);
             return $formatter->format($value);
         }
     }
     return $formatter->format($this->number);
 }
 /**
  * {@inheritdoc}
  */
 public function format($amount, $currency = null, $locale = null)
 {
     if (null === $currency) {
         $currency = $this->requestHelper->getCurrentCurrency();
     }
     $locale = $this->getLocale($locale);
     $formatter = new \NumberFormatter($locale, \NumberFormatter::CURRENCY);
     if (false === ($result = $formatter->formatCurrency($amount, $currency))) {
         throw new CurrencyFormatterException($amount, $currency, $locale);
     }
     return $result;
 }