mirror of
https://github.com/Tyrrrz/CliFx.git
synced 2025-10-25 15:19:17 +00:00
Add demo project
This commit is contained in:
23
CliFx.Demo/Models/Book.cs
Normal file
23
CliFx.Demo/Models/Book.cs
Normal file
@@ -0,0 +1,23 @@
|
||||
using System;
|
||||
|
||||
namespace CliFx.Demo.Models
|
||||
{
|
||||
public class Book
|
||||
{
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
22
CliFx.Demo/Models/Extensions.cs
Normal file
22
CliFx.Demo/Models/Extensions.cs
Normal file
@@ -0,0 +1,22 @@
|
||||
using System.Linq;
|
||||
|
||||
namespace CliFx.Demo.Models
|
||||
{
|
||||
public static class Extensions
|
||||
{
|
||||
public static Library WithBook(this Library library, Book book)
|
||||
{
|
||||
var books = library.Books.ToList();
|
||||
books.Add(book);
|
||||
|
||||
return new Library(books);
|
||||
}
|
||||
|
||||
public static Library WithoutBook(this Library library, Book book)
|
||||
{
|
||||
var books = library.Books.Where(b => b != book).ToArray();
|
||||
|
||||
return new Library(books);
|
||||
}
|
||||
}
|
||||
}
|
||||
44
CliFx.Demo/Models/Isbn.cs
Normal file
44
CliFx.Demo/Models/Isbn.cs
Normal file
@@ -0,0 +1,44 @@
|
||||
using System;
|
||||
using System.Globalization;
|
||||
|
||||
namespace CliFx.Demo.Models
|
||||
{
|
||||
public partial class Isbn
|
||||
{
|
||||
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() => $"{EanPrefix:000}-{RegistrationGroup:00}-{Registrant:00000}-{Publication:00}-{CheckDigit:0}";
|
||||
}
|
||||
|
||||
public partial class Isbn
|
||||
{
|
||||
public static Isbn Parse(string value)
|
||||
{
|
||||
var components = value.Split('-', 5, StringSplitOptions.RemoveEmptyEntries);
|
||||
|
||||
return new Isbn(
|
||||
int.Parse(components[0], CultureInfo.InvariantCulture),
|
||||
int.Parse(components[1], CultureInfo.InvariantCulture),
|
||||
int.Parse(components[2], CultureInfo.InvariantCulture),
|
||||
int.Parse(components[3], CultureInfo.InvariantCulture),
|
||||
int.Parse(components[4], CultureInfo.InvariantCulture));
|
||||
}
|
||||
}
|
||||
}
|
||||
20
CliFx.Demo/Models/Library.cs
Normal file
20
CliFx.Demo/Models/Library.cs
Normal file
@@ -0,0 +1,20 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace CliFx.Demo.Models
|
||||
{
|
||||
public partial class Library
|
||||
{
|
||||
public IReadOnlyList<Book> Books { get; }
|
||||
|
||||
public Library(IReadOnlyList<Book> books)
|
||||
{
|
||||
Books = books;
|
||||
}
|
||||
}
|
||||
|
||||
public partial class Library
|
||||
{
|
||||
public static Library Empty { get; } = new Library(Array.Empty<Book>());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user