001/**
002 */
003package org.nasdanika.html.model.html;
004
005import org.eclipse.emf.common.util.EList;
006import org.eclipse.emf.common.util.EMap;
007import org.eclipse.emf.ecore.EObject;
008import org.nasdanika.ncore.ModelElement;
009
010/**
011 * <!-- begin-user-doc -->
012 * A representation of the model object '<em><b>Element</b></em>'.
013 * <!-- end-user-doc -->
014 *
015 * <!-- begin-model-doc -->
016 * Base class for other HTML and bootstrap elements. 
017 * <!-- end-model-doc -->
018 *
019 * <p>
020 * The following features are supported:
021 * </p>
022 * <ul>
023 *   <li>{@link org.nasdanika.html.model.html.HtmlElement#getAttributes <em>Attributes</em>}</li>
024 *   <li>{@link org.nasdanika.html.model.html.HtmlElement#getContent <em>Content</em>}</li>
025 * </ul>
026 *
027 * @see org.nasdanika.html.model.html.HtmlPackage#getHtmlElement()
028 * @model abstract="true"
029 * @generated
030 */
031public interface HtmlElement extends ModelElement {
032
033        /**
034         * Returns the value of the '<em><b>Attributes</b></em>' map.
035         * The key is of type {@link java.lang.String},
036         * and the value is of type {@link org.eclipse.emf.ecore.EObject},
037         * <!-- begin-user-doc -->
038         * <!-- end-user-doc -->
039         * <!-- begin-model-doc -->
040         * Tag attributes.
041         * 
042         * ## Interpolation
043         * 
044         * Attribute values are interpolated, i.e. tokens in the form of ``${{token name[|default value]}}`` are replaced with the contextual values or default values, if any. Examples:
045         * 
046         * * ``${my-style}`` - Token without a default value.
047         * * ``${font-weight|bold}`` - Token with a default value.
048         * 
049         * ## Regular attributes
050         * 
051         * For all top-level entries except ``class``, ``style``, and ``data`` attribute value is produced by converting the value to string for scalars and to JSON string for lists and maps. 
052         * For attributes which do not start with ``data-`` a warning is issued if the value is not a scalar, i.e. a list or a map.
053         * 
054         * ## Class
055         * 
056         * For class attribute its value is formed by concantenating elements using space as a separator. If elements are hierarchical then class name is formed by concatenation with a dash (``-``) as a separator.
057         * 
058         * ## Data
059         * 
060         * If value of ``data`` attbibute is a map then keys of that map get concatenated with ``data`` using dash (``-``) as a separator, them same applies to nested maps. Non-map values become attribute values - scalars are converted to string, lists are converted to JSON string.
061         * 
062         * ## Style
063         * 
064         * Style can be defined as a string, list or map. If style is defined as a list, all list values are concatenated with a space as a separator - it is a convent way for long unstructured definitions.
065         * 
066         * If style value is a map then the value and its contained map values are processed in the following fashion:
067         * 
068         * * Keys are concatenated with dash as a separator.
069         * * List values are contcatenated wtih space as a separator.
070         * 
071         * <!-- end-model-doc -->
072         * @return the value of the '<em>Attributes</em>' map.
073         * @see org.nasdanika.html.model.html.HtmlPackage#getHtmlElement_Attributes()
074         * @model mapType="org.nasdanika.exec.Property&lt;org.eclipse.emf.ecore.EString, org.eclipse.emf.ecore.EObject&gt;"
075         * @generated
076         */
077        EMap<String, EObject> getAttributes();
078
079        /**
080         * Returns the value of the '<em><b>Content</b></em>' containment reference list.
081         * The list contents are of type {@link org.eclipse.emf.ecore.EObject}.
082         * <!-- begin-user-doc -->
083         * <!-- end-user-doc -->
084         * <!-- begin-model-doc -->
085         * Container content. 
086         * 
087         * Content elements are adapted to ${javadoc/org.nasdanika.common.SupplierFactory} for generation of HTML content.
088         * <!-- end-model-doc -->
089         * @return the value of the '<em>Content</em>' containment reference list.
090         * @see org.nasdanika.html.model.html.HtmlPackage#getHtmlElement_Content()
091         * @model containment="true"
092         * @generated
093         */
094        EList<EObject> getContent();
095} // HtmlElement