private static List <SegmentRange> GetRangeList(List <string> idsRange)
        {
            var segmentsRangeList = new List <SegmentRange>();

            foreach (var idRange in idsRange)
            {
                if (idRange.Contains("-"))
                {
                    var minValue     = idRange.Substring(0, idRange.IndexOf('-'));
                    var maxValue     = idRange.Substring(idRange.IndexOf('-') + 1);
                    var segmentRange = new SegmentRange
                    {
                        Min = Parse(minValue),
                        Max = Parse(maxValue)
                    };
                    segmentsRangeList.Add(segmentRange);
                }
            }
            return(segmentsRangeList);
        }
Пример #2
0
        public static bool IsInFuzzyRange(DisplayFilterRowInfo row, string fuzzyMin, string fuzzyMax)
        {
            try
            {
                var segmentMatchPercent = Parse(row.SegmentPair.Properties.TranslationOrigin.MatchPercent.ToString());

                var fuzzyRange = new SegmentRange
                {
                    Min = Parse(fuzzyMin),
                    Max = Parse(fuzzyMax)
                };
                if (Enumerable.Range(fuzzyRange.Min, fuzzyRange.Max - fuzzyRange.Min + 1).Contains(segmentMatchPercent))
                {
                    return(true);
                }
            }
            catch (Exception e)
            {
                // ignored
            }

            return(false);
        }
Пример #3
0
 /// <summary>
 /// Creates a new instance of Part
 /// </summary>
 /// <param name="allVertices">An array of all the vertex locations</param>
 /// <param name="shapeOffset">The point index of the shape. </param>
 /// <param name="partOffset">The ponit index of the part.</param>
 /// <param name="featureType">The type of features.</param>
 public PartRange(double[] allVertices, int shapeOffset, int partOffset , FeatureTypes featureType):
     base(allVertices, shapeOffset, partOffset)
 {
     _segments = new SegmentRange(this, featureType);
     _featureType = featureType;
 }
Пример #4
0
        private List <SegmentRange> CollectConcordanceMatchRanges(Segment segment, string searchString)
        {
            var words = GetListOfSimpleWords(searchString);

            var concordanceMatchRanges = new List <SegmentRange>();


            foreach (var word in words)
            {
                var run          = 0;
                var searchLength = word.Length;
                var wordBuilder  = string.Empty;
                foreach (var element in segment.Elements)
                {
                    var text = element as Text;
                    if (text == null || string.IsNullOrEmpty(text.Value))
                    {
                        continue;
                    }
                    var index = text.Value.IndexOf(word, StringComparison.OrdinalIgnoreCase);

                    while (index >= 0 && index < text.Value.Length)
                    {
                        var segmentRange = new SegmentRange(run, index, index + searchLength - 1);

                        #region  |  test boundry  |
                        var prefixBoundry = true;
                        //test that the beginning is a boundry character
                        if (index > 0)
                        {
                            var c = Convert.ToChar(text.Value.Substring(index - 1, 1));
                            if (!char.IsWhiteSpace(c) &&
                                !char.IsPunctuation(c))
                            {
                                prefixBoundry = false;
                            }
                        }
                        else if (wordBuilder != string.Empty)
                        {
                            var c = Convert.ToChar(wordBuilder.Substring(wordBuilder.Length - 1));
                            if (!char.IsWhiteSpace(c) &&
                                !char.IsPunctuation(c))
                            {
                                prefixBoundry = false;
                            }
                        }

                        var suffixBountry = true;
                        if (index + searchLength + 1 < text.Value.Length)
                        {
                            var c = Convert.ToChar(text.Value.Substring(index + searchLength, 1));
                            if (!char.IsWhiteSpace(c) &&
                                !char.IsPunctuation(c))
                            {
                                suffixBountry = false;
                            }
                        }
                        #endregion
                        if (prefixBoundry && suffixBountry)
                        {
                            concordanceMatchRanges.Add(segmentRange);
                        }

                        index += searchLength;
                        if (index < text.Value.Length)
                        {
                            index = text.Value.IndexOf(word, index, StringComparison.OrdinalIgnoreCase);
                        }
                    }

                    run++;

                    wordBuilder += text.Value;
                }
            }
            return(concordanceMatchRanges);
        }