diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2017-08-16 02:43:41 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2017-08-16 02:43:41 -0400 |
| commit | bfcd1b520fd79b893e721ba916ae5e1656407d2f (patch) | |
| tree | 6a05119800484435fb384da25c6390054a27c3c3 /Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/Matcher.cs | |
| parent | e3531534b85aeaaa3e4aaf462d5e77ea142dc762 (diff) | |
merge common implementations and server implementations
Diffstat (limited to 'Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/Matcher.cs')
| -rw-r--r-- | Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/Matcher.cs | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/Matcher.cs b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/Matcher.cs new file mode 100644 index 0000000000..d0bd79aa28 --- /dev/null +++ b/Emby.Server.Implementations/IO/SharpCifs/Util/Sharpen/Matcher.cs @@ -0,0 +1,83 @@ +using System; +using System.Text.RegularExpressions; + +namespace SharpCifs.Util.Sharpen +{ + internal class Matcher + { + private int _current; + private MatchCollection _matches; + private Regex _regex; + private string _str; + + internal Matcher (Regex regex, string str) + { + this._regex = regex; + this._str = str; + } + + public int End () + { + if ((_matches == null) || (_current >= _matches.Count)) { + throw new InvalidOperationException (); + } + return (_matches[_current].Index + _matches[_current].Length); + } + + public bool Find () + { + if (_matches == null) { + _matches = _regex.Matches (_str); + _current = 0; + } + return (_current < _matches.Count); + } + + public bool Find (int index) + { + _matches = _regex.Matches (_str, index); + _current = 0; + return (_matches.Count > 0); + } + + public string Group (int n) + { + if ((_matches == null) || (_current >= _matches.Count)) { + throw new InvalidOperationException (); + } + Group grp = _matches[_current].Groups[n]; + return grp.Success ? grp.Value : null; + } + + public bool Matches () + { + _matches = null; + return Find (); + } + + public string ReplaceFirst (string txt) + { + return _regex.Replace (_str, txt, 1); + } + + public Matcher Reset (CharSequence str) + { + return Reset (str.ToString ()); + } + + public Matcher Reset (string str) + { + _matches = null; + this._str = str; + return this; + } + + public int Start () + { + if ((_matches == null) || (_current >= _matches.Count)) { + throw new InvalidOperationException (); + } + return _matches[_current].Index; + } + } +} |
