Introduce new StringProperties object that can encode and decode properties from a string #2303
+735
−1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Introduce a new StringProperties object that can encode and decode properties from a string format. This new object is heavily based on the existing kotlinx.serialization
Properties
object.Properties
and them formats that string map to a properties file. Some parameters can be passed to customise the encoding format, such as key/value separator, number of spaces before and after the key/value separator, and line separator.Properties
. The parsers handles comments, whitespaces, escapes, natural lines vs logical lines. The intent is to support the same format as the Java Properties API (doc). For now, unicode characters are not implemented.The implementation has been inspired a lot from the gist made by https://github.com/RaphaelTarita linked in this issue. I have added many unit tests that show how it is used and how it behaves.
This PR should fix #1152 and KT-42716.