function _patterns_parse_tag in Patterns 5
Same name and namespace in other branches
- 6.2 patterns.module \_patterns_parse_tag()
- 6 patterns.module \_patterns_parse_tag()
Recurse through the values of a parsed xml file to create a multi-dimensional representation of the data.
1 call to _patterns_parse_tag()
- patterns_from_source in ./
patterns.module - Create a pattern from an XML data source
File
- ./
patterns.module, line 733 - Enables extremely simple adding/removing features to your site with minimal to no configuration
Code
function _patterns_parse_tag($data, $index) {
$pattern = array();
while ($current = $data[$index]) {
$type = $current['type'];
foreach ((array) $current['attributes'] as $key => $value) {
$current[strtolower($key)] = $value;
}
$current['tag'] = strtolower($current['tag']);
unset($current['type'], $current['level'], $current['attributes']);
if (!trim($current['value']) && $current['value'] != "0") {
unset($current['value']);
}
switch ($type) {
case 'open':
$index++;
$current += _patterns_parse_tag($data, &$index);
$pattern[] = $current;
break;
case 'close':
$index++;
return $pattern;
break;
case 'complete':
// In order to support more complex/non-standard features we can use serialized data
if ($current['attributes']['serialized']) {
$value = unserialize($current['value']);
if (isset($value)) {
$current['value'] = $value;
}
}
// This enables tags like <blog /> to turn into array('blog' => 'blog')
// which is useful for checkbox/select type forms
if (!isset($current['value'])) {
$current['value'] = $current['tag'];
}
$pattern[] = $current;
break;
}
$index++;
}
return $pattern;
}