Moved from using Jenkins to GitHub Actions for PR + Master builds (were already using it for releases).
Refactored code to use the Either class instead of exceptions - this helps ensure we're more robustly covering all edge cases -- I've put a lot more Metadata error messages in to the code base as a result.
Now mocking HTTP requests from the cucumber tests so that we can test the HTTP header support. (Tangentially achieved #77).
Split up the up some of the PropertyChecker class into the smaller Normalisation classes to make the code base a bit more maintainable/comprehensible.
Removed the unhelpful partitioning of properties in TableGroup/Table/Column. Property inheritance is done is a more transparent fashion now.
Fixed a bunch of validation which wasn't doing exactly what it should have been doing.
The only thing I can think it would be worthwhile removing now is the unnecessary PropertyType enum and the necessity to pass it in to each of the normalisers - but it doesn't cause toooo much pain.
This PR doesn't leave the project in any kind of perfect position, but I'm confident that it meets 98+% of the W3C's CSV-W specification. I believe it leaves the code-base in a state which is much closer to maintainable than when I found it - but I do want to emphasise that it falls a lot short of what I would like to have done, had I more time.
Normalisation
classes to make the code base a bit more maintainable/comprehensible.The only thing I can think it would be worthwhile removing now is the unnecessary
PropertyType
enum and the necessity to pass it in to each of the normalisers - but it doesn't cause toooo much pain.This PR doesn't leave the project in any kind of perfect position, but I'm confident that it meets 98+% of the W3C's CSV-W specification. I believe it leaves the code-base in a state which is much closer to maintainable than when I found it - but I do want to emphasise that it falls a lot short of what I would like to have done, had I more time.