Craig Oates Iconcraigoates.net
Menu

Wet Pancake

NuGet

Linux MacOS Windows

All Software Projects

Wet Pancake is an open source project, hosted on Git.Abbether. My personal aim for this project was for me to learn F#. With that said, the project's main goal is to generate text using the/a Markov Chain. This is, also, the initial test bed for using Console.waterworks with an F# project. The project has a mixture of C# and F# in it and is a full.Net codebase. So, if you want to run it on Linux or Mac OS, you are going to need Mono.

The project, as a whole, consists of three smaller projects. The first is a .Net 4.7 library, which is available as a NuGet package. The second one is a console program. This provides users with a way to use the library code without writing any themselves. The third project is the Test Centre. In here, you will find the tests for the library and console projects.

Pre-Requisites

  • Visual Studio 2017 (15.8+)
  • F# (4.1+)
  • C# (6.0+)
  • .Net (4.7+)
  • FsCheck
  • xUnit
  • Console.Waterworks

Wet Pancake: .Net Library (A.K.A. The NuGet Package)

This is a .Net 4.7 library written in F#. If you would like to add code from this repository into yours, you would add this project as a NuGet package. It is worth noting this project (NuGet) comes with a collection of plain-text file (.txt). Wet Pancake uses them as templates to generate text. If you would prefer to use your own, Wet Pancake has the ability to let you do that.

Wet Pancake CLI

This is a console program which hooks into the above library code and it is a C# project, unlike the library. The reason why is because I wanted to see how well Console.Waterworks works with consuming an F# codebase. Seeing as this is/was the first "test", though, I decided to write the console program in C# and hook it up to an F# library... Keep it simple 'n all that jazz.

If you are unaware of what Console.Waterworks is, it is another open-source project I have created. In a nutshell, it allows you to write MVC-like console programs -- please note the "like" part. It is, also, available as a NuGet package in the full and core versions of .Net.

Figure 1
Figure 1: A typical example of how you would use Wet Pancake CLI.

Test Centre

This houses all the unit and property tests for the library and CLI projects. I have wrote the unit tests with xUnit and the property tests with FsCheck. The Test Centre is a regular .Net (4.7) library and written in F#. It, also, utilises xUnit's integration with Visual Studio's Test Explorer. So, you can see which tests are passing and failing with ease, or at least easier than without Test Explorer.

Disclaimer

This project started out as a test project. It was not my intention for it to grow to what it is now (granted, it is still not massive.) At first, I wanted to see how well the Console.Waterworks NuGet package worked with F# libraries. This meant I needed to learn F#. To do this, I used FsMarkov as a reference/goal to work towards. Because of these factors, the codebase has taken the shape it has. It did not start off with the best development practices. And, the fact, it is now a NuGet package, is a goal which came somewhat after the initial playing period. So, if you find yourself wanting to scream at me for glaring and obvious mistakes, please be kind. Thanks.

Relevant Links