Changes
This commit is contained in:
12
vendor/phpoffice/math/src/Math/Reader/MathML.php
vendored
12
vendor/phpoffice/math/src/Math/Reader/MathML.php
vendored
@@ -10,6 +10,7 @@ use PhpOffice\Math\Element;
|
||||
use PhpOffice\Math\Exception\InvalidInputException;
|
||||
use PhpOffice\Math\Exception\NotImplementedException;
|
||||
use PhpOffice\Math\Math;
|
||||
use PhpOffice\Math\Reader\Security\XmlScanner;
|
||||
|
||||
class MathML implements ReaderInterface
|
||||
{
|
||||
@@ -22,8 +23,17 @@ class MathML implements ReaderInterface
|
||||
/** @var DOMXPath */
|
||||
private $xpath;
|
||||
|
||||
/** @var XmlScanner */
|
||||
private $xmlScanner;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->xmlScanner = XmlScanner::getInstance();
|
||||
}
|
||||
|
||||
public function read(string $content): ?Math
|
||||
{
|
||||
$content = $this->xmlScanner->scan($content);
|
||||
$content = str_replace(
|
||||
[
|
||||
'⁢',
|
||||
@@ -35,7 +45,7 @@ class MathML implements ReaderInterface
|
||||
);
|
||||
|
||||
$this->dom = new DOMDocument();
|
||||
$this->dom->loadXML($content, LIBXML_DTDLOAD);
|
||||
$this->dom->loadXML($content);
|
||||
|
||||
$this->math = new Math();
|
||||
$this->parseNode(null, $this->math);
|
||||
|
||||
23
vendor/phpoffice/math/src/Math/Writer/MathML.php
vendored
23
vendor/phpoffice/math/src/Math/Writer/MathML.php
vendored
@@ -40,6 +40,26 @@ class MathML implements WriterInterface
|
||||
{
|
||||
$tagName = $this->getElementTagName($element);
|
||||
|
||||
// Element\AbstractGroupElement
|
||||
if ($element instanceof Element\Semantics) {
|
||||
$this->output->startElement($tagName);
|
||||
// Write elements
|
||||
foreach ($element->getElements() as $childElement) {
|
||||
$this->writeElementItem($childElement);
|
||||
}
|
||||
|
||||
// Write annotations
|
||||
foreach ($element->getAnnotations() as $encoding => $annotation) {
|
||||
$this->output->startElement('annotation');
|
||||
$this->output->writeAttribute('encoding', $encoding);
|
||||
$this->output->text($annotation);
|
||||
$this->output->endElement();
|
||||
}
|
||||
$this->output->endElement();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// Element\AbstractGroupElement
|
||||
if ($element instanceof Element\AbstractGroupElement) {
|
||||
$this->output->startElement($tagName);
|
||||
@@ -121,6 +141,9 @@ class MathML implements WriterInterface
|
||||
if ($element instanceof Element\Operator) {
|
||||
return 'mo';
|
||||
}
|
||||
if ($element instanceof Element\Semantics) {
|
||||
return 'semantics';
|
||||
}
|
||||
|
||||
throw new NotImplementedException(sprintf(
|
||||
'%s : The element of the class `%s` has no tag name',
|
||||
|
||||
Reference in New Issue
Block a user