Browse Source

add LINE:break macros

main
ghost 9 months ago
parent
commit
c4eee5c07f
  1. 44
      src/Dokuwiki/Reader.php

44
src/Dokuwiki/Reader.php

@ -13,6 +13,7 @@ class Reader
'~URL:base~' => null, '~URL:base~' => null,
'~IPv6:open~' => '[', '~IPv6:open~' => '[',
'~IPv6:close~' => ']', '~IPv6:close~' => ']',
'~LINE:break~' => PHP_EOL
]; ];
private array $_rule = private array $_rule =
@ -88,7 +89,7 @@ class Reader
'/^[\s]+\*/' => '*', '/^[\s]+\*/' => '*',
// Separators // Separators
'/[\\\]{2}/' => PHP_EOL, '/[\\\]{2}/' => '~LINE:break~',
// Plugins // Plugins
'/~~DISCUSSION~~/' => '', // @TODO '/~~DISCUSSION~~/' => '', // @TODO
@ -240,23 +241,15 @@ class Reader
} }
// Apply config // Apply config
$lines[] = str_replace( $lines[] = preg_replace(
array_keys( array_keys(
$this->_macros $this->_rule
), ),
array_values( array_values(
$this->_macros $this->_rule
), ),
preg_replace( strip_tags(
array_keys( $line
$this->_rule
),
array_values(
$this->_rule
),
strip_tags(
$line
)
) )
); );
} }
@ -270,10 +263,17 @@ class Reader
foreach ($lines as $index => $line) foreach ($lines as $index => $line)
{ {
// Strip line breaks
$line = str_replace(
'~LINE:break~',
' ',
$line
);
// Header // Header
if (!$table && preg_match_all('/\^([^\^]+)/', $line, $matches)) if (!$table && preg_match_all('/\^([^\^]+)/', $line, $matches))
{ {
if (isset($matches[1]) && count($matches[1]) > 1) if (!empty($matches[1]))
{ {
$table = true; $table = true;
@ -338,9 +338,17 @@ class Reader
return preg_replace( return preg_replace(
'/[\n\r]{2,}/', '/[\n\r]{2,}/',
PHP_EOL . PHP_EOL, PHP_EOL . PHP_EOL,
implode( str_replace(
PHP_EOL, array_keys(
$lines $this->_macros
),
array_values(
$this->_macros
),
implode(
PHP_EOL,
$lines
)
) )
); );
} }

Loading…
Cancel
Save