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