API: Lucene.Net.Support: Added StringBuilderCharSequenceWrapper class and 
StringBuilder.ToCharSequence() extension method.


Project: http://git-wip-us.apache.org/repos/asf/lucenenet/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucenenet/commit/67199687
Tree: http://git-wip-us.apache.org/repos/asf/lucenenet/tree/67199687
Diff: http://git-wip-us.apache.org/repos/asf/lucenenet/diff/67199687

Branch: refs/heads/master
Commit: 67199687c0f97482307d6b4e6b22482458d48ec9
Parents: a343b98
Author: Shad Storhaug <[email protected]>
Authored: Thu Oct 19 22:23:00 2017 +0700
Committer: Shad Storhaug <[email protected]>
Committed: Thu Oct 19 23:16:55 2017 +0700

----------------------------------------------------------------------
 .../Support/StringBuilderCharSequenceWrapper.cs | 74 ++++++++++++++++++++
 .../Support/StringBuilderExtensions.cs          |  9 +++
 2 files changed, 83 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucenenet/blob/67199687/src/Lucene.Net/Support/StringBuilderCharSequenceWrapper.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net/Support/StringBuilderCharSequenceWrapper.cs 
b/src/Lucene.Net/Support/StringBuilderCharSequenceWrapper.cs
new file mode 100644
index 0000000..19ecfff
--- /dev/null
+++ b/src/Lucene.Net/Support/StringBuilderCharSequenceWrapper.cs
@@ -0,0 +1,74 @@
+using System;
+using System.Text;
+
+namespace Lucene.Net.Support
+{
+    /*
+        * Licensed to the Apache Software Foundation (ASF) under one or more
+        * contributor license agreements.  See the NOTICE file distributed with
+        * this work for additional information regarding copyright ownership.
+        * The ASF licenses this file to You under the Apache License, Version 
2.0
+        * (the "License"); you may not use this file except in compliance with
+        * the License.  You may obtain a copy of the License at
+        *
+        *     http://www.apache.org/licenses/LICENSE-2.0
+        *
+        * Unless required by applicable law or agreed to in writing, software
+        * distributed under the License is distributed on an "AS IS" BASIS,
+        * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 
implied.
+        * See the License for the specific language governing permissions and
+        * limitations under the License.
+        */
+
+    /// <summary>
+    /// An adapter for <see cref="StringBuilder"/> that implements <see 
cref="ICharSequence"/>
+    /// </summary>
+    public class StringBuilderCharSequenceWrapper : ICharSequence
+    {
+        private readonly StringBuilder value;
+
+        public StringBuilderCharSequenceWrapper(StringBuilder wrappedValue)
+        {
+            if (wrappedValue == null)
+                throw new ArgumentNullException("wrappedValue");
+
+            this.value = wrappedValue;
+        }
+
+        // LUCENENET specific - added to .NETify
+        public char this[int index]
+        {
+            get { return value[index]; }
+        }
+
+        public int Length
+        {
+            get { return value.Length; }
+        }
+
+        public ICharSequence SubSequence(int start, int end)
+        {
+            return new StringCharSequenceWrapper(value.ToString(start, end - 
start));
+        }
+
+        public override int GetHashCode()
+        {
+            return value.GetHashCode();
+        }
+
+        public override bool Equals(object obj)
+        {
+            if (obj == null)
+                return false;
+            if (!(obj is StringBuilder))
+                return false;
+
+            return value.Equals(obj as StringBuilder);
+        }
+
+        public override string ToString()
+        {
+            return value.ToString();
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/67199687/src/Lucene.Net/Support/StringBuilderExtensions.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net/Support/StringBuilderExtensions.cs 
b/src/Lucene.Net/Support/StringBuilderExtensions.cs
index 6b02511..d6d543b 100644
--- a/src/Lucene.Net/Support/StringBuilderExtensions.cs
+++ b/src/Lucene.Net/Support/StringBuilderExtensions.cs
@@ -216,5 +216,14 @@ namespace Lucene.Net.Support
 
             return -1;
         }
+
+        /// <summary>
+        /// Convenience method to wrap a string in a <see 
cref="StringBuilderCharSequenceWrapper"/>
+        /// so a <see cref="StringBuilder"/> can be used as <see 
cref="ICharSequence"/> in .NET.
+        /// </summary>
+        public static ICharSequence ToCharSequence(this StringBuilder text)
+        {
+            return new StringBuilderCharSequenceWrapper(text);
+        }
     }
 }
\ No newline at end of file

Reply via email to