/// <summary> /// Removes a content element by its name. /// </summary> /// <param name="contentElement">The <see cref="ContentElement"/>.</param> /// <param name="name">The name of the content element.</param> /// <returns><see langword="True"/> is successfully found and removed; otherwise. <see langword="False"/> This method returns false if the name is not found.</returns> public static bool Remove(this ContentElement contentElement, string name) { contentElement.Elements.Remove(name); return(contentElement.Data.Remove(name)); }
/// <summary> /// Adds a content element by name. /// </summary> /// <param name="contentElement">The <see cref="ContentElement"/>.</param> /// <param name="name">The name of the content element.</param> /// <param name="element">The element to add to the <see cref="ContentItem"/>.</param> /// <returns>The current <see cref="ContentItem"/> instance.</returns> public static ContentElement Weld(this ContentElement contentElement, string name, ContentElement element) { if (!contentElement.Data.ContainsKey(name)) { element.Data = JObject.FromObject(element, ContentBuilderSettings.IgnoreDefaultValuesSerializer); element.ContentItem = contentElement.ContentItem; contentElement.Data[name] = element.Data; contentElement.Elements[name] = element; } return(contentElement); }
/// <summary> /// Gets a content element by its name. /// </summary> /// <param name="contentElement">The <see cref="ContentElement"/>.</param> /// <param name="name">The name of the content element.</param> /// <typeparam name="TElement">The expected type of the content element.</typeparam> /// <returns>The content element instance or <code>null</code> if it doesn't exist.</returns> public static TElement Get <TElement>(this ContentElement contentElement, string name) where TElement : ContentElement { return((TElement)contentElement.Get(typeof(TElement), name)); }
/// <summary> /// Gets whether a content element has a specific element attached. /// </summary> /// <param name="contentElement">The <see cref="ContentElement"/>.</param> /// <typeparam name="TElement">The expected type of the content element.</typeparam> public static bool Has <TElement>(this ContentElement contentElement) where TElement : ContentElement { return(contentElement.Has(typeof(TElement).Name)); }
/// <summary> /// Updates the content element with the specified name. /// </summary> /// <param name="contentElement">The <see cref="ContentElement"/>.</param> /// <param name="name">The name of the element to update.</param> /// <param name="element">The content element instance to update.</param> /// <returns>The current <see cref="ContentItem"/> instance.</returns> public static ContentElement Apply(this ContentElement contentElement, string name, ContentElement element) { var elementData = contentElement.Data[name] as JObject; if (elementData != null) { elementData.Merge(JObject.FromObject(element), JsonMergeSettings); } else { elementData = JObject.FromObject(element); contentElement.Data[name] = elementData; } element.Data = elementData; element.ContentItem = contentElement.ContentItem; // Replace the existing content element with the new one contentElement.Elements[name] = element; if (element is ContentField) { contentElement.ContentItem?.Elements.Clear(); } return(contentElement); }
/// <summary> /// Adds a content element by name. /// </summary> /// <param name="contentElement">The <see cref="ContentElement"/>.</param> /// <param name="name">The name of the content element.</param> /// <param name="element">The element to add to the <see cref="ContentItem"/>.</param> /// <returns>The current <see cref="ContentItem"/> instance.</returns> public static ContentElement Weld(this ContentElement contentElement, string name, ContentElement element) { if (!contentElement.Data.ContainsKey(name)) { element.Data = JObject.FromObject(element); element.ContentItem = contentElement.ContentItem; contentElement.Data[name] = element.Data; contentElement.Elements[name] = element; } return(contentElement); }
/// <summary> /// Updates the content element with the specified name. /// </summary> /// <typeparam name="name">The name of the element to update.</typeparam> /// <typeparam name="element">The content element instance to update.</typeparam> /// <returns>The current <see cref="ContentItem"/> instance.</returns> public static ContentElement Apply(this ContentElement contentElement, string name, ContentElement element) { var elementData = contentElement.Data[name] as JObject; if (elementData != null) { elementData.Merge(JObject.FromObject(element), JsonMergeSettings); } else { contentElement.Data[name] = JObject.FromObject(element, ContentBuilderSettings.IgnoreDefaultValuesSerializer); } return(contentElement); }
/// <summary> /// Adds a content element by name. /// </summary> /// <typeparam name="name">The name of the content element.</typeparam> /// <typeparam name="element">The element to add to the <see cref="ContentItem"/>.</typeparam> /// <returns>The current <see cref="ContentItem"/> instance.</returns> public static ContentElement Weld(this ContentElement contentElement, string name, ContentElement element) { JToken result; if (!contentElement.Data.TryGetValue(name, out result)) { element.Data = JObject.FromObject(element, ContentBuilderSettings.IgnoreDefaultValuesSerializer); element.ContentItem = contentElement.ContentItem; contentElement.Data[name] = element.Data; } return(contentElement); }
/// <summary> /// Updates the content element with the specified name. /// </summary> /// <typeparam name="name">The name of the element to update.</typeparam> /// <typeparam name="element">The content element instance to update.</typeparam> /// <returns>The current <see cref="ContentItem"/> instance.</returns> public static ContentElement Apply(this ContentElement contentElement, string name, ContentElement element) { var elementData = contentElement.Data[name] as JObject; if (elementData != null) { elementData.Merge(JObject.FromObject(element), JsonMergeSettings); } else { elementData = JObject.FromObject(element, ContentBuilderSettings.IgnoreDefaultValuesSerializer); contentElement.Data[name] = elementData; } element.Data = elementData; element.ContentItem = contentElement.ContentItem; // Replace the existing content element with the new one contentElement.Elements[name] = element; return(contentElement); }