/// <summary> /// /// </summary> /// <param name="tokens"></param> private static void FillTokensReferences(TextTokenPartInfo part) { for (int index = 0; index < part.TokensCount; index++) { FillTokenReference(index, part); } }
/// <summary> /// /// </summary> /// <param name="index"></param> /// <param name="part"></param> private static void FillTokenReference(int index, TextTokenPartInfo part) { var token = part.Tokens[index]; token.TokenPart = part; token.TokenPartNumber = part.PartNumber; token.TokenNumber = index + 1; token.PreviousToken = GetPreviousToken(index, part); token.NextToken = GetNextToken(index, part); }
/// <summary> /// /// </summary> /// <param name="textPart"></param> /// <returns></returns> private TextTokenPartInfo GetTokenPart(TextPartInfo textPart) { var info = new TextTokenPartInfo(); info.PartNumber = textPart.PartNumber; var texts = textPart.Text.Split(new string[] { Splitter }, StringSplitOptions.None).ToList(); info.Tokens = texts.Select(s => GetToken(textPart.PartNumber, s)).ToList(); return(info); }
/// <summary> /// /// </summary> /// <param name="textPart"></param> /// <returns></returns> private TextTokenPartInfo GetTokenPart(TextPartInfo textPart) { var info = new TextTokenPartInfo(); info.PartNumber = textPart.PartNumber; var texts = Regex.Split(textPart.Text, Splitter); info.Tokens = texts.Select(s => GetToken(textPart.PartNumber, s)).ToList(); return(info); }
/// <summary> /// /// </summary> /// <param name="index"></param> /// <param name="part"></param> /// <returns></returns> private static TextTokenInfo GetPreviousToken(int index, TextTokenPartInfo part) { var tokens = part.Tokens; var token = tokens[index]; var previousIndex = index - 1; if (previousIndex >= 0) { return(tokens[previousIndex]); } if (token.PreviousToken == null && index == 0) { return(part.PreviousPart?.Tokens?.LastOrDefault()); } return(null); }
/// <summary> /// /// </summary> /// <param name="index"></param> /// <param name="part"></param> /// <returns></returns> private static TextTokenInfo GetNextToken(int index, TextTokenPartInfo part) { var tokens = part.Tokens; var token = tokens[index]; var nextPrevious = index + 1; if (nextPrevious < tokens.Count) { return(tokens[nextPrevious]); } if (token.NextToken == null && tokens.IsLast(token)) { return(part.NextPart?.Tokens?.FirstOrDefault()); } return(null); }
/// <summary> /// /// </summary> /// <param name="tokenPart"></param> /// <param name="filters"></param> private static void FilterPageTokens(TextTokenPartInfo tokenPart, List <TextTokenFilter> filters) { tokenPart.Tokens.ForEach(f => FilterToken(f, filters)); }