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<org.eclipse.emf.ecore.EString, org.eclipse.emf.ecore.EObject>" 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