|
@@ -77,6 +77,61 @@ class Configuration implements ConfigurationInterface
|
|
|
->end()
|
|
|
->end()
|
|
|
|
|
|
+ // assets
|
|
|
+ ->fixXmlConfig('asset')
|
|
|
+ ->children()
|
|
|
+ ->arrayNode('assets')
|
|
|
+ ->addDefaultsIfNotSet()
|
|
|
+ ->requiresAtLeastOneElement()
|
|
|
+ ->useAttributeAsKey('name')
|
|
|
+ ->prototype('array')
|
|
|
+ ->beforeNormalization()
|
|
|
+ // a scalar is a simple formula of one input file
|
|
|
+ ->ifTrue(function($v) { return !is_array($v); })
|
|
|
+ ->then(function($v) { return array('inputs' => array($v)); })
|
|
|
+ ->end()
|
|
|
+ ->beforeNormalization()
|
|
|
+ ->always()
|
|
|
+ ->then(function($v)
|
|
|
+ {
|
|
|
+ // cast scalars as array
|
|
|
+ foreach (array('input', 'inputs', 'filter', 'filters') as $key) {
|
|
|
+ if (isset($v[$key]) && !is_array($v[$key])) {
|
|
|
+ $v[$key] = array($v[$key]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // organize arbitrary options
|
|
|
+ foreach ($v as $key => $value) {
|
|
|
+ if (!in_array($key, array('input', 'inputs', 'filter', 'filters', 'option', 'options'))) {
|
|
|
+ $v['options'][$key] = $value;
|
|
|
+ unset($v[$key]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return $v;
|
|
|
+ })
|
|
|
+ ->end()
|
|
|
+
|
|
|
+ // the formula
|
|
|
+ ->fixXmlConfig('input')
|
|
|
+ ->fixXmlConfig('filter')
|
|
|
+ ->children()
|
|
|
+ ->arrayNode('inputs')
|
|
|
+ ->prototype('scalar')->end()
|
|
|
+ ->end()
|
|
|
+ ->arrayNode('filters')
|
|
|
+ ->prototype('scalar')->end()
|
|
|
+ ->end()
|
|
|
+ ->arrayNode('options')
|
|
|
+ ->useAttributeAsKey('name')
|
|
|
+ ->prototype('variable')->end()
|
|
|
+ ->end()
|
|
|
+ ->end()
|
|
|
+ ->end()
|
|
|
+ ->end()
|
|
|
+ ->end()
|
|
|
+
|
|
|
// filters
|
|
|
->fixXmlConfig('filter')
|
|
|
->children()
|