private TranslationContainer SplitUnit(Unit unit, string text, bool isCData = true) { string[] paragraphs; if (isCData) { paragraphs = text.SplitByDefaultTags(); } else { paragraphs = text.SplitPlainText(); } if (paragraphs.Count() == 0) { return(unit); } else if (!isCData && paragraphs.Count() == 1) { return(unit); } else { var newGroup = new Group(unit.Id + "-g"); newGroup.Name = unit.Name; 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; } var i = 0; foreach (var para in paragraphs) { i++; var paraUnit = new Unit(unit.Id + "-" + i); var newSegment = new Segment(); var source = new Source(); ResourceStringContent content; if (isCData) { string containingTag = para.GetContainingTag(); string newContent = para.RemoveContainingTag(); paraUnit.Name = containingTag; if (newContent.IsHtml()) { content = new CDataTag(newContent); } else { content = new PlainText(newContent); } } else { content = new PlainText(para); } source.Text.Add(content); newSegment.Source = source; paraUnit.Resources.Add(newSegment); newGroup.Containers.Add(paraUnit); } 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; } } return(newGroup); } }
private TranslationContainer SplitUnit(Unit unit, string text, bool isCData = true) { SimplifiedHtmlContentItem[] paragraphs; if (isCData) { paragraphs = _htmlParser.SplitHtml(text); } else { paragraphs = _htmlParser.SplitPlainText(text); } if (paragraphs.Count() == 0) { return(unit); } else if (!isCData && paragraphs.Count() == 1) { return(unit); } else { var newGroup = new Group(unit.Id + "-g"); newGroup.Type = unit.Type; newGroup.Name = unit.Name; 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; } var i = 0; foreach (var para in paragraphs) { i++; var paraUnit = new Unit(unit.Id + "-" + i); var newSegment = new Segment(); if (para.Attributes.Count() > 0) { var newMetadataContainer = new MetadataContainer(); var attributeMetaGroup = new MetaGroup(); attributeMetaGroup.Id = ORIGINALATTRIBUTES; foreach (var attribute in para.Attributes) { var newElement = new Meta(attribute.Key, attribute.Value); attributeMetaGroup.Containers.Add(newElement); } newMetadataContainer.Groups.Add(attributeMetaGroup); paraUnit.Metadata = newMetadataContainer; } var source = new Source(); ResourceStringContent content; if (isCData) { string containingTag = para.Name; string newContent = para.InnerContent(); if (!string.IsNullOrWhiteSpace(containingTag)) { paraUnit.Type = _htmlParser.ToXliffHtmlType(containingTag); } if (newContent.IsHtml()) { content = new CDataTag(newContent); } else { content = new PlainText(newContent); } } else { content = new PlainText(para.Content); } source.Text.Add(content); newSegment.Source = source; paraUnit.Resources.Add(newSegment); newGroup.Containers.Add(paraUnit); } 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; } } return(newGroup); } }
public void TestInitialize() { this.element = new CDataTag(); this.provider = this.element; }
public void TestInitialize() { this.element = new CDataTag(); this.provider = this.element; }