1<?php
2
3require_once(HTML2PS_DIR.'inline.content.builder.php');
4
5class InlineContentBuilderPreWrap extends InlineContentBuilder {
6  function InlineContentBuilderPreWrap() {
7    $this->InlineContentBuilder();
8  }
9
10  /**
11   * CSS 2.1 16.6 Whitespace: the 'white-space' property
12   *
13   * pre-wrap:
14   *
15   * This  value prevents  user  agents from  collapsing sequences  of
16   * whitespace.   Lines are  broken  at newlines  in  the source,  at
17   * occurrences  of "\A" in  generated content,  and as  necessary to
18   * fill line boxes.
19   */
20  function build(&$box, $text, &$pipeline) {
21    $text = $this->remove_trailing_linefeeds($text);
22    $parent =& $box->get_parent_node();
23    $lines = $this->break_into_lines($text);
24
25    for ($i=0, $size = count($lines); $i<$size; $i++) {
26      $line = $lines[$i];
27
28      $words = $this->break_into_words($line);
29      foreach ($words as $word) {
30        $word .= ' ';
31        $box->process_word($word, $pipeline);
32
33        $whitespace =& WhitespaceBox::create($pipeline);
34        $box->add_child($whitespace);
35      };
36
37      if ((!$parent || $parent->isBlockLevel()) && $i < $size - 1) {
38        $this->add_line_break($box, $pipeline);
39      };
40    };
41  }
42}
43
44?>