All pastes #21585 Raw Edit

Something

public php v1 · immutable
#21585 ·published 2005-08-30 04:53 UTC
rendered paste body
	function _refactor_struct($v) {		$r = array();		$lvl = 0;		$m =& $r;		end($v);		$fal = array(0, key($v));		foreach ($v as $i=>$e) {			$e['tag'] = strtolower($e['tag']);			if (in_array($i, $fal)) {				if ($e['tag'] != '_top')					die('expected "_top" tag at index '.$i.': got '.$e['tag']);				if ($e['type'] != (($i == 0) ? 'open' : 'close'))					die('expected '.(($i == 0) ? 'open' : 'close').' type at index '.$i.': got '.$e['type']);				continue;			}			$ni = array('tag'=>$e['tag']);			if ($e['attributes'])				$ni['attributes'] = array_change_key_case($e['attributes']);			switch ($e['type']) {			case 'open':				++$lvl;				$ni['content'] = array();				if ($e['value'])					$ni['content'][] = $e['value'];				$m[] = $ni;				$om = $m;				unset($m);				$m =& $om[count($om) - 1]['content'];				echo 'open: level '.$lvl.'/'.$ni['tag'].': '.$e['value']."\n";				var_dump($m);				break;			case 'close':				--$lvl;				unset($m);				$m =& $r;				for ($i = 0; $i < $lvl; ++$i) {					$om = $m;					unset($m);					$m =& $om[count($om) - 1]->content;				}				echo 'close: level '.$lvl.'/'.$ni['tag']."\n";				break;			case 'complete':				$ni['content'] = $e['value'];				$m[] = $ni;				echo 'complete: level '.$lvl.'/'.$ni['tag'].': '.$e['value']."\n";				break;			case 'cdata':				$m[] = $e['value'];				echo 'cdata: level '.$lvl.'/'.$ni['tag'].': '.$e['value']."\n";				break;			default:				var_dump($e);				die('wtf in _refactor_struct');			}		}		var_dump($r);		return $r;	}