18d8f8b26SAnna Dabrowska<?php 28d8f8b26SAnna Dabrowska 38d8f8b26SAnna Dabrowskanamespace dokuwiki\plugin\diagrams\parser; 48d8f8b26SAnna Dabrowska 50ec94f66SAndreas Gohruse dokuwiki\plugin\prosemirror\parser\Node; 68d8f8b26SAnna Dabrowska 70ec94f66SAndreas Gohrclass DiagramsNode extends Node 88d8f8b26SAnna Dabrowska{ 90ec94f66SAndreas Gohr /** 100ec94f66SAndreas Gohr * @var Node 110ec94f66SAndreas Gohr */ 120ec94f66SAndreas Gohr protected $parent; 130ec94f66SAndreas Gohr 140ec94f66SAndreas Gohr /** 150ec94f66SAndreas Gohr * @var mixed 160ec94f66SAndreas Gohr */ 170ec94f66SAndreas Gohr protected $data; 180ec94f66SAndreas Gohr 190ec94f66SAndreas Gohr public function __construct($data, Node $parent) 200ec94f66SAndreas Gohr { 210ec94f66SAndreas Gohr $this->parent = &$parent; 220ec94f66SAndreas Gohr $this->data = $data; 230ec94f66SAndreas Gohr } 240ec94f66SAndreas Gohr 250ec94f66SAndreas Gohr 260ec94f66SAndreas Gohr public function toSyntax() 270ec94f66SAndreas Gohr { 280ec94f66SAndreas Gohr $openingTag = '<diagram'; 290ec94f66SAndreas Gohr if (!empty($this->data['attrs']['align'])) { 300ec94f66SAndreas Gohr $openingTag .= ' ' . $this->data['attrs']['align']; 310ec94f66SAndreas Gohr } 320ec94f66SAndreas Gohr $openingTag .= '>'; 330ec94f66SAndreas Gohr 34*3d6886fdSAndreas Gohr $svg = $this->data['attrs']['url']; 350ec94f66SAndreas Gohr if (substr($svg, 0, 26) !== 'data:image/svg+xml;base64,') { 360ec94f66SAndreas Gohr throw new \Exception('bad data uri "'.substr($svg, 0, 26).'"'); 370ec94f66SAndreas Gohr } 380ec94f66SAndreas Gohr $svg = base64_decode(substr($svg, 26)); 390ec94f66SAndreas Gohr return $openingTag . $svg . "</diagram>"; 400ec94f66SAndreas Gohr } 410ec94f66SAndreas Gohr 420ec94f66SAndreas Gohr 438d8f8b26SAnna Dabrowska} 44