// helper function for creating segment objects private ISegment CreateSegment(XmlNode segNode, ISegmentPairProperties pair, bool source) { int i = 1; ISegment segment = ItemFactory.CreateSegment(pair); if (source) { _srcSegmentTagCount = 0; if (_totalTagCount < _tmpTotalTagCount) { _totalTagCount = _tmpTotalTagCount; } } else { _totalTagCount = _totalTagCount - _srcSegmentTagCount; } foreach (XmlNode item in segNode.ChildNodes) { if (item.NodeType == XmlNodeType.Text) { segment.Add(CreateText(item.InnerText)); } if (item.NodeType == XmlNodeType.Element) { segment.Add(CreatePhTag(item.Name, item, i, source)); i++; } } return(segment); }
private void PopulateSegment(ISegment segment, XmlNode node, bool source) { int i = 1; foreach (XmlNode item in node.ChildNodes) { if (item.NodeType == XmlNodeType.Text) { foreach (var chunk in Regex.Split(item.InnerText, @"((?:{|<)\^*[a-z0-9]{0,2}(?:>|}))")) { if (Regex.IsMatch(chunk, @"((?:{|<)\^*[a-z0-9]{0,2}(?:>|}))")) { segment.Add(CreatePhTag(chunk, i, source)); i++; } else { if (!string.IsNullOrEmpty(chunk)) { segment.Add(CreateText(chunk)); } } } } if (item.NodeType == XmlNodeType.Element) { segment.Add(CreatePhTag(item.OuterXml, i, source)); i++; } } }
public void Create_WhenHasPluralFormAndTargetNeeded_ShouldAddMsgidpluralWithThirdMsgstr() { // Arrange var testee = CreateTestee(); var entry = new Entry { MessageId = "message id", MessageIdPlural = "message id plural", MessageStringPlurals = new List <string> { "message string 0", "message string 1", "message string 2", }, }; // Act testee.Create(entry, LineType.MessageId, true); // Assert A.CallTo(() => _sourceSegment2Mock.Add(_textMsgidPluralMock)).MustHaveHappened(); A.CallTo(() => _targetSegment2Mock.Add(_textMsgstr2Mock)).MustHaveHappened(); A.CallTo(() => _paragraphSourceMock.Add(_sourceSegment2Mock)).MustHaveHappened(); A.CallTo(() => _paragraphTargetMock.Add(_targetSegment2Mock)).MustHaveHappened(); }
public override ISegment Add(ISegment segment) { switch (segment.SegmentType) { case SegmentType.Field: case SegmentType.Value: case SegmentType.Query: if (Left == null && !(_mode == CompareSegmentMode.Exists || _mode == CompareSegmentMode.NotExists)) { Left = segment; } else { Right = segment; } return(this); case SegmentType.Group: var groupFunctionSegment = (GroupFunctionSegment)segment; if (groupFunctionSegment.SegmentToGroup == null) { if (Right != null && Right.SegmentType == SegmentType.Field) { groupFunctionSegment.SegmentToGroup = (FieldSegment)Right; Right = groupFunctionSegment; } else if (Left != null && Left.SegmentType == SegmentType.Field) { groupFunctionSegment.SegmentToGroup = (FieldSegment)Left; Left = groupFunctionSegment; } } else { if (Left == null && !(Mode == CompareSegmentMode.Exists || Mode == CompareSegmentMode.NotExists)) { Left = segment; } else { Right = segment; } } return(this); case SegmentType.Merge: segment.Add(this); Parent = segment; return(segment); case SegmentType.Compare: throw new ExpressionParsingException("Cannot add compare segment to compare segment"); default: return(this); } }
public void Create_ShouldAddText() { // Arrange var testee = CreateTestee(); var entry = new Entry { MessageId = "message id", MessageString = "message string", }; // Act testee.Create(entry, LineType.MessageId, false); // Assert A.CallTo(() => _sourceSegment0Mock.Add(_textMsgidMock)).MustHaveHappened(); }
// helper function for creating segment objects private ISegment CreateSegment(XmlNode segNode, ISegmentPairProperties pair) { ISegment segment = ItemFactory.CreateSegment(pair); foreach (XmlNode item in segNode.ChildNodes) { if (item.NodeType == XmlNodeType.Text) { segment.Add(CreateText(item.InnerText)); } if (item.NodeType == XmlNodeType.Element) { segment.Add(CreateTagPair(item)); } } return(segment); }
public void Create_WhenTargetTextIsNeeded_ShouldAddTargetText() { // Arrange var testee = CreateTestee(); var entry = new Entry { MessageId = "message id", MessageString = "message string", }; // Act testee.Create(entry, LineType.MessageId, true); // Assert A.CallTo(() => _targetSegment0Mock.Add(_textMsgstrMock)).MustHaveHappened(); A.CallTo(() => _paragraphTargetMock.Add(_targetSegment0Mock)).MustHaveHappened(); }
// helper function for creating segment objects private ISegment CreateSegment(XmlNode segNode, ISegmentPairProperties pair, bool source) { ISegment segment = ItemFactory.CreateSegment(pair); if (source) { _srcSegment = segment; srcSegmentTagCount = 0; if (totalTagCount < tmpTotalTagCount) { totalTagCount = tmpTotalTagCount; } } else { _trgSegment = segment; totalTagCount = totalTagCount - srcSegmentTagCount; } if (segNode != null) { foreach (XmlNode item in segNode.ChildNodes) { if (item.NodeType == XmlNodeType.Text) { segment.Add(CreateText(item.InnerText)); } if (item.NodeType == XmlNodeType.Element) { segment.Add(CreatePhTag(item.Name, item, source)); } if (item.NodeType == XmlNodeType.Whitespace) { segment.Add(CreateText(" ")); } } } return(segment); }
public override ISegment Add(ISegment segment) { switch (segment.SegmentType) { case SegmentType.Field: case SegmentType.Value: case SegmentType.Query: case SegmentType.Group: throw new ExpressionParsingException("Cannot add field/value/query/group segments to field segment"); case SegmentType.Merge: segment.Add(this); return(segment); case SegmentType.Compare: segment.Add(this); return(segment); default: return(this); } }