diff --git a/Directory.Build.props b/Directory.Build.props
index c85c822..48f0de1 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -16,7 +16,7 @@
snupkg
-
+
true
diff --git a/Funcky.Money.SourceGenerator/XmlNodeExtensions.cs b/Funcky.Money.SourceGenerator/XmlNodeExtensions.cs
index 142b977..abb2a8b 100644
--- a/Funcky.Money.SourceGenerator/XmlNodeExtensions.cs
+++ b/Funcky.Money.SourceGenerator/XmlNodeExtensions.cs
@@ -1,6 +1,4 @@
-using System.Collections.Generic;
using System.Collections.Immutable;
-using System.Linq;
using System.Xml;
namespace Funcky.Money.SourceGenerator;
diff --git a/Funcky.Money.Test/MoneyTest.cs b/Funcky.Money.Test/MoneyTest.cs
index cfb5436..762bf95 100644
--- a/Funcky.Money.Test/MoneyTest.cs
+++ b/Funcky.Money.Test/MoneyTest.cs
@@ -1,5 +1,4 @@
using System.Collections;
-using System.Globalization;
using FsCheck;
using FsCheck.Xunit;
using Xunit;
@@ -8,9 +7,8 @@ namespace Funcky.Test;
public sealed class MoneyTest
{
- public MoneyTest() =>
- Arb
- .Register();
+ public MoneyTest()
+ => Arb.Register();
private static MoneyEvaluationContext SwissRounding
=> MoneyEvaluationContext
diff --git a/Funcky.Money/Money.cs b/Funcky.Money/Money.cs
index a3749f4..4bcdef9 100644
--- a/Funcky.Money/Money.cs
+++ b/Funcky.Money/Money.cs
@@ -36,7 +36,7 @@ public Money(int amount, Option currency = default)
public bool IsZero
=> Amount == 0m;
- // These operators supports the operators on IMoneyExpression, because Money + Money or Money * factor does not work otherwise without a cast.
+ // These operators support the operators on IMoneyExpression, because Money + Money or Money * factor does not work otherwise without a cast.
public static IMoneyExpression operator +(Money augend, IMoneyExpression addend)
=> augend.Add(addend);
@@ -61,8 +61,8 @@ public bool IsZero
public static decimal operator /(Money dividend, IMoneyExpression divisor)
=> dividend.Divide(divisor);
- private static Currency SelectCurrency(Option currency)
- => currency.GetOrElse(CurrencyCulture.CurrentCurrency);
+ TState IMoneyExpression.Accept(IMoneyExpressionVisitor visitor)
+ => visitor.Visit(this);
public static Option ParseOrNone(string money, Option currency = default)
=> CurrencyCulture
@@ -72,6 +72,14 @@ public static Option ParseOrNone(string money, Option currency
some: ParseWithFormatProvider(money))
.AndThen(amount => new Money(amount, SelectCurrency(currency)));
+ public override string ToString()
+ => CurrencyCulture.FormatProviderFromCurrency(Currency).Match(
+ none: () => string.Format($"{{0:N{Currency.MinorUnitDigits}}} {{1}}", Amount, Currency.AlphabeticCurrencyCode),
+ some: formatProvider => string.Format(formatProvider, $"{{0:C{Currency.MinorUnitDigits}}}", Amount));
+
+ private static Currency SelectCurrency(Option currency)
+ => currency.GetOrElse(CurrencyCulture.CurrentCurrency);
+
private static Func