From d8a0004bc5a9261f2738acd1d9180a1c1bb585c9 Mon Sep 17 00:00:00 2001 From: Tommy Parnell Date: Wed, 30 Jan 2019 21:58:53 -0500 Subject: [PATCH] commit to fs in core only --- .../Factories/BlogFactory.fs | 23 ++++++++++--------- src/TerribleDev.Blog.Core/Models/Post.fs | 4 ++-- .../TerribleDev.Blog.Core.fsproj | 2 ++ src/TerribleDev.Blog.Core/Util/Constants.fs | 8 +++++++ src/TerribleDev.Blog.Core/Util/fs.fs | 10 ++++++++ src/TerribleDev.Blog.Web/Models/PostModel.cs | 9 -------- .../Models/PostSettings.cs | 19 --------------- .../Views/Home/Post.cshtml | 2 +- .../Views/Shared/DisplayTemplates/Post.cshtml | 2 +- 9 files changed, 36 insertions(+), 43 deletions(-) create mode 100644 src/TerribleDev.Blog.Core/Util/Constants.fs create mode 100644 src/TerribleDev.Blog.Core/Util/fs.fs delete mode 100644 src/TerribleDev.Blog.Web/Models/PostModel.cs delete mode 100644 src/TerribleDev.Blog.Web/Models/PostSettings.cs diff --git a/src/TerribleDev.Blog.Core/Factories/BlogFactory.fs b/src/TerribleDev.Blog.Core/Factories/BlogFactory.fs index 3fc6ba1..3e61b58 100644 --- a/src/TerribleDev.Blog.Core/Factories/BlogFactory.fs +++ b/src/TerribleDev.Blog.Core/Factories/BlogFactory.fs @@ -10,6 +10,8 @@ module BlogFactory = open Microsoft.AspNetCore.Html open System.Linq open System.Collections.Generic + open fs + open System let fixTagName (tag:string) = tag.Replace(' ', '-').WithoutSpecialCharacters().ToLower() let mapImgUrlResolver (resolveUrl:string) = @@ -17,16 +19,15 @@ module BlogFactory = let getPosts (path) = Directory.EnumerateFiles(path, "*.md", SearchOption.TopDirectoryOnly) - let parseYml (postText:string):PostSettings = - postText.Split("---").[0] - |> DeserializerBuilder().Build().Deserialize + let parseYml (postText:string) = + let split = postText.Split("---") + match split with + | [| _ |] -> raise(Exception("No yml found")) + | [| yml; _|] -> DeserializerBuilder().Build().Deserialize(yml) + | split when split.Length > 2 -> DeserializerBuilder().Build().Deserialize(split.[0]) + + - let getFileInfo (filePath:string) = - let fileInfo = FileInfo(filePath) - async { - let! text = File.ReadAllTextAsync(fileInfo.FullName) |> Async.AwaitTask - return (text, fileInfo) - } let getMarkdownBuilder (imgRef) = MarkdownPipelineBuilder() .Use() @@ -55,7 +56,7 @@ module BlogFactory = let images = images |> Seq.distinct |> Seq.map mapImgUrlFromResolved |> Seq.toList { PublishDate = postSettings.date.ToUniversalTime(); - tags = tags |> System.Collections.Generic.List + tags = tags |> Seq.toList Title = postSettings.title; Url = resolvedUrl; Content = HtmlString(postContent); @@ -63,7 +64,7 @@ module BlogFactory = SummaryPlain = postSummaryPlain; SummaryPlainShort = summaryPlainShort; ContentPlain = postContentPlain; - Images = images |> System.Collections.Generic.List + Images = images |> Seq.toList } let getAllPosts path = getPosts path diff --git a/src/TerribleDev.Blog.Core/Models/Post.fs b/src/TerribleDev.Blog.Core/Models/Post.fs index 9fc097b..b5552fb 100644 --- a/src/TerribleDev.Blog.Core/Models/Post.fs +++ b/src/TerribleDev.Blog.Core/Models/Post.fs @@ -12,6 +12,6 @@ type Post = ContentPlain: string; SummaryPlain: string; SummaryPlainShort: string; - tags : System.Collections.Generic.List - Images: System.Collections.Generic.List + tags : List + Images: List } \ No newline at end of file diff --git a/src/TerribleDev.Blog.Core/TerribleDev.Blog.Core.fsproj b/src/TerribleDev.Blog.Core/TerribleDev.Blog.Core.fsproj index 811cd48..c394b40 100644 --- a/src/TerribleDev.Blog.Core/TerribleDev.Blog.Core.fsproj +++ b/src/TerribleDev.Blog.Core/TerribleDev.Blog.Core.fsproj @@ -3,6 +3,8 @@ netcoreapp2.2 + + diff --git a/src/TerribleDev.Blog.Core/Util/Constants.fs b/src/TerribleDev.Blog.Core/Util/Constants.fs new file mode 100644 index 0000000..6aa7ca6 --- /dev/null +++ b/src/TerribleDev.Blog.Core/Util/Constants.fs @@ -0,0 +1,8 @@ +module Constants +module Constants= + + let MORE = "" + let YMLDIVIDER = "---" + type Tokens = + | MORE + | YMLDIVIDER \ No newline at end of file diff --git a/src/TerribleDev.Blog.Core/Util/fs.fs b/src/TerribleDev.Blog.Core/Util/fs.fs new file mode 100644 index 0000000..dfd1cf0 --- /dev/null +++ b/src/TerribleDev.Blog.Core/Util/fs.fs @@ -0,0 +1,10 @@ +module fs + +open System.IO + + let getFileInfo (filePath:string) = + let fileInfo = FileInfo(filePath) + async { + let! text = File.ReadAllTextAsync(fileInfo.FullName) |> Async.AwaitTask + return (text, fileInfo) + } \ No newline at end of file diff --git a/src/TerribleDev.Blog.Web/Models/PostModel.cs b/src/TerribleDev.Blog.Web/Models/PostModel.cs deleted file mode 100644 index fff39a5..0000000 --- a/src/TerribleDev.Blog.Web/Models/PostModel.cs +++ /dev/null @@ -1,9 +0,0 @@ -using Microsoft.AspNetCore.Html; - -namespace TerribleDev.Blog.Web.Models -{ - public class PostModel - { - public HtmlString Content { get; set; } - } -} \ No newline at end of file diff --git a/src/TerribleDev.Blog.Web/Models/PostSettings.cs b/src/TerribleDev.Blog.Web/Models/PostSettings.cs deleted file mode 100644 index 2525421..0000000 --- a/src/TerribleDev.Blog.Web/Models/PostSettings.cs +++ /dev/null @@ -1,19 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace TerribleDev.Blog.Web.Models -{ - public class PostSettings - { - public List tags { get; set; } - public string title { get; set; } - public string permalink { get; set; } - public DateTime date { get; set; } - public DateTime updated { get; set; } - public string id { get; set; } - public string thumbnail_image { get; set; } - public string thumbnailImage { get; set; } - public string thumbnail_image_position { get; set; } - public string layout { get; set; } - } -} diff --git a/src/TerribleDev.Blog.Web/Views/Home/Post.cshtml b/src/TerribleDev.Blog.Web/Views/Home/Post.cshtml index db4cae2..2da20fa 100644 --- a/src/TerribleDev.Blog.Web/Views/Home/Post.cshtml +++ b/src/TerribleDev.Blog.Web/Views/Home/Post.cshtml @@ -25,7 +25,7 @@ { } - @if(Model.Images.Count > 0) + @if(Model.Images.Length > 0) { } diff --git a/src/TerribleDev.Blog.Web/Views/Shared/DisplayTemplates/Post.cshtml b/src/TerribleDev.Blog.Web/Views/Shared/DisplayTemplates/Post.cshtml index 47177ad..4fa52fe 100644 --- a/src/TerribleDev.Blog.Web/Views/Shared/DisplayTemplates/Post.cshtml +++ b/src/TerribleDev.Blog.Web/Views/Shared/DisplayTemplates/Post.cshtml @@ -4,7 +4,7 @@

@Model.Title

@Model.Content - @if (Model.tags.Count > 0) + @if (Model.tags.Length > 0) {
Tagged In: