<?php
+
+/**
+ * @file library/markdown.php
+ *
+ * @brief Parser for Markdown files
+ */
+
require_once "library/php-markdown/Michelf/MarkdownExtra.inc.php";
use \Michelf\MarkdownExtra;
-function Markdown($text) {
+/**
+ * @brief This function parses a text using php-markdown library to render Markdown syntax to HTML
+ *
+ * This function is using the php-markdown library by Michel Fortin to parse a
+ * string ($text).It returns the rendered HTML code from that text. The optional
+ * $hardbreak parameter is used to switch between inserting hard breaks after
+ * every linefeed, which is required for Diaspora compatibility, or not. The
+ * later is used for parsing documentation and README.md files.
+ *
+ * @param string $text
+ * @param boolean $hardbreak
+ * @returns string
+ */
+
+function Markdown($text, $hardbreak=true) {
$a = get_app();
$stamp1 = microtime(true);
$MarkdownParser = new MarkdownExtra();
- $MarkdownParser->hard_wrap = true;
+ if ($hardbreak) {
+ $MarkdownParser->hard_wrap = true;
+ } else {
+ $MarkdownParser->hard_wrap = false;
+ }
$html = $MarkdownParser->transform($text);
$a->save_timestamp($stamp1, "parser");
$readme=Null;
if (is_file("addon/$plugin/README.md")) {
$readme = file_get_contents("addon/$plugin/README.md");
- $readme = Markdown($readme);
+ $readme = Markdown($readme, false);
} elseif (is_file("addon/$plugin/README")) {
$readme = "<pre>". file_get_contents("addon/$plugin/README") ."</pre>";
}
$readme = Null;
if (is_file("view/theme/$theme/README.md")) {
$readme = file_get_contents("view/theme/$theme/README.md");
- $readme = Markdown($readme);
+ $readme = Markdown($readme, false);
} elseif (is_file("view/theme/$theme/README")) {
$readme = "<pre>". file_get_contents("view/theme/$theme/README") ."</pre>";
}
$filename = "Home";
$a->page['title'] = t('Help');
} else {
- $a->page['aside'] = Markdown($home);
+ $a->page['aside'] = Markdown($home, false);
}
if (!strlen($text)) {
));
}
- $html = Markdown($text);
+ $html = Markdown($text, false);
if ($filename !== "Home") {
// create TOC but not for home