jpsim / Yams

A Sweet and Swifty YAML parser.
https://jpsim.com/Yams
MIT License
1.12k stars 144 forks source link

Add a way of disabling exponential notation when encoding doubles #374

Open zeionara opened 1 year ago

zeionara commented 1 year ago

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
jpsim commented 1 year ago

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

jpsim commented 1 year ago

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