* Shaare's descriptions are parsed with Markdown.
*/
+use Shaarli\Config\ConfigManager;
+
/*
* If this tag is used on a shaare, the description won't be processed by Parsedown.
*/
$value = stripNoMarkdownTag($value);
continue;
}
+ $value['description'] = reverse_feed_permalink($value['description']);
$value['description'] = process_markdown(
$value['description'],
$conf->get('security.markdown_escape', true),
return preg_replace('/(^| ) /m', '$1 ', $description);
}
+function reverse_feed_permalink($description)
+{
+ return preg_replace('@— <a href="([^"]+)" title="[^"]+">(\w+)</a>$@im', '— [$2]($1)', $description);
+}
+
/**
* Replace not whitelisted protocols with http:// in given description.
*
$this->assertNotFalse(strpos($data['links'][0]['description'], '<p>'));
}
+ /**
+ * Test render_feed hook.
+ */
+ public function testMarkdownFeed()
+ {
+ $markdown = '# My title' . PHP_EOL . 'Very interesting content.';
+ $markdown .= '— <a href="http://domain.tld/?0oc_VQ" title="Permalien">Permalien</a>';
+ $data = array(
+ 'links' => array(
+ 0 => array(
+ 'description' => $markdown,
+ ),
+ ),
+ );
+
+ $data = hook_markdown_render_feed($data, $this->conf);
+ $this->assertNotFalse(strpos($data['links'][0]['description'], '<h1>'));
+ $this->assertNotFalse(strpos($data['links'][0]['description'], '<p>'));
+ $this->assertStringEndsWith(
+ '— <a href="http://domain.tld/?0oc_VQ">Permalien</a></p></div>',
+ $data['links'][0]['description']
+ );
+ }
+
/**
* Test render_daily hook.
* Only check that there is basic markdown rendering.
$this->assertEquals($text, $reversedText);
}
+ public function testReverseFeedPermalink()
+ {
+ $text = 'Description... ';
+ $text .= '— <a href="http://domain.tld/?0oc_VQ" title="Permalien">Permalien</a>';
+ $expected = 'Description... — [Permalien](http://domain.tld/?0oc_VQ)';
+ $processedText = reverse_feed_permalink($text);
+
+ $this->assertEquals($expected, $processedText);
+ }
+
+ public function testReverseLastFeedPermalink()
+ {
+ $text = 'Description... ';
+ $text .= '<br>— <a href="http://domain.tld/?0oc_VQ" title="Permalien">Permalien</a>';
+ $expected = $text;
+ $text .= '<br>— <a href="http://domain.tld/?0oc_VQ" title="Permalien">Permalien</a>';
+ $expected .= '<br>— [Permalien](http://domain.tld/?0oc_VQ)';
+ $processedText = reverse_feed_permalink($text);
+
+ $this->assertEquals($expected, $processedText);
+ }
+
+ public function testReverseNoFeedPermalink()
+ {
+ $text = 'Hello! Where are you from?';
+ $expected = $text;
+ $processedText = reverse_feed_permalink($text);
+
+ $this->assertEquals($expected, $processedText);
+ }
+
/**
* Test sanitize_html().
*/