closing_stack)) { $this->closing_stack = new SplStack(); //require PHP 5 >= 5.3.0 } switch ($state) { case DOKU_LEXER_ENTER: // build inline css $css = array(); foreach ($tag_data['declarations'] as $name => $value) { $css[] = $name.':'.$value.';'; } $style = implode(' ', $css); if (isset($data['line-height'])) { $renderer->p_close(); if (method_exists ($renderer, '_odtParagraphOpenUseCSSStyle')) { $renderer->_odtParagraphOpenUseCSSStyle($style); } else { $renderer->_odtParagraphOpenUseCSS('p', 'style="'.$style.'"'); } $this->closing_stack->push('p'); } else { if (method_exists ($renderer, '_odtSpanOpenUseCSSStyle')) { $renderer->_odtSpanOpenUseCSSStyle($style); } else { $renderer->_odtSpanOpenUseCSS('span', 'style="'.$style.'"'); } $this->closing_stack->push('span'); } break; case DOKU_LEXER_EXIT: try { $content = $this->closing_stack->pop(); if ($content == 'p') { // For closing paragraphs use the renderer's function otherwise the internal // counter in the ODT renderer is corrupted and so would be the ODT file. $renderer->p_close(); $renderer->p_open(); } else { // Close the span. $renderer->_odtSpanClose(); } } catch (Exception $e) { // May be included for debugging purposes. //$renderer->doc .= $e->getMessage(); } break; } return true; } }