private bool IsActiveSegmentText(string text, ILanguage source) { if (text == null || source == null) { return(false); } var selectedSegmentPair = _editorController?.ActiveDocument?.GetActiveSegmentPair(); if (selectedSegmentPair?.Source == null) { return(true); } var regex = new Regex(@"[\s\t]+", RegexOptions.None); var searchText = regex.Replace(text, string.Empty); var segment = new Segment(source.Locale); var segmentVisitor = new SegmentVisitor(segment, true); segmentVisitor.VisitSegment(selectedSegmentPair.Source); var sourceText = regex.Replace(segmentVisitor.Segment.ToPlain(), string.Empty); return(string.Compare(searchText, sourceText, StringComparison.InvariantCultureIgnoreCase) == 0); }
private void AddComments(ISegment segment) { _segmentVisitor.VisitSegment(segment); foreach (var comment in _segmentVisitor.Comments) { _comments.Add(comment); } }
private List <AlignmentInfo> NormalizeAlignment(List <AlignmentInfo> alignments) { if (!alignments.Exists(a => a.Alignment == AlignmentInfo.AlignmentType.None)) { return(alignments); } var sourceRight = string.Empty; var sourceLeft = string.Empty; foreach (var alignmentInfo in alignments) { if (alignmentInfo.Alignment == AlignmentInfo.AlignmentType.Matched || alignmentInfo.Alignment == AlignmentInfo.AlignmentType.Removed || alignmentInfo.Alignment == AlignmentInfo.AlignmentType.LeftOnly || alignmentInfo.Alignment == AlignmentInfo.AlignmentType.None) { _segmentVisitor.VisitSegment(alignmentInfo.SegmentPairLeft.Source); sourceLeft += RemoveWhiteSpaces(_segmentVisitor.Text); if (alignmentInfo.Alignment == AlignmentInfo.AlignmentType.None) { alignmentInfo.Alignment = sourceLeft.Length <= sourceRight.Length ? AlignmentInfo.AlignmentType.Removed : AlignmentInfo.AlignmentType.LeftOnly; } } if (alignmentInfo.Alignment == AlignmentInfo.AlignmentType.Added || alignmentInfo.Alignment == AlignmentInfo.AlignmentType.Matched) { _segmentVisitor.VisitSegment(alignmentInfo.SegmentPairRight.Source); sourceRight += RemoveWhiteSpaces(_segmentVisitor.Text); } if (alignmentInfo.Alignment == AlignmentInfo.AlignmentType.LeftOnly) { sourceRight += RemoveWhiteSpaces(_segmentVisitor.Text); } } return(alignments); }
private static SegmentVisitor SegmentVisitor(ISegment seg, CultureInfo culture) { var segment = new Segment(culture); var visitor = new SegmentVisitor(segment, false); visitor.VisitSegment(seg); return(visitor); }