xref: /plugin/dw2pdf/syntax/pagesetting.php (revision 852931daed0aa7c73fc4da5d421d2c117decf509)
1254467c4SGerrit Uitslag<?php
2*852931daSAndreas Gohr
3*852931daSAndreas Gohruse dokuwiki\Extension\SyntaxPlugin;
4*852931daSAndreas Gohr
5254467c4SGerrit Uitslag/**
6254467c4SGerrit Uitslag * DokuWiki Plugin dw2pdf (Syntax Component)
7254467c4SGerrit Uitslag *
8254467c4SGerrit Uitslag * For marking changes in page orientation.
9254467c4SGerrit Uitslag *
10254467c4SGerrit Uitslag * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
11254467c4SGerrit Uitslag * @author     Sam Wilson <sam@samwilson.id.au>
12254467c4SGerrit Uitslag */
13*852931daSAndreas Gohrclass syntax_plugin_dw2pdf_pagesetting extends SyntaxPlugin
14*852931daSAndreas Gohr{
15254467c4SGerrit Uitslag    /**
16254467c4SGerrit Uitslag     * Syntax Type
17254467c4SGerrit Uitslag     *
18254467c4SGerrit Uitslag     * Needs to return one of the mode types defined in $PARSER_MODES in parser.php
19254467c4SGerrit Uitslag     *
20254467c4SGerrit Uitslag     * @return string
21254467c4SGerrit Uitslag     */
22*852931daSAndreas Gohr    public function getType()
23*852931daSAndreas Gohr    {
24254467c4SGerrit Uitslag        return 'substition';
25254467c4SGerrit Uitslag    }
26254467c4SGerrit Uitslag
27254467c4SGerrit Uitslag    /**
28254467c4SGerrit Uitslag     * Sort for applying this mode
29254467c4SGerrit Uitslag     *
30254467c4SGerrit Uitslag     * @return int
31254467c4SGerrit Uitslag     */
32*852931daSAndreas Gohr    public function getSort()
33*852931daSAndreas Gohr    {
34254467c4SGerrit Uitslag        return 40;
35254467c4SGerrit Uitslag    }
36254467c4SGerrit Uitslag
37254467c4SGerrit Uitslag    /**
38254467c4SGerrit Uitslag     * Paragraph Type
39254467c4SGerrit Uitslag     *
40254467c4SGerrit Uitslag     * @see Doku_Handler_Block
41254467c4SGerrit Uitslag     *
42254467c4SGerrit Uitslag     * @return string
43254467c4SGerrit Uitslag     */
44*852931daSAndreas Gohr    public function getPType()
45*852931daSAndreas Gohr    {
46254467c4SGerrit Uitslag        return 'block';
47254467c4SGerrit Uitslag    }
48254467c4SGerrit Uitslag
49254467c4SGerrit Uitslag    /**
50254467c4SGerrit Uitslag     * @param string $mode
51254467c4SGerrit Uitslag     */
52*852931daSAndreas Gohr    public function connectTo($mode)
53*852931daSAndreas Gohr    {
54254467c4SGerrit Uitslag        $this->Lexer->addSpecialPattern('~~PDF:(?:LANDSCAPE|PORTRAIT)~~', $mode, 'plugin_dw2pdf_pagesetting');
55254467c4SGerrit Uitslag    }
56254467c4SGerrit Uitslag
57254467c4SGerrit Uitslag    /**
58254467c4SGerrit Uitslag     * Handler to prepare matched data for the rendering process
59254467c4SGerrit Uitslag     *
60254467c4SGerrit Uitslag     * @param   string       $match   The text matched by the patterns
61254467c4SGerrit Uitslag     * @param   int          $state   The lexer state for the match
62254467c4SGerrit Uitslag     * @param   int          $pos     The character position of the matched text
63254467c4SGerrit Uitslag     * @param   Doku_Handler $handler The Doku_Handler object
64254467c4SGerrit Uitslag     * @return  bool|array Return an array with all data you want to use in render, false don't add an instruction
65254467c4SGerrit Uitslag     */
66*852931daSAndreas Gohr    public function handle($match, $state, $pos, Doku_Handler $handler)
67*852931daSAndreas Gohr    {
68*852931daSAndreas Gohr        return [$match, $state, $pos];
69254467c4SGerrit Uitslag    }
70254467c4SGerrit Uitslag
71254467c4SGerrit Uitslag    /**
72254467c4SGerrit Uitslag     * Handles the actual output creation.
73254467c4SGerrit Uitslag     *
74254467c4SGerrit Uitslag     * @param string        $mode     output format being rendered
75254467c4SGerrit Uitslag     * @param Doku_Renderer $renderer the current renderer object
76254467c4SGerrit Uitslag     * @param array         $data     data created by handler()
77254467c4SGerrit Uitslag     * @return  boolean                 rendered correctly? (however, returned value is not used at the moment)
78254467c4SGerrit Uitslag     */
79*852931daSAndreas Gohr    public function render($mode, Doku_Renderer $renderer, $data)
80*852931daSAndreas Gohr    {
81254467c4SGerrit Uitslag        if ($mode == 'xhtml') {
82254467c4SGerrit Uitslag            $orientation = strtolower(substr($data[0], 6, -2));
83254467c4SGerrit Uitslag            $renderer->doc .= "<div class='dw2pdf-$orientation'></div>" . DOKU_LF;
84254467c4SGerrit Uitslag            return true;
85254467c4SGerrit Uitslag        }
86254467c4SGerrit Uitslag        return false;
87254467c4SGerrit Uitslag    }
88254467c4SGerrit Uitslag}
89