diff --git a/YaeBlog/Components/PageAnchor.razor b/src/YaeBlog/Components/PageAnchor.razor
similarity index 100%
rename from YaeBlog/Components/PageAnchor.razor
rename to src/YaeBlog/Components/PageAnchor.razor
diff --git a/YaeBlog/Components/Pages/About.razor b/src/YaeBlog/Components/Pages/About.razor
similarity index 100%
rename from YaeBlog/Components/Pages/About.razor
rename to src/YaeBlog/Components/Pages/About.razor
diff --git a/YaeBlog/Components/Pages/Archives.razor b/src/YaeBlog/Components/Pages/Archives.razor
similarity index 100%
rename from YaeBlog/Components/Pages/Archives.razor
rename to src/YaeBlog/Components/Pages/Archives.razor
diff --git a/YaeBlog/Components/Pages/BlogIndex.razor b/src/YaeBlog/Components/Pages/BlogIndex.razor
similarity index 98%
rename from YaeBlog/Components/Pages/BlogIndex.razor
rename to src/YaeBlog/Components/Pages/BlogIndex.razor
index c5766c5..f4ff07e 100644
--- a/YaeBlog/Components/Pages/BlogIndex.razor
+++ b/src/YaeBlog/Components/Pages/BlogIndex.razor
@@ -6,7 +6,7 @@
@inject NavigationManager NavigationInstance
- Ricardo's Blog
+ Jackfiled's Blog
diff --git a/YaeBlog/Components/Pages/Essays.razor b/src/YaeBlog/Components/Pages/Essays.razor
similarity index 100%
rename from YaeBlog/Components/Pages/Essays.razor
rename to src/YaeBlog/Components/Pages/Essays.razor
diff --git a/YaeBlog/Components/Pages/Friends.razor b/src/YaeBlog/Components/Pages/Friends.razor
similarity index 85%
rename from YaeBlog/Components/Pages/Friends.razor
rename to src/YaeBlog/Components/Pages/Friends.razor
index b46369f..648a198 100644
--- a/YaeBlog/Components/Pages/Friends.razor
+++ b/src/YaeBlog/Components/Pages/Friends.razor
@@ -1,6 +1,7 @@
@page "/friends"
+@using Microsoft.Extensions.Options
@using YaeBlog.Models
-@inject BlogOptions Options
+@inject IOptions
BlogOptionInstance
友链
@@ -18,7 +19,7 @@
- @foreach (FriendLink link in Options.Links)
+ @foreach (FriendLink link in BlogOptionInstance.Value.Links.Where(i => i is not null).Select(i => i!))
{
-
-@code {
-
-}
diff --git a/YaeBlog/Components/Pages/Index.razor b/src/YaeBlog/Components/Pages/Index.razor
similarity index 97%
rename from YaeBlog/Components/Pages/Index.razor
rename to src/YaeBlog/Components/Pages/Index.razor
index 496def6..d532e69 100644
--- a/YaeBlog/Components/Pages/Index.razor
+++ b/src/YaeBlog/Components/Pages/Index.razor
@@ -4,7 +4,7 @@
@inject IEssayContentService EssayContentInstance
- Ricardo's Index
+ Jackfiled's Index
@@ -81,7 +81,10 @@
日常的代码开发使用自建的
进行,个人
开发的各种项目都可以在上面找到。
+
+
+
diff --git a/YaeBlog/Components/Pages/Index.razor.css b/src/YaeBlog/Components/Pages/Index.razor.css
similarity index 100%
rename from YaeBlog/Components/Pages/Index.razor.css
rename to src/YaeBlog/Components/Pages/Index.razor.css
diff --git a/YaeBlog/Components/Pages/NotFound.razor b/src/YaeBlog/Components/Pages/NotFound.razor
similarity index 100%
rename from YaeBlog/Components/Pages/NotFound.razor
rename to src/YaeBlog/Components/Pages/NotFound.razor
diff --git a/YaeBlog/Components/Pages/Tags.razor b/src/YaeBlog/Components/Pages/Tags.razor
similarity index 100%
rename from YaeBlog/Components/Pages/Tags.razor
rename to src/YaeBlog/Components/Pages/Tags.razor
diff --git a/YaeBlog/Components/Pagination.razor b/src/YaeBlog/Components/Pagination.razor
similarity index 100%
rename from YaeBlog/Components/Pagination.razor
rename to src/YaeBlog/Components/Pagination.razor
diff --git a/YaeBlog/Components/Routes.razor b/src/YaeBlog/Components/Routes.razor
similarity index 100%
rename from YaeBlog/Components/Routes.razor
rename to src/YaeBlog/Components/Routes.razor
diff --git a/YaeBlog/Components/_Imports.razor b/src/YaeBlog/Components/_Imports.razor
similarity index 85%
rename from YaeBlog/Components/_Imports.razor
rename to src/YaeBlog/Components/_Imports.razor
index e1cbac4..0526866 100644
--- a/YaeBlog/Components/_Imports.razor
+++ b/src/YaeBlog/Components/_Imports.razor
@@ -7,3 +7,5 @@
@using Microsoft.AspNetCore.Components.Web.Virtualization
@using Microsoft.JSInterop
@using YaeBlog.Components
+@using BlazorSvgComponents
+@using BlazorSvgComponents.Models
diff --git a/YaeBlog/Controllers/FilesController.cs b/src/YaeBlog/Controllers/FilesController.cs
similarity index 100%
rename from YaeBlog/Controllers/FilesController.cs
rename to src/YaeBlog/Controllers/FilesController.cs
diff --git a/YaeBlog/Directory.Build.targets b/src/YaeBlog/Directory.Build.targets
similarity index 100%
rename from YaeBlog/Directory.Build.targets
rename to src/YaeBlog/Directory.Build.targets
diff --git a/YaeBlog/Dockerfile b/src/YaeBlog/Dockerfile
similarity index 100%
rename from YaeBlog/Dockerfile
rename to src/YaeBlog/Dockerfile
diff --git a/YaeBlog/Exceptions/BlogCommandException.cs b/src/YaeBlog/Exceptions/BlogCommandException.cs
similarity index 100%
rename from YaeBlog/Exceptions/BlogCommandException.cs
rename to src/YaeBlog/Exceptions/BlogCommandException.cs
diff --git a/YaeBlog/Exceptions/BlogFileException.cs b/src/YaeBlog/Exceptions/BlogFileException.cs
similarity index 100%
rename from YaeBlog/Exceptions/BlogFileException.cs
rename to src/YaeBlog/Exceptions/BlogFileException.cs
diff --git a/src/YaeBlog/Exceptions/GiteaFetchException.cs b/src/YaeBlog/Exceptions/GiteaFetchException.cs
new file mode 100644
index 0000000..f795dbf
--- /dev/null
+++ b/src/YaeBlog/Exceptions/GiteaFetchException.cs
@@ -0,0 +1,16 @@
+namespace YaeBlog.Core.Exceptions;
+
+public class GiteaFetchException : Exception
+{
+ public GiteaFetchException() : base()
+ {
+ }
+
+ public GiteaFetchException(string message) : base(message)
+ {
+ }
+
+ public GiteaFetchException(string message, Exception innerException) : base(message, innerException)
+ {
+ }
+}
diff --git a/YaeBlog/Extensions/AngleSharpExtensions.cs b/src/YaeBlog/Extensions/AngleSharpExtensions.cs
similarity index 100%
rename from YaeBlog/Extensions/AngleSharpExtensions.cs
rename to src/YaeBlog/Extensions/AngleSharpExtensions.cs
diff --git a/src/YaeBlog/Extensions/DateOnlyExtensions.cs b/src/YaeBlog/Extensions/DateOnlyExtensions.cs
new file mode 100644
index 0000000..3568d72
--- /dev/null
+++ b/src/YaeBlog/Extensions/DateOnlyExtensions.cs
@@ -0,0 +1,22 @@
+namespace YaeBlog.Extensions;
+
+public static class DateOnlyExtensions
+{
+ extension(DateOnly date)
+ {
+ public static DateOnly Today => DateOnly.FromDateTime(DateTime.Now);
+
+ public DateOnly LastMonday
+ {
+ get
+ {
+ return date.DayOfWeek switch
+ {
+ DayOfWeek.Monday => date,
+ DayOfWeek.Sunday => date.AddDays(-6),
+ _ => date.AddDays(1 - (int)date.DayOfWeek)
+ };
+ }
+ }
+ }
+}
diff --git a/src/YaeBlog/Extensions/ServiceCollectionExtensions.cs b/src/YaeBlog/Extensions/ServiceCollectionExtensions.cs
new file mode 100644
index 0000000..3fefec4
--- /dev/null
+++ b/src/YaeBlog/Extensions/ServiceCollectionExtensions.cs
@@ -0,0 +1,36 @@
+using Markdig;
+using YamlDotNet.Serialization;
+using YamlDotNet.Serialization.NamingConventions;
+
+namespace YaeBlog.Extensions;
+
+public static class ServiceCollectionExtensions
+{
+ extension(IServiceCollection collection)
+ {
+ public IServiceCollection AddMarkdig()
+ {
+ MarkdownPipelineBuilder builder = new();
+
+ builder.UseAdvancedExtensions();
+
+ collection.AddSingleton