Yams icon indicating copy to clipboard operation
Yams copied to clipboard

Add a way of disabling exponential notation when encoding doubles

Open zeionara opened this issue 2 years ago • 4 comments

Closes #279

In current version all doubles are encoded in a scientific notation:

import Yams

print(try Yams.dump(object: 6.85)))

produces:

6.85e+0

The proposed change is to add a static option to Emitter.Options class, so it can be used as follows:

import Yams

Emitter.Options.doubleFormatStyle = .decimal
print(try Yams.dump(object: 6.85)))

which produces the expected result:

 6.85

YAMLEncoder object is also supported, as well as numbers with zero fraction part, which are not saved as integers. For example, the following code:

import Yams

Emitter.Options.doubleFormatStyle = .decimal
print(try YAMLEncoder().encode(6.0)))

generates the expected result:

6.0

zeionara avatar Jan 09 '23 14:01 zeionara

Very nice, thanks for the PR! I'll take a look shortly.

jpsim avatar Jan 09 '23 14:01 jpsim

Could you please address the failing CI jobs? Missing documentation comments and SwiftLint rule violations. Also CMake updates.

jpsim avatar Jan 09 '23 15:01 jpsim