tscfg icon indicating copy to clipboard operation
tscfg copied to clipboard

Proper schema syntax

Open carueda opened this issue 6 years ago • 3 comments

The use of the Lightbend/Typesafe Config library itself for purposes of parsing the input used to generate the wrapper has a number of limitations and counter-intuitive effects, in concrete when doing the automatic type detection from given values (NOTE: explicit types are not an issue). See for example #41, #50, #46.

This is not a fault of that library but rather a consequence of using it to infer the types. In particular, note that Lightbend/Typesafe Config:

  • i) deals with concrete config input (as opposed to a schema as used in tscfg)
  • ii) it complementarily offers multiple ways to get the value of the particular parameter, including getInt, getDouble, etc., so, in other words, it defers to the user to decide how to access the value.

The proposal here is to define a proper syntax/language more appropriate for schema definition purposes and, along with that, implement/use a corresponding parsing mechanism. Although tscfg is not yet v1, perhaps consider forcing the new proper syntax as the default in some stable version, while also adding an option to indicate the particular input language.

Reactions/comments welcome.

carueda avatar Jul 02 '19 16:07 carueda

Antlr (https://www.antlr.org) makes writing that sort of thing really easy.

pambrose avatar Jul 06 '19 06:07 pambrose

Thanks for the suggestion. When the times comes, https://github.com/lihaoyi/fastparse/ would actually be my first option as I have other Scala projects already using it and it's simply great.

carueda avatar Jul 06 '19 20:07 carueda

Just to note that I've been having a great experience with cats-parse in some other project where I successfully migrated from fastparse, which, unfortunately seems like it is not going to be updated to Scala 3 any time soon.

carueda avatar Jan 20 '22 04:01 carueda