public function line($text)
{
$markup = '';
while ($excerpt = strpbrk($text, $this->inlineMarkerList)) {
$marker = $excerpt[0];
$markerPosition = strpos($text, $marker);
$Excerpt = array('text' => $excerpt, 'context' => $text);
foreach ($this->InlineTypes[$marker] as $inlineType) {
$Inline = $this->{'inline' . $inlineType}($Excerpt);
if (!isset($Inline)) {
continue;
}
if (isset($Inline['position']) and $Inline['position'] > $markerPosition) {
continue;
}
if (!isset($Inline['position'])) {
$Inline['position'] = $markerPosition;
}
$unmarkedText = substr($text, 0, $Inline['position']);
$markup .= $this->unmarkedText($unmarkedText);
$markup .= isset($Inline['markup']) ? $Inline['markup'] : $this->element($Inline['element']);
$text = substr($text, $Inline['position'] + $Inline['extent']);
continue 2;
}
$unmarkedText = substr($text, 0, $markerPosition + 1);
$markup .= $this->unmarkedText($unmarkedText);
$text = substr($text, $markerPosition + 1);
}
$markup .= $this->unmarkedText($text);
return $markup;
}