コード例 #1
0
ファイル: Regex.cs プロジェクト: AirKuma/AirProject
        //============================================================

        private static int SeekWithoutClamping(this StringView str, int start, SeekMode mode, Ward1D ward)
        {
            if (mode == SeekMode.MoveOneChar)
            {
                return(start + ward.GetOffset());
            }
            else if (mode == SeekMode.UntilNewline)
            {
                if (ward == Ward1D.Backward)
                {
                    return(str.FindLast('\n', start + 1));
                }
                else if (ward == Ward1D.Forward)
                {
                    return(str.FindFirst('\n', start));
                }
            }
            else
            {
                Debug.Assert((mode
                              & (SeekMode.LiterallySpaced | SeekMode.PassingQuotation | SeekMode.BracketBalanced)) != 0);
                if (ward == Ward1D.Backward)
                {
                    return(str.SeekToSpaceBalanced(start, mode, -1, -1) - 1);
                }
                else if (ward == Ward1D.Forward)
                {
                    return(str.SeekToSpaceBalanced(start + 1, mode, 1, 0));
                }
            }
            throw new Exception();
        }
コード例 #2
0
ファイル: Regex.cs プロジェクト: AirKuma/AirProject
 public static int GetLastSpaceBoundary(this StringView str)
 {
     return(str.FindLast(ChrCategory.WhitespacePredicate.InvertCondition()));
 }
コード例 #3
0
ファイル: Regex.cs プロジェクト: AirKuma/AirProject
 public static int FindLast(this StringView str, char c, int start)
 {
     return(str.FindLast((char chr) => chr == c, start));
 }
コード例 #4
0
ファイル: Regex.cs プロジェクト: AirKuma/AirProject
 public static int FindLast(this StringView str, char c)
 {
     return(str.FindLast((char chr) => chr == c, str.Length));
 }
コード例 #5
0
ファイル: Regex.cs プロジェクト: AirKuma/AirProject
 public static int FindLast(this StringView str, System.Predicate <char> pred)
 {
     return(str.FindLast(pred, str.Length));
 }