/// <summary> /// Wrap <paramref name="wrappingElement"/> around the content of the element /// </summary> public static HElement WrapInner(this HElement element, HElement wrappingElement) { if (element != null && wrappingElement != null) { if (element.HasNodes) { element.Nodes().ToList().WrapAll(wrappingElement); } else { element.Append(wrappingElement.Clone()); } } return(element); }
/// <summary> /// Wrap <paramref name="wrappingElement"/> around the element /// </summary> public static T Wrap <T>(this T element, HElement wrappingElement) where T : HNode { if (element != null && wrappingElement != null) { var we = wrappingElement.Clone(); var dp = we; while (dp.HasElements) { dp = dp.Elements().First(); } if (element.Parent != null) { element.ReplaceWith(we); } dp.Append(element); } return(element); }
/// <summary> /// Wrap <paramref name="wrappingElement"/> around all elements of the set. /// </summary> public static IEnumerable <T> WrapAll <T>(this IEnumerable <T> elements, HElement wrappingElement) where T : HNode { if (elements != null) { var we = wrappingElement.Clone(); var first = elements.FirstOrDefault(e => e != null); if (first != null) { first.ReplaceWith(we); var dp = we; while (dp.HasElements) { dp = dp.Elements().First(); } elements.Where(e => e != first).Remove(); dp.Append(elements); } } return(elements); }