Implement math expression parsing. Closes #61.

This commit is contained in:
Starbeamrainbowlabs 2016-04-03 17:49:38 +01:00
parent a2f867f3cb
commit ba3b3609dd
5 changed files with 52 additions and 2 deletions

View File

@ -6,6 +6,7 @@
- New pages show up with an 'N' next to them (as they do in a MediaWiki installation)
- Page deletions show up in red with a line though them
- Uploads show with an arrow next to them along with the size of the uploaded file
- Added mathematical expression parsing between dollar signs.
# Changed
- Enhanced the dev help page some more

View File

@ -94,6 +94,7 @@ Key | Value | Explanation
`editing` | boolean | Determines whether editing is enabled. Set to false to disable disting for all users (anonymous or otherwise).
`maxpagesize` | integer | The maximum number of characters allowed on a single page. The default is 135,000 characters, which is about 50 pages.
`clean_raw_html`| boolean | Whether page sources should be cleaned of HTML before rendering. If set to true any raw HTML will be escaped before rendering. Note that this shouldn't affect code blocks - they should alwys be escaped. It is STRONGLY recommended that you keep this option turned on, **_ESPECIALLY_** if you allow anonymous edits as no sanitizing whatsoever is performed on the HTML. If you need a feature that the markdown parser doesn't have, please open an issue. Also note that some parsers may override this setting and escape HTML sequences anyway.
`enable_math_rendering` | boolean | Whether to enable client side mathematical expression parsing. When enabled LaTeX mathematical expressions can be enclosed in dollar signs like so: `$x^2$`. Turn off if you don't use it.
`anonedits` | boolean | Determines whether users who aren't logged in are allowed to edit your wiki. Set to true to allow anonymous users to edit the wiki.
`defaultpage` | string | The name of the page that will act as the home page for the wiki. This page will be served if the user didn't specify a page.
`defaultaction` | action name | The default action. This action will be performed if no other action is specified. It is recommended you set this to "view" - that way the user automatically views the default page (see above).

View File

@ -100,6 +100,11 @@ $settings->parser = "parsedown";
// STRONGLY recommended that you keep this option turned on.
$settings->clean_raw_html = true;
// Whether to enable client side rendering of methematical expressions.
// Math expressions should be enclosed inside of dollar signs ($).
// Turn off if you don't use it.
$settings->enable_math_rendering = true;
///////////////////////////////////////////////////////////////////////////////
///////////////////////////// Access and Security /////////////////////////////
@ -1035,7 +1040,7 @@ class page_renderer
"{sitename}" => $logo_html,
"v0.11-dev" => $version,
"{favicon-url}" => $settings->favicon,
"{header-html}" => self::get_css_as_html(),
"{header-html}" => self::get_header_html(),
"{navigation-bar}" => self::render_navigation_bar($settings->nav_links, $settings->nav_links_extra, "top"),
"{navigation-bar-bottom}" => self::render_navigation_bar($settings->nav_links_bottom, [], "bottom"),
@ -1084,6 +1089,25 @@ class page_renderer
return self::render($title, $content, self::$minimal_content_template);
}
public static function get_header_html()
{
global $settings;
$result = self::get_css_as_html();
if(!empty($settings->enable_math_rendering))
$result .= "<script type='text/x-mathjax-config'>
MathJax.Hub.Config({
tex2jax: {
inlineMath: [ ['$','$'], ['\\\\(','\\\\)'] ],
processEscapes: true,
skipTags: ['script','noscript','style','textarea','pre','code']
}
});
</script>
<script async src='https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-MML-AM_CHTML'></script>";
return $result;
}
public static function get_css_as_html()
{
global $settings;

View File

@ -650,7 +650,7 @@ class page_renderer
"{sitename}" => $logo_html,
"{version}" => $version,
"{favicon-url}" => $settings->favicon,
"{header-html}" => self::get_css_as_html(),
"{header-html}" => self::get_header_html(),
"{navigation-bar}" => self::render_navigation_bar($settings->nav_links, $settings->nav_links_extra, "top"),
"{navigation-bar-bottom}" => self::render_navigation_bar($settings->nav_links_bottom, [], "bottom"),
@ -699,6 +699,25 @@ class page_renderer
return self::render($title, $content, self::$minimal_content_template);
}
public static function get_header_html()
{
global $settings;
$result = self::get_css_as_html();
if(!empty($settings->enable_math_rendering))
$result .= "<script type='text/x-mathjax-config'>
MathJax.Hub.Config({
tex2jax: {
inlineMath: [ ['$','$'], ['\\\\(','\\\\)'] ],
processEscapes: true,
skipTags: ['script','noscript','style','textarea','pre','code']
}
});
</script>
<script async src='https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-MML-AM_CHTML'></script>";
return $result;
}
public static function get_css_as_html()
{
global $settings;

View File

@ -97,6 +97,11 @@ $settings->parser = "parsedown";
// STRONGLY recommended that you keep this option turned on.
$settings->clean_raw_html = true;
// Whether to enable client side rendering of methematical expressions.
// Math expressions should be enclosed inside of dollar signs ($).
// Turn off if you don't use it.
$settings->enable_math_rendering = true;
///////////////////////////////////////////////////////////////////////////////
///////////////////////////// Access and Security /////////////////////////////