Download the PHP package packagefactory/atomicfusion-afx without Composer
On this page you can find all versions of the php package packagefactory/atomicfusion-afx. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download packagefactory/atomicfusion-afx
More information about packagefactory/atomicfusion-afx
Files in packagefactory/atomicfusion-afx
Package atomicfusion-afx
Short Description JSX inspired compact syntax for Neos.Fusion
License GPL-3.0
Informations about the package atomicfusion-afx
DEPRECATED PackageFactory.AtomicFusion.AFX
This package is deprecated in favor of https://github.com/neos/fusion-afx. This package will stay available for existing setups that depend on it but no bugfixes nor features will be added here.
JSX inspired compact syntax for Neos.Fusion
This package provides a fusion preprocessor that expands a compact xml-ish syntax to pure fusion code. This allows to write compact components that do'nt need a seperate template file and enables unplanned extensibility for the defined prototypes because the generated fusion-code can be overwritten and controlled from the outside if needed.
Installation
PackageFactory.AtomicFusion.AFX is available via packagist. Just add "packagefactory/atomicfusion-afx" : "~3.0.0"
to the require-section of the composer.json or run composer require packagefactory/atomicfusion-afx
.
We use semantic-versioning so every breaking change will increase the major-version number.
Usage
With this package the following fusion code
Will be transpiled, parsed and then cached and evaluated as beeing equivalent to the following fusion-code
AFX Language Rules
All whitepaces around the outer elements are ignored. Whitepaces that are connected to a newline are considered irrelevant and are ignored.
HTML-Tags (Tags without Namespace)
HTML-Tags are converted to Neos.Fusion:Tag
Objects. All attributes of the afx-tag are rendered as tag-attributes.
The following html:
Is transpiled to:
If a tag is self-closing and has no content it will be rendered as self closing fusion-tag:.
Is transpiled to:
Fusion-Object-Tags (namespaced Tags)
All namespaced-tags are interpreted as prototype-names and all attributes are passed as top-level fusion-properties.
The following html:
Is transpiled as:
Tag-Children
The handling of child-nodes below an afx-node is differs based on the number of childNodes that are found.
Single tag-children
If a AFX-tag contains exactly one child this child is rendered directly into the content
-attribute.
The child is then interpreted as string, eel-expression, html- or fusion-object-tag.
The following AFX-Code:
Is transpiled as:
Multiple tag-children
If an AFX-tag contains more than one child the content is are rendered as Neos.Fusion:Array
into the
content
-attribute. The children are interpreted as string, eel-expression, html- or fusion-object-tag.
The following AFX-Code:
Is transpiled as:
The @key
-property of tag-children inside alters the name of the fusion-attribute to recive render the array-child into.
If no @key
-property is given index_x
is used starting by x=1
.
Is transpiled as:
Meta-Attributes
In general all meta-attributes start with an @-sign.
The @children
-attribute defined the property that is used to render the content/children of the current tag into.
The default property name for the children is content
.
The @key
-attribute can be used to define the property name of an item among its siblings if an array is rendered.
If no @key
is defined index_x
is used starting at `x=1.
All other meta attributes are directly added to the generated prototype and can be used for @if or @process statements.
Whitespace and Newlines
AFX is not html and makes some simplifications to the code to optimize the generated fusion and allow a structured notation of the component hierarchy.
The following rules are applied for that:
- Newlines and Whitespace-Characters that are connected to a newline are considered irrelevant and are ignored
Is transpiled as:
- Spaces between Elements on a single line are considered meaningful and are preserved
Is transpiled as:
Examples
Rendering of Collections with Neos.Fusion:Collection
For rendering of lists or menus a presentational-component usually will recieve arrays of
preprocessed data as prop. To iterate over such an array the Neos.Fusion:Collection
can be used in afx.
Augmentation of Child-Components with PackageFactory.AtomicFusion:Augmenter
The PackageFactory.AtomicFusion:Augmenter
can be used to add additional attributes to rendered content.
This allows some rendering flexibility without extending the api of the component. This is a
useful pattern to avoid unneeded tag-wrapping in cases where only additional classes are needed.
The example iterates over a list of images and uses the PackageFactory.AtomicFusion.AFX:ImageExample
to render each one
while the PackageFactory.AtomicFusion:Augmenter
adds a class- and data-attribute from outside.
License
see LICENSE file