Browse Source

Merge pull request #6 from CraigOates/0.6-p2

0.6 p2
master
Craig Oates 6 years ago committed by GitHub
parent
commit
51f35eb07d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 13
      WetPancake/DataProcessing.fs
  2. 50
      WetPancake/ProductServices.fs
  3. 10
      WetPancakeCLI/ConsoleCommands.cs

13
WetPancake/DataProcessing.fs

@ -3,11 +3,24 @@
open System.Text.RegularExpressions
open DataCleaning
open System
open System.IO
let MatchText pattern text = Regex.IsMatch(text, pattern)
let ConcatToString words = String.concat " " words
let GibberishLevelIsValid gibberishLevel =
if gibberishLevel > 1 && gibberishLevel < 21 then true
else false
let SentencesIsValid sentences =
if sentences >= 1 then true
else false
let FilePathIsValid filePath =
if Path.GetExtension filePath = ".txt" && File.Exists filePath then true
else false
let SortIntoGroups groupSize text =
SplitText @"\s+" text // Splits text where there is a space.
|> Seq.windowed groupSize

50
WetPancake/ProductServices.fs

@ -9,6 +9,7 @@ module Pancake =
open DataProcessing
open DataStructuring
open DataServices
open System
let RequestRandomTextAsync() =
async {
@ -20,24 +21,49 @@ module Pancake =
return GenerateMarkovText (PickRandomNumber 2 10) data
}
// TODO: Write tests for the validation checks (throws exceptions)
let RequestTextAsync (gibberishLevel: int) (sentences: int) =
async {
let data =
LoadFile (SelectRandomSampleFile())
|> ApplyStandardSetup
|> SortIntoGroups gibberishLevel
|> GenerateMap
return GenerateMarkovText sentences data
try
if GibberishLevelIsValid gibberishLevel then
if SentencesIsValid sentences then
let data =
LoadFile (SelectRandomSampleFile())
|> ApplyStandardSetup
|> SortIntoGroups gibberishLevel
|> GenerateMap
return GenerateMarkovText sentences data
else
return raise (ArgumentException("Invalid argument. Must be greater than 0.", "sentences"))
else
return raise (ArgumentException("Invalid argument. Must be between 2 and 20 (inclusive).", "gibberishLevel"))
with
| :? ArgumentException as ex ->
return ex.Message
}
// TODO: Write tests for the validation checks (throws exceptions)
let RequestTextFromFileAsync (gibberishLevel: int) (sentences: int) (filePath: string) =
async {
let data =
LoadFile filePath
|> ApplyStandardSetup
|> SortIntoGroups gibberishLevel
|> GenerateMap
return GenerateMarkovText sentences data
try
if GibberishLevelIsValid gibberishLevel then
if SentencesIsValid sentences then
if FilePathIsValid filePath then
let data =
LoadFile filePath
|> ApplyStandardSetup
|> SortIntoGroups gibberishLevel
|> GenerateMap
return GenerateMarkovText sentences data
else
return raise (ArgumentException("Invalid argument. File must be a .txt file and include a valid file path.", "filePath"))
else
return raise (ArgumentException("Invalid argument. Must be greater than 0.", "sentences"))
else
return raise (ArgumentException("Invalid argument. Must be between 2 and 20 (inclusive).", "gibberishLevel"))
with
| :? ArgumentException as ex ->
return ex.Message
}
let RequestAllTemplateFilesAsync () =

10
WetPancakeCLI/ConsoleCommands.cs

@ -48,8 +48,7 @@ namespace WetPancakeCLI
catch (Exception e)
{
Debug.WriteLine(e.Message);
WriteLine("[WARNING] Unable to complete last request. Re-executing command...");
return FSharpAsync.StartAsTask(RequestRandomTextAsync(), _taskCreationOptions, _cancellationToken).Result;
throw;
}
}
@ -68,8 +67,7 @@ namespace WetPancakeCLI
catch (Exception e)
{
Debug.WriteLine(e.Message);
WriteLine("[WARNING] Unable to complete last request. Re-executing command...");
return FSharpAsync.StartAsTask(RequestTextAsync(gibberishLevel, sentences), _taskCreationOptions, _cancellationToken).Result;
throw;
}
}
@ -81,7 +79,6 @@ namespace WetPancakeCLI
{
try
{
// Should these checks be moved into the main library? How are people going to now to add these themselves when they are new to the project?
if (gibberishLevel < 2 || gibberishLevel > 20) throw new ArgumentException("Invalid argument. Must be between 2 and 20 (inclusive).", "gibberishLevel");
if (sentences < 1) throw new ArgumentException("Invalid argument. Must be greater than 0.", "sentences");
if (Path.GetExtension(filePath) != ".txt") throw new FileLoadException("The file entered is not a plain text (.txt) file.", filePath);
@ -90,8 +87,7 @@ namespace WetPancakeCLI
catch (Exception e)
{
Debug.WriteLine(e.Message);
WriteLine("[WARNING] Unable to complete last request. Re-executing command...");
return FSharpAsync.StartAsTask(RequestTextFromFileAsync(gibberishLevel, sentences, filePath), _taskCreationOptions, _cancellationToken).Result;
throw;
}
}

Loading…
Cancel
Save