public override bool ParseNext() { string currentLine; while ((currentLine = _extendedStreamReader.ReadLineWithEofLine()) != null) { ProgressInPercent = (byte)(_extendedStreamReader.CurrentLineNumber * 100 / _totalNumberOfLines); var parseResult = _lineParsingSession.Parse(currentLine); _entryBuilder.Add(parseResult, _extendedStreamReader.CurrentLineNumber); if (_entryBuilder.CompleteEntry == null || string.IsNullOrEmpty(_entryBuilder.CompleteEntry.MessageId)) { continue; } var paragraphUnit = _paragraphUnitFactory.Create( _entryBuilder.CompleteEntry, _segmentSettings.SourceLineType, _segmentSettings.IsTargetTextNeeded); Output.ProcessParagraphUnit(paragraphUnit); return(parseResult.LineType != LineType.EndOfFile); } return(false); }
public void ProcessParagraphUnit(IParagraphUnit paragraphUnit) { var contextInfo = paragraphUnit.Properties.Contexts.Contexts[1]; var messageStringStart = int.Parse(contextInfo.GetMetaData(ContextKeys.MetaMessageStringStart)); var messageStringEnd = int.Parse(contextInfo.GetMetaData(ContextKeys.MetaMessageStringEnd)); string currentOriginalLine; while ((currentOriginalLine = _extendedStreamReader.ReadLineWithEofLine()) != null) { if (_extendedStreamReader.CurrentLineNumber < messageStringStart) { _streamWriter.WriteLine(currentOriginalLine); } var parseResult = _lineParsingSession.Parse(currentOriginalLine); _entryBuilder.Add(parseResult, _extendedStreamReader.CurrentLineNumber); var completeEntry = _entryBuilder.CompleteEntry; if (completeEntry == null || string.IsNullOrEmpty(completeEntry.MessageId)) { continue; } WriteMessageString(paragraphUnit, completeEntry.IsPluralForm); if (_extendedStreamReader.CurrentLineNumber > messageStringEnd && parseResult.LineType != LineType.EndOfFile) { _streamWriter.WriteLine(currentOriginalLine); } break; } }