mirror of
https://github.com/Tyrrrz/CliFx.git
synced 2025-10-25 15:19:17 +00:00
Use STJ in the demo instead of Newtonsoft.Json
This commit is contained in:
@@ -7,7 +7,6 @@
|
|||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="7.0.0" />
|
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="7.0.0" />
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.2" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@@ -2,21 +2,4 @@
|
|||||||
|
|
||||||
namespace CliFx.Demo.Domain;
|
namespace CliFx.Demo.Domain;
|
||||||
|
|
||||||
public class Book
|
public record Book(string Title, string Author, DateTimeOffset Published, Isbn Isbn);
|
||||||
{
|
|
||||||
public string Title { get; }
|
|
||||||
|
|
||||||
public string Author { get; }
|
|
||||||
|
|
||||||
public DateTimeOffset Published { get; }
|
|
||||||
|
|
||||||
public Isbn Isbn { get; }
|
|
||||||
|
|
||||||
public Book(string title, string author, DateTimeOffset published, Isbn isbn)
|
|
||||||
{
|
|
||||||
Title = title;
|
|
||||||
Author = author;
|
|
||||||
Published = published;
|
|
||||||
Isbn = isbn;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -2,32 +2,13 @@
|
|||||||
|
|
||||||
namespace CliFx.Demo.Domain;
|
namespace CliFx.Demo.Domain;
|
||||||
|
|
||||||
public partial class Isbn
|
public partial record Isbn(int EanPrefix, int RegistrationGroup, int Registrant, int Publication, int CheckDigit)
|
||||||
{
|
{
|
||||||
public int EanPrefix { get; }
|
|
||||||
|
|
||||||
public int RegistrationGroup { get; }
|
|
||||||
|
|
||||||
public int Registrant { get; }
|
|
||||||
|
|
||||||
public int Publication { get; }
|
|
||||||
|
|
||||||
public int CheckDigit { get; }
|
|
||||||
|
|
||||||
public Isbn(int eanPrefix, int registrationGroup, int registrant, int publication, int checkDigit)
|
|
||||||
{
|
|
||||||
EanPrefix = eanPrefix;
|
|
||||||
RegistrationGroup = registrationGroup;
|
|
||||||
Registrant = registrant;
|
|
||||||
Publication = publication;
|
|
||||||
CheckDigit = checkDigit;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string ToString() =>
|
public override string ToString() =>
|
||||||
$"{EanPrefix:000}-{RegistrationGroup:00}-{Registrant:00000}-{Publication:00}-{CheckDigit:0}";
|
$"{EanPrefix:000}-{RegistrationGroup:00}-{Registrant:00000}-{Publication:00}-{CheckDigit:0}";
|
||||||
}
|
}
|
||||||
|
|
||||||
public partial class Isbn
|
public partial record Isbn
|
||||||
{
|
{
|
||||||
public static Isbn Parse(string value, IFormatProvider formatProvider)
|
public static Isbn Parse(string value, IFormatProvider formatProvider)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -4,15 +4,8 @@ using System.Linq;
|
|||||||
|
|
||||||
namespace CliFx.Demo.Domain;
|
namespace CliFx.Demo.Domain;
|
||||||
|
|
||||||
public partial class Library
|
public partial record Library(IReadOnlyList<Book> Books)
|
||||||
{
|
{
|
||||||
public IReadOnlyList<Book> Books { get; }
|
|
||||||
|
|
||||||
public Library(IReadOnlyList<Book> books)
|
|
||||||
{
|
|
||||||
Books = books;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Library WithBook(Book book)
|
public Library WithBook(Book book)
|
||||||
{
|
{
|
||||||
var books = Books.ToList();
|
var books = Books.ToList();
|
||||||
@@ -29,7 +22,7 @@ public partial class Library
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public partial class Library
|
public partial record Library
|
||||||
{
|
{
|
||||||
public static Library Empty { get; } = new(Array.Empty<Book>());
|
public static Library Empty { get; } = new(Array.Empty<Book>());
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Newtonsoft.Json;
|
using System.Text.Json;
|
||||||
|
|
||||||
namespace CliFx.Demo.Domain;
|
namespace CliFx.Demo.Domain;
|
||||||
|
|
||||||
@@ -10,7 +10,7 @@ public class LibraryProvider
|
|||||||
|
|
||||||
private void StoreLibrary(Library library)
|
private void StoreLibrary(Library library)
|
||||||
{
|
{
|
||||||
var data = JsonConvert.SerializeObject(library);
|
var data = JsonSerializer.Serialize(library);
|
||||||
File.WriteAllText(StorageFilePath, data);
|
File.WriteAllText(StorageFilePath, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -21,7 +21,7 @@ public class LibraryProvider
|
|||||||
|
|
||||||
var data = File.ReadAllText(StorageFilePath);
|
var data = File.ReadAllText(StorageFilePath);
|
||||||
|
|
||||||
return JsonConvert.DeserializeObject<Library>(data) ?? Library.Empty;
|
return JsonSerializer.Deserialize<Library>(data) ?? Library.Empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Book? TryGetBook(string title) => GetLibrary().Books.FirstOrDefault(b => b.Title == title);
|
public Book? TryGetBook(string title) => GetLibrary().Books.FirstOrDefault(b => b.Title == title);
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ By using this project or its source code, for any purpose and in any shape or fo
|
|||||||
- You **support Ukraine's territorial integrity, including its claims over temporarily occupied territories of Crimea and Donbas**
|
- You **support Ukraine's territorial integrity, including its claims over temporarily occupied territories of Crimea and Donbas**
|
||||||
- You **reject false narratives perpetuated by Russian state propaganda**
|
- You **reject false narratives perpetuated by Russian state propaganda**
|
||||||
|
|
||||||
To learn more about the war and how you can help, [click here](https://tyrrrz.me). Glory to Ukraine! 🇺🇦
|
To learn more about the war and how you can help, [click here](https://tyrrrz.me/ukraine). Glory to Ukraine! 🇺🇦
|
||||||
|
|
||||||
## Install
|
## Install
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user