Exemple #1
0
 /// <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));
 }
Exemple #2
0
        /// <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);
        }
Exemple #3
0
 /// <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));
 }
Exemple #4
0
 /// <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));
 }
Exemple #5
0
        /// <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);
        }
Exemple #6
0
        /// <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);
        }
Exemple #9
0
        /// <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);
        }