This is an automated email from the ASF dual-hosted git repository.

nightowl888 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/lucenenet.git

commit 4efd97145ccbb6814f9c5ea85aff03aa81d8debc
Author: Shad Storhaug <[email protected]>
AuthorDate: Thu Dec 3 07:25:35 2020 +0700

    Lucene.Net.Support.Document.Field.Number: Changed default format provider 
to J2N.Text.StringFormatter and added support for passing other custom 
formatters
---
 src/Lucene.Net/Support/Document/Field.cs | 131 ++++++++-----------------------
 1 file changed, 32 insertions(+), 99 deletions(-)

diff --git a/src/Lucene.Net/Support/Document/Field.cs 
b/src/Lucene.Net/Support/Document/Field.cs
index 1198aa9..0e7c2aa 100644
--- a/src/Lucene.Net/Support/Document/Field.cs
+++ b/src/Lucene.Net/Support/Document/Field.cs
@@ -1,4 +1,5 @@
 using System;
+using System.Globalization;
 
 namespace Lucene.Net.Documents
 {
@@ -77,13 +78,35 @@ namespace Lucene.Net.Documents
                 return (short)GetInt32Value();
             }
 
-            public abstract override string ToString(); 
+            public override string ToString()
+            {
+                return ToString(null, J2N.Text.StringFormatter.CurrentCulture);
+            }
 
-            public abstract string ToString(string format);
+            public virtual string ToString(string format)
+            {
+                return ToString(format, 
J2N.Text.StringFormatter.CurrentCulture);
+            }
 
-            public abstract string ToString(IFormatProvider provider);
+            public virtual string ToString(IFormatProvider provider)
+            {
+                return ToString(null, provider);
+            }
 
             public abstract string ToString(string format, IFormatProvider 
provider);
+
+            internal string ToString(string format, IFormatProvider provider, 
IFormattable value)
+            {
+                // Fast path: For standard .NET formatting using cultures, 
call IFormattable.ToString() to eliminate
+                // boxing associated with string.Format().
+                if (provider is null || provider is CultureInfo || provider is 
NumberFormatInfo)
+                {
+                    return value.ToString(format, provider);
+                }
+                // Built-in .NET numeric types don't support custom format 
providers, so we resort
+                // to using string.Format with some hacky format conversion in 
order to support them.
+                return string.Format(provider, format is null ? "{0}" : "{0:" 
+ format + '}', value);
+            }
         }
 
 #if FEATURE_SERIALIZABLE
@@ -121,24 +144,9 @@ namespace Lucene.Net.Documents
                 return value;
             }
 
-            public override string ToString()
-            {
-                return value.ToString();
-            }
-
-            public override string ToString(string format)
-            {
-                return value.ToString(format);
-            }
-
-            public override string ToString(IFormatProvider provider)
-            {
-                return value.ToString(provider);
-            }
-
             public override string ToString(string format, IFormatProvider 
provider)
             {
-                return value.ToString(format, provider);
+                return ToString(format, provider, value);
             }
         }
 
@@ -182,24 +190,9 @@ namespace Lucene.Net.Documents
                 return value;
             }
 
-            public override string ToString()
-            {
-                return value.ToString();
-            }
-
-            public override string ToString(string format)
-            {
-                return value.ToString(format);
-            }
-
-            public override string ToString(IFormatProvider provider)
-            {
-                return value.ToString(provider);
-            }
-
             public override string ToString(string format, IFormatProvider 
provider)
             {
-                return value.ToString(format, provider);
+                return ToString(format, provider, value);
             }
         }
 
@@ -238,24 +231,9 @@ namespace Lucene.Net.Documents
                 return value;
             }
 
-            public override string ToString()
-            {
-                return value.ToString();
-            }
-
-            public override string ToString(string format)
-            {
-                return value.ToString(format);
-            }
-
-            public override string ToString(IFormatProvider provider)
-            {
-                return value.ToString(provider);
-            }
-
             public override string ToString(string format, IFormatProvider 
provider)
             {
-                return value.ToString(format, provider);
+                return ToString(format, provider, value);
             }
         }
 
@@ -294,24 +272,9 @@ namespace Lucene.Net.Documents
                 return value;
             }
 
-            public override string ToString()
-            {
-                return value.ToString();
-            }
-
-            public override string ToString(string format)
-            {
-                return value.ToString(format);
-            }
-
-            public override string ToString(IFormatProvider provider)
-            {
-                return value.ToString(provider);
-            }
-
             public override string ToString(string format, IFormatProvider 
provider)
             {
-                return value.ToString(format, provider);
+                return ToString(format, provider, value);
             }
         }
 
@@ -350,24 +313,9 @@ namespace Lucene.Net.Documents
                 return (long)value;
             }
 
-            public override string ToString()
-            {
-                return value.ToString();
-            }
-
-            public override string ToString(string format)
-            {
-                return value.ToString(format);
-            }
-
-            public override string ToString(IFormatProvider provider)
-            {
-                return value.ToString(provider);
-            }
-
             public override string ToString(string format, IFormatProvider 
provider)
             {
-                return value.ToString(format, provider);
+                return ToString(format, provider, value);
             }
         }
 
@@ -406,24 +354,9 @@ namespace Lucene.Net.Documents
                 return (long)value;
             }
 
-            public override string ToString()
-            {
-                return value.ToString();
-            }
-
-            public override string ToString(string format)
-            {
-                return value.ToString(format);
-            }
-
-            public override string ToString(IFormatProvider provider)
-            {
-                return value.ToString(provider);
-            }
-
             public override string ToString(string format, IFormatProvider 
provider)
             {
-                return value.ToString(format, provider);
+                return ToString(format, provider, value);
             }
         }
     }

Reply via email to