InlineContentBuilder();
}
/**
* CSS 2.1 p.16.6
* white-space: normal
* This value directs user agents to collapse sequences of whitespace, and break lines as necessary to fill line boxes.
*/
function build(&$box, $text, &$pipeline) {
$text = $this->remove_leading_linefeeds($text);
$text = $this->remove_trailing_linefeeds($text);
$content = $this->collapse_whitespace($text);
// Whitespace-only text nodes sill result on only one whitespace box
if (trim($content) === '') {
$whitespace =& WhitespaceBox::create($pipeline);
$box->add_child($whitespace);
return;
}
// Add leading whispace box, if content stars with a space
if (preg_match('/ /u', substr($content,0,1))) {
$whitespace =& WhitespaceBox::create($pipeline);
$box->add_child($whitespace);
}
$words = $this->break_into_words($content);
$size = count($words);
$pos = 0;
// Check if text content has trailing whitespace
$last_whitespace = substr($content, strlen($content) - 1, 1) == ' ';
foreach ($words as $word) {
$box->process_word($word, $pipeline);
$pos++;
$is_last_word = ($pos == $size);
// Whitespace boxes should be added
// 1) between words
// 2) after the last word IF there was a space at the content end
if (!$is_last_word ||
$last_whitespace) {
$whitespace =& WhitespaceBox::create($pipeline);
$box->add_child($whitespace);
};
};
}
}
?>