public XliffDocument ExecuteExtraction(XliffDocument document) { var units = document.CollapseChildren <Unit>(); foreach (var unit in units) { var originalData = new OriginalData(); foreach (var resource in unit.Resources) { var segment = resource as Segment; if (segment != null) { var cdata = segment.Source.Text[0] as CDataTag; if (cdata == null) { continue; } var html = cdata.Text; var inlineCodeExtraction = html.ConvertHtmlTagsInInLineCodes(); foreach (var data in inlineCodeExtraction.OriginalData) { originalData.AddData(data.Value, data.Key); } segment.Source.Text.Clear(); segment.Source.Text.AddAll(inlineCodeExtraction.Text); } } if (originalData.HasData) { unit.OriginalData = originalData; } } return(document); }
public XliffDocument ExecuteExtraction(XliffDocument document) { var units = document.CollapseChildren <Unit>(); foreach (var unit in units) { var originalData = new OriginalData(); var subflows = new Dictionary <string, string>(); foreach (var resource in unit.Resources) { var segment = resource as Segment; if (segment != null) { var cdata = segment.Source.Text[0] as CDataTag; if (cdata == null) { continue; } var html = cdata.Text; var inlineCodeExtraction = html.ConvertHtmlTagsInInLineCodes(unit.Id + "-"); foreach (var data in inlineCodeExtraction.OriginalData) { originalData.AddData(data.Value, data.Key); } segment.Source.Text.Clear(); segment.Source.Text.AddAll(inlineCodeExtraction.Text); if (inlineCodeExtraction.SubFlow.Count > 0) { subflows = inlineCodeExtraction.SubFlow; } } } if (originalData.HasData) { unit.OriginalData = originalData; } if (subflows.Count > 0) { var newGroup = new Group(unit.Id + "-g"); newGroup.Type = unit.Type; newGroup.Name = unit.Name; unit.Type = null; if (unit.Metadata != null) { var newMetadataContainer = new MetadataContainer(); foreach (var metaGroup in unit.Metadata.Groups) { var newMetaGroup = new MetaGroup(); newMetaGroup.Id = metaGroup.Id; foreach (Meta item in metaGroup.Containers) { var newElement = new Meta(item.Type, item.NonTranslatableText); newMetaGroup.Containers.Add(newElement); } newMetadataContainer.Groups.Add(newMetaGroup); } newGroup.Metadata = newMetadataContainer; unit.Metadata = null; } foreach (var subflowItem in subflows) { var subFlowUnit = new Unit(subflowItem.Key); var newSegment = new Segment(); var source = new Source(); var content = new PlainText(subflowItem.Value); source.Text.Add(content); newSegment.Source = source; subFlowUnit.Resources.Add(newSegment); newGroup.Containers.Add(subFlowUnit); } var parentFile = unit.Parent as File; if (parentFile != null) { var index = parentFile.Containers.IndexOf(unit); parentFile.Containers[index] = newGroup; } else { var parentGroup = unit.Parent as Group; if (parentGroup != null) { var index = parentGroup.Containers.IndexOf(unit); parentGroup.Containers[index] = newGroup; } } newGroup.Containers.Add(unit); } } return(document); }