| 
<?php/*
 
 RUN IN BROWSER!
 
 current() -- return current buffer instance
 enter($name) -- activate named buffer, if it does not exist:
 create and append to current buffer
 leave() -- leave current buffer, activate previous active buffer
 out($data) -- write data (string or buffer) to current active buffer
 find($name) -- find named buffer within root buffer
 undo() -- remove last created buffer
 
 note: the find() method is mostly redundant, you can use enter() and/or current()
 to fetch any buffer instance, or you can fetch them from $bm->buffers[$name]
 However, it is possible to output a buffer with the out() method, without
 registering it in the buffer_manager using enter(). In those cases, find()
 can be used to find the buffer.
 
 TODO: make tests for undo()
 
 */
 
 include '../buffer_manager.class.php';
 
 $bm = new buffer_manager('document');
 
 $bm->out('<html><head>');
 $bm->enter('head');                 # create buffer 'head'
 $bm->out('<title>');
 $bm->enter('title');                # create buffer 'title' as a sub-buffer within the 'head' buffer
 $bm->out('Page title');
 $bm->leave();                       # leave 'title'
 $bm->out('</title>');
 $bm->out('<style>');
 $bm->enter('style');                # create buffer 'style'
 $bm->leave();                       # leave 'style'
 $bm->out('</style>');
 $bm->leave();                       # leave 'head'
 $bm->out('</head><body>');
 $bm->enter('body');                 # create buffer 'body'
 $bm->out('<h1>Hello world</h1>');
 $bm->leave();                       # leave 'body'
 $bm->out('</body></html>');
 
 $doc = $bm->current();  # fetch current buffer
 echo ((($doc===$bm->buffers['document']) and
 ($doc===$bm->find('document'))) ?
 'document buffer found' :
 'document buffer NOT found!').'<br />';
 
 $doc->dump();
 
 $body = $bm->enter('body');          # activate buffer 'body', fetch buffer in variable
 $bm->out('<p>Body text</p>');
 echo ((($body===$bm->buffers['body']) and
 ($body===$bm->current()) and
 ($body===$bm->find('body'))) ?
 'body buffer found' :
 'body buffer NOT found').'<br />';
 
 $bm->enter('style');                 # activate buffer 'style'
 $bm->out('p {color:green}');
 $bm->leave();                        # leave 'style', activate 'body' (previous active buffer)
 
 $bm->out(array(
 '<p>','More body text','</p>'));   # write array
 
 $bm->leave();                        # leave 'body'
 
 $doc->dump();
 
 echo htmlspecialchars($doc).'<br />';
 
 $bm->enter('title');
 $title = $bm->current();             # fetch current buffer instance ('title')
 $title->replace('New page title');   # replace() is defined in buffer.class.php
 
 echo ((($title===$bm->find('title')) and
 ($title===$bm->buffers['title'])) ?
 'title buffer found' :
 'title buffer NOT found').'<br />';
 
 
 echo htmlspecialchars($doc).'<br />';
 
 $style = $bm->find('style');         # find named buffer
 $style->append('h1 {color:red}');    # append() is defined in buffer.class.php
 
 echo htmlspecialchars($doc).'<br />';
 
 ?>
 |