Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: support json output #77

Merged
merged 20 commits into from
Apr 7, 2022
Merged

feat: support json output #77

merged 20 commits into from
Apr 7, 2022

Conversation

G-Rath
Copy link
Owner

@G-Rath G-Rath commented Mar 28, 2022

This originally started as a general output re-design, but turned into supporting json output.

I'm somewhat annoyed at this because outputting in the loop is nice but when you're outputting JSON you want to do it as an array and... ugh it just kind of breaks the single responsibility principle.

However I think I've found a good solution: having a Reporter class that tracks this (and so owns the responsibility for outputting) - all that functions are required to do is produce "results" which contractually must be convertible to a "string" format and to json (which is implied).

The main icky thing with this is that you need to ensure that #Finish is called, which is technically an implication detail but afaik there's no escaping it - really, this is a form of RAII that's made icky by the fact that you have to make it that by setting up the defer (e.g. it'd be better if the class itself could somehow setup the defer).

I've made this a bit nicer by renaming Finish to PrintJSON which then means its the responsibility of the "user" to know when/if they want to call that.

Anyway, this should be fine I think - hopefully I've not missed something that makes it horrible to use.

Resolves #10

@G-Rath G-Rath force-pushed the add-json-output branch 2 times, most recently from bb041d8 to db38c19 Compare March 28, 2022 04:39
@G-Rath G-Rath marked this pull request as ready for review April 6, 2022 19:48
@G-Rath G-Rath merged commit ef2a537 into main Apr 7, 2022
@G-Rath G-Rath deleted the add-json-output branch April 7, 2022 20:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Support JSON output format
1 participant