From 77ca3dd5cadc0ea194a83a8f39614842706934f9 Mon Sep 17 00:00:00 2001 From: Thierry Bugier Date: Thu, 3 Jun 2021 23:59:04 +0200 Subject: [PATCH] fix(CFNumber): locale insensitive float format CFNumber must output floats with dot as decimal separator This change forces a 10 digits limit after the decimal separator Signed-off-by: Thierry Bugier --- composer.json | 3 ++- src/CFPropertyList/CFNumber.php | 8 +++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/composer.json b/composer.json index 113eac2..2b54d07 100644 --- a/composer.json +++ b/composer.json @@ -6,7 +6,8 @@ "homepage": "https://github.com/TECLIB/CFPropertyList", "license": "MIT", "require": { - "php": ">=5.6" + "php": ">=5.6", + "ext-intl": "*" }, "authors": [ { diff --git a/src/CFPropertyList/CFNumber.php b/src/CFPropertyList/CFNumber.php index f2b6518..eb952da 100644 --- a/src/CFPropertyList/CFNumber.php +++ b/src/CFPropertyList/CFNumber.php @@ -68,7 +68,13 @@ public function toXML(DOMDocument $doc, $nodeName = "") $this->value = intval($this->value); $ret = 'integer'; } - return parent::toXML($doc, $ret); + $formatter = new \NumberFormatter('en_US', \NumberFormatter::DECIMAL); + $formatter->setAttribute(\NumberFormatter::MAX_FRACTION_DIGITS, 10); + $formatter->setAttribute(\NumberFormatter::GROUPING_USED, false); + $text = $doc->createTextNode($formatter->format($this->value)); + $node = $doc->createElement($ret); + $node->appendChild($text); + return $node; } /**