Re: [PATCH 7/9] git config --unset: remove empty sections (in normal situations)
From: Jeff King <hidden>
Date: 2018-03-30 13:09:17
On Fri, Mar 30, 2018 at 03:00:06PM +0200, Johannes Schindelin wrote:
quoted
I guess the holy grail would be a parser which reports _all_ syntactic events (section names, keys, comments, whitespace, etc) as a stream without storing anything. And then the normal reader could just discard the non-key events, and the writer here could build the tree from those events.I already changed the do_config_from_file()/do_config_from() code path to allow for handing back section headers. And I *think* that approach should be easily extended to allow for an optional callback for these syntactic events (and we do not need more than that, as the parsed "tree" really is a list: there is nothing nested about ini files, so we really only have a linear list of blocks (event type, offset range)).
True. I was thinking we'd want sections with keys, whitespace, and comments under them. But even that does not really make sense. As this patch series shows, comments do not "belong" to a section, and the file really needs to be considered as a stream. So yeah, if we can parse it into a sequence of events in one forward-pass and then manipulate that sequence, I think it should be sufficient (and _way_ more readable than the current code, even before the bits you are trying to fix here).
I'll think about this a little bit, and hopefully come back with v2 in a while that uses that approach. Thank you so much for that suggestion,
Great. Thanks for working on this. -Peff