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: 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