tomland icon indicating copy to clipboard operation
tomland copied to clipboard

[RFC] Store inline-tag along with the tables

Open vrom911 opened this issue 5 years ago • 1 comments

There are two ways to write tables in TOML. But currently tomland doesn't keep track of such information, though it could be useful during pretty-printing later. This info is not that hard to get, as we already parsing both cases.

The question is, do you think that it worth to support this enhancement? And what the downsides are?

vrom911 avatar Jun 22 '20 08:06 vrom911

@vrom911 Excellent idea 👌 It's totally possible because we already know this information during parsing. I think, the solution to this problem will be to implement a type like:

data TomlTable = TomlTable
    { tomlTableInline :: TableInline
    , tomlTableTOML :: TOML
    }

And instead of the current type

https://github.com/kowainik/tomland/blob/316c893a10d1dc652bbcc46f7f8862974941244e/src/Toml/Type/TOML.hs#L96-L100

it will look like this

data TOML = TOML
    { tomlPairs       :: !(HashMap Key AnyValue)
    , tomlTables      :: !(PrefixMap TomlTable)
    , tomlTableArrays :: !(HashMap Key (NonEmpty TomlTable))
    }

I think it's totally worth it, since it will help to produce better output!

chshersh avatar Jun 22 '20 09:06 chshersh