public override FluentString To(NumericStringSelector context) { return base.To(context); }
public override FluentString From(NumericStringSelector context) { return base.From(context); }
/// <summary> /// Reverses the previous NumberStringSelector. /// For a string = "aaaa", 2.nd("a") refers to index 1 where as 2.nd("a").Last() refers to index 2 /// </summary> /// <returns> /// new instance /// </returns> public NumericStringSelector Last() { NumericStringSelector clone = new NumericStringSelector(Number, SearchString, ContextDirection.Backward); return clone; }
public static NumericStringSelector operator +(int n, NumericStringSelector selector) { NumericStringSelector clone = new NumericStringSelector(selector.Number, selector.SearchString, selector.Direction, selector.Skipped + n); return clone; }
private FluentString PerformSubstring(NumericStringSelector context, bool isFrom, bool fromBeginning) { int nIndex = -1; FluentString result = null; switch (context.Direction) { case NumericStringSelector.ContextDirection.Forward: nIndex = StringHelper.IndexOf(OriginalString, context.SearchString, BeginIndex, context.Number, EndIndex); break; case NumericStringSelector.ContextDirection.Backward: nIndex = StringHelper.ReverseIndexOf(OriginalString, context.SearchString, EndIndex, context.Number); break; } //if we can't find something we want an exception always if (nIndex == -1) { throw new ArgumentOutOfRangeException("Could not find " + context.SearchString); } else { nIndex += context.Skipped; if (isFrom) { //if last operation was from, we want to change start result = new FluentString(OriginalString, PreviousOperation, nIndex, EndIndex); } else { //if last operation was to, we want to change the end result = new FluentString(OriginalString, PreviousOperation, BeginIndex, nIndex); } } return result; }
/// <summary> /// Creates a new instance of FluentString that represents a substring that ends with some instance of a string as represented by context /// /// </summary> /// <param name="context"> /// Indicates the n-th occurence of a string from which the substring should end. /// i.e. 2.nd("foo") /// </param> /// <returns> /// A new instance of FluentString. /// </returns> /// <example> /// "abab".To(2.nd("a")) represents "aba" /// </example> public virtual FluentString To(NumericStringSelector context) { return PerformSubstring(context, false, false); }
public static NumericStringSelector The(NumericStringSelector selection) { int cSkipped = selection.SearchString.Length; return new NumericStringSelector(selection.Number, selection.SearchString, selection.Direction, -1); }