* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Gitter; class PrettyFormat { public function parse($output) { if (empty($output)) { throw new \RuntimeException('No data available'); } try { $xml = new \SimpleXmlIterator("$output"); } catch (\Exception $e) { $output = $this->escapeXml($output); $xml = new \SimpleXmlIterator("$output"); } $data = $this->iteratorToArray($xml); return $data['item']; } public function escapeXml($output) { return preg_replace('/[\x00-\x1f]/', '?', $output); } protected function iteratorToArray($iterator) { foreach ($iterator as $key => $item) { if ($iterator->hasChildren()) { $data[$key][] = $this->iteratorToArray($item); continue; } $data[$key] = trim(strval($item)); } return $data; } }