Skip to content
  • Jamie Tanna's avatar
    Implement initial version · e48a00de
    Jamie Tanna authored
    As this is the work of ~6 weeks effort, there is unfortunately not a
    nice commit history, implementing piece-by-piece that can be added.
    
    To ensure that this works correctly, we've utilised feature files from
    [gherkin-java], as well as a few custom ones, with a test harness to
    ensure that we're able to handle all valid - and invalid - forms of
    feature files.
    
    This is bundled in with a test harness, utilising abstract classes to
    enable reusability across test cases to validate that:
    
    - we can check whitespace independent - quicker feedback while testing,
      allows making changes without worrying about indentation, and that
      semantically there's nothing lost
    - we can check whitespace dependent - the truly important tests
    
    We've gone with method calls in a nested fashion as this lends to easier
    selective incrementing of the indentation level. We pass the `State`
    around so we can remain stateless, which allows re-using the
    `PrettyFormatter` in a thread-safe fashion.
    
    Because we cannot create a new `ParseError` as its visibility is hidden
    for external construction, we can instead wrap it within a
    `CouldNotParseException`.
    
    This also includes the lookup for comments in a method adapted from a
    suggestion from Jack Gough.
    
    I'm releasing this as v1.0.0 straight away as I'd like to keep stability
    for consumers - or bump the major version accordingly.
    
    This also provides:
    
    - Spotless configuration for Java + Gradle
    - Required configuration for SonarCloud
    - Required configuration for publishing to OSSRH
    
    Closes #1.
    
    [gherkin-java]: https://github.com/cucumber/gherkin-java/tree/6c30803ae99a278b73f08df1a77194dd59974a9f
    e48a00de