Glimpse/Semantic-Release-Notes — pull request #13 by davidalpert (2014-02-11 04:51:02+00:00)
Title: An initial draft of an F#/FParser-based parser for the Semantic-Release-Notes format.

The SemanticReleaseNotes F# project exposes a Parser.Parse(input) method that returns a partially-populated .NET object containing the parsed release notes. Similarly, a Parser.ParseAST(input) method returns an F# Discriminated Union AST of the parsed release notes.

The solution was created using VS2010 and F# 1.x so may require upgrading if opened with VS2012 and F# 3.x

This is an initial proof-of-concept, with an NUnit-based C# test project demonstrating usage and ApprovalTest-style approvals demonstrating verified output.

Known issues:
- [ ] I had some issues with line endings on the saved approval files when pushing from one laptop to github to another laptop, hopefully the included .gitattributes file fixes those;
- [ ] the object model and ASTToObjectModelVisitor need to be completed in order to finish populating the object model;
- [ ] the AST and parser need to be enhanced to support the notion of "global" summary and items independent of any explicit header-introduced Sections;
- [ ] the Json.NET reference and Semantic-Release-Notes-style JsonSerializationSettings can be pushed into the F# project to make generating JSON from input a one-method-call operation;
- [ ] referencing Markdown.NET or similar would allow the F# project to generate HTML as a one-method-call operation;
- [ ] the F# project's public surface area (i.e. the API visible to another .NET project after referencing the SemanticReleaseNotes assembly) can be cleaned up and finalized as desired using access modifiers and a more expressive structuring of the types relative to namespaces and modules.