SplitRun() static private method

static private SplitRun ( Run r, int index, EditType type = EditType.ins ) : System.Xml.Linq.XElement[]
r Run
index int
type EditType
return System.Xml.Linq.XElement[]
Ejemplo n.º 1
0
        static internal XElement[] SplitParagraph(Paragraph p, int index)
        {
            // In this case edit dosent really matter, you have a choice.
            Run r = p.GetFirstRunEffectedByEdit(index, EditType.ins);

            XElement[] split;
            XElement   before, after;

            if (r.Xml.Parent.Name.LocalName == "ins")
            {
                split  = p.SplitEdit(r.Xml.Parent, index, EditType.ins);
                before = new XElement(p.Xml.Name, p.Xml.Attributes(), r.Xml.Parent.ElementsBeforeSelf(), split[0]);
                after  = new XElement(p.Xml.Name, p.Xml.Attributes(), r.Xml.Parent.ElementsAfterSelf(), split[1]);
            }

            else if (r.Xml.Parent.Name.LocalName == "del")
            {
                split = p.SplitEdit(r.Xml.Parent, index, EditType.del);

                before = new XElement(p.Xml.Name, p.Xml.Attributes(), r.Xml.Parent.ElementsBeforeSelf(), split[0]);
                after  = new XElement(p.Xml.Name, p.Xml.Attributes(), r.Xml.Parent.ElementsAfterSelf(), split[1]);
            }

            else
            {
                split = Run.SplitRun(r, index);

                before = new XElement(p.Xml.Name, p.Xml.Attributes(), r.Xml.ElementsBeforeSelf(), split[0]);
                after  = new XElement(p.Xml.Name, p.Xml.Attributes(), split[1], r.Xml.ElementsAfterSelf());
            }

            if (before.Elements().Count() == 0)
            {
                before = null;
            }

            if (after.Elements().Count() == 0)
            {
                after = null;
            }

            return(new XElement[] { before, after });
        }
Ejemplo n.º 2
0
        internal static XElement[] SplitParagraph(Paragraph p, int index)
        {
            Run      firstRunEffectedByEdit = p.GetFirstRunEffectedByEdit(index);
            XElement xElement;
            XElement xElement2;

            if (firstRunEffectedByEdit.Xml.Parent.Name.LocalName == "ins")
            {
                XElement[] array = p.SplitEdit(firstRunEffectedByEdit.Xml.Parent, index, EditType.ins);
                xElement  = new XElement(p.Xml.Name, p.Xml.Attributes(), firstRunEffectedByEdit.Xml.Parent.ElementsBeforeSelf(), array[0]);
                xElement2 = new XElement(p.Xml.Name, p.Xml.Attributes(), firstRunEffectedByEdit.Xml.Parent.ElementsAfterSelf(), array[1]);
            }
            else if (firstRunEffectedByEdit.Xml.Parent.Name.LocalName == "del")
            {
                XElement[] array = p.SplitEdit(firstRunEffectedByEdit.Xml.Parent, index, EditType.del);
                xElement  = new XElement(p.Xml.Name, p.Xml.Attributes(), firstRunEffectedByEdit.Xml.Parent.ElementsBeforeSelf(), array[0]);
                xElement2 = new XElement(p.Xml.Name, p.Xml.Attributes(), firstRunEffectedByEdit.Xml.Parent.ElementsAfterSelf(), array[1]);
            }
            else
            {
                XElement[] array = Run.SplitRun(firstRunEffectedByEdit, index);
                xElement  = new XElement(p.Xml.Name, p.Xml.Attributes(), firstRunEffectedByEdit.Xml.ElementsBeforeSelf(), array[0]);
                xElement2 = new XElement(p.Xml.Name, p.Xml.Attributes(), array[1], firstRunEffectedByEdit.Xml.ElementsAfterSelf());
            }
            if (xElement.Elements().Count() == 0)
            {
                xElement = null;
            }
            if (xElement2.Elements().Count() == 0)
            {
                xElement2 = null;
            }
            return(new XElement[2]
            {
                xElement,
                xElement2
            });
        }