public static function compassList($list, $seperator = ',')
{
if (is_object($list)) {
$list = $list->value;
}
if (is_array($list)) {
$newlist = array();
foreach ($list as $listlet) {
$newlist = array_merge($newlist, self::compassList($listlet, $seperator));
}
$list = implode(', ', $newlist);
}
$out = array();
$size = 0;
$braces = 0;
$stack = '';
for ($i = 0; $i < strlen($list); $i++) {
$char = substr($list, $i, 1);
switch ($char) {
case '(':
$braces++;
$stack .= $char;
break;
case ')':
$braces--;
$stack .= $char;
break;
case $seperator:
if ($braces === 0) {
$out[] = $stack;
$stack = '';
$size++;
break;
}
default:
$stack .= $char;
}
}
$out[] = $stack;
return $out;
}