Add support for markdown format in wiki

The page name should end in .md and be stored in a file ending .md.txt
but apart from that it's exactly as you'd expect with the PHP markdown extra
https://michelf.ca/projects/php-markdown/extra/
This commit is contained in:
Andy Williams 2017-10-09 18:09:02 +01:00
parent d7b837918b
commit 33633b9bf3
22 changed files with 7583 additions and 0 deletions

View File

@ -0,0 +1,36 @@
PHP Markdown & Extra
Copyright (c) 2004-2009 Michel Fortin
<http://michelf.com/>
All rights reserved.
Based on Markdown
Copyright (c) 2003-2006 John Gruber
<http://daringfireball.net/>
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name "Markdown" nor the names of its contributors may
be used to endorse or promote products derived from this software
without specific prior written permission.
This software is provided by the copyright holders and contributors "as
is" and any express or implied warranties, including, but not limited
to, the implied warranties of merchantability and fitness for a
particular purpose are disclaimed. In no event shall the copyright owner
or contributors be liable for any direct, indirect, incidental, special,
exemplary, or consequential damages (including, but not limited to,
procurement of substitute goods or services; loss of use, data, or
profits; or business interruption) however caused and on any theory of
liability, whether in contract, strict liability, or tort (including
negligence or otherwise) arising in any way out of the use of this
software, even if advised of the possibility of such damage.

View File

@ -0,0 +1,63 @@
# PHP Markdown Extra plugin for DokuWiki
---- plugin ----
description: Parses PHP Markdown Extra blocks.
author : Joonas Pulakka, Jiang Le
email : joonas.pulakka@iki.fi, smartynaoki@gmail.com
type : syntax
lastupdate : 2013-01-14
compatible : 2012-10-13 “Adora Belle” and newer
depends :
conflicts :
similar : markdown
tags : formatting, markup_language
downloadurl:
----
##Download and Installation
Download and install the plugin using the Plugin Manager using the following URL. Refer to [[:Plugins]] on how to install plugins manually.
##Usage
If the page name ends with ''.md'' suffix, it gets automatically parsed using PHP Markdown Extra. To use that markup in other pages, the content must be embedded in a markdown block. For example:
<markdown>
Header 1
========
~~~
some code
~~~
Paragraph
Header 2
--------
- A
- simple
- list
1. And
2. numbered
3. list
Quite intuitive? *emphasis*, **strong**, etc.
</markdown>
###Front matter
Front matter is a text block at the top of dokuwiki page with .md suffix. It begins and ends with '—'. Looks like this:
---
{{tag>test}}
---
#### Why front matter?
I love this markdown extra plugin, the best feature is .md suffix. And I love [tag plugin](https://www.dokuwiki.org/plugin:tag) too, but I can't use it with page with .md suffix as {{tag>tat1 tag2 tag3}} syntax will not work within <markdown></markdown>. So I added this front matter feature.
For syntax, refer to http://michelf.com/projects/php-markdown/extra/

View File

@ -0,0 +1,81 @@
<?php
/**
* DokuWiki Plugin markdownextra (Action Component)
*
* @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html
* @author Andreas Gohr <andi@splitbrain.org>
*/
// must be run within Dokuwiki
if (!defined('DOKU_INC')) die();
if (!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
require_once DOKU_PLUGIN.'action.php';
class action_plugin_markdownextra extends DokuWiki_Action_Plugin {
function register(Doku_Event_Handler $controller) {
$controller->register_hook('PARSER_WIKITEXT_PREPROCESS',
'BEFORE', $this, 'handle_parser_wikitext_preprocess');
$controller->register_hook('TPL_METAHEADER_OUTPUT',
'BEFORE', $this, 'handle_meltdown_metadata');
}
function handle_parser_wikitext_preprocess(&$event, $param) {
global $ACT;
global $ID;
global $TEXT;
// Check if file is a .md page:
if(substr($ID,-3) != '.md') return true;
// Check for default view (in this case there is only 1 parsed text)
// or check that the text parsed is the text being edited
// (see: http://www.dokuwiki.org/devel:environment#text):
if($ACT != 'show' && $event->data != $TEXT) return true;
if ($this->getConf('frontmatter')){
if (preg_match('/^---\s*\n(.*?\n?)^---\s*$\n?(.+)/sm',$event->data, $match)){
$event->data = sprintf("%s<markdown>\n%s\n</markdown>", $match[1], $match[2]);
}else{
$event->data = "<markdown>\n".$event->data."\n</markdown>";
}
}else{
$event->data = "<markdown>\n".$event->data."\n</markdown>";
}
}
function handle_meltdown_metadata(&$event, $param) {
global $ACT;
global $ID;
// Check if file is a .md page and if we are editing a page:
if (substr($ID,-3) != '.md' || $ACT != 'edit') return;
if ($this->getConf('markdowneditor') == 'meltdown') {
$meltdownBase = DOKU_BASE.'lib/plugins/markdownextra/lib/meltdown/';
$meltdownTweaksBase = DOKU_BASE.'lib/plugins/markdownextra/lib/meltdown-tweaks/';
// Add Meltdown css and script files, as well as our custom css and js tweaks:
$event->data['link'][] = array(
'rel' => 'stylesheet',
'type' => 'text/css',
'href' => $meltdownBase.'css/meltdown.css');
$event->data['link'][] = array(
'rel' => 'stylesheet',
'type' => 'text/css',
'href' => $meltdownTweaksBase.'meltdown-tweaks.css');
$event->data['script'][] = array(
'type' => 'text/javascript',
'_data' => '',
'src' => $meltdownBase.'js/jquery.meltdown.js');
$event->data['script'][] = array(
'type' => 'text/javascript',
'_data' => '',
'src' => $meltdownBase.'js/lib/js-markdown-extra.js');
$event->data['script'][] = array(
'type' => 'text/javascript',
'_data' => '',
'src' => $meltdownBase.'js/lib/rangyinputs-jquery.min.js');
$event->data['script'][] = array(
'type' => 'text/javascript',
'_data' => '',
'src' => $meltdownTweaksBase.'meltdown-tweaks.js');
}
}
}

View File

@ -0,0 +1,7 @@
<?php
/**
* Options for the PHP Markdown Extra plugin
*/
$conf['frontmatter'] = false;
$conf['markdowneditor'] = 'meltdown';

View File

@ -0,0 +1,12 @@
<?php
/**
* Metadata for configuration manager plugin
* Additions for the PHP Markdown Extra plugin
*
* @author Jiang Le <smartynaoki@gmail.com>
*/
$meta['frontmatter'] = array('onoff');
$meta['markdowneditor'] = array('multichoice', '_choices' => array('none', 'meltdown'));

View File

@ -0,0 +1,13 @@
<?php
/**
* English language file
*
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
* @author Jiang Le <smartynaoki@gmail.com>
*/
$lang['frontmatter'] = "Enable front matter ? (Front matter is a text block at the top of a page with .md suffix. Starts and ends with ---. Content of front matter will not be embedded in markdown block but remain accessible by other plugins. Userful when you want to use this plugin together with the tag plugin.)";
$lang['markdowneditor'] = "Markdown editor (for pages with .md suffix)";
$lang['markdowneditor_o_none'] = 'none';
$lang['markdowneditor_o_meltdown'] = 'Meltdown';

View File

@ -0,0 +1,13 @@
<?php
/**
* French language file
*
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
* @author Jiang Le <smartynaoki@gmail.com>
*/
$lang['frontmatter'] = "Activer front matter ? (Front mater est un bloc de texte au début des pages ayant un suffixe en .md. Commençant et finissant par ---. Le contenu du front mater ne sera pas inclus dans le markdown, mais sera accessible aux autres plugins. Utile par exemple avec le plugin \"tag\".)";
$lang['markdowneditor'] = "Editeur markdown (pour les pages ayant un suffixe en .md)";
$lang['markdowneditor_o_none'] = 'aucun';
$lang['markdowneditor_o_meltdown'] = 'Meltdown';

View File

@ -0,0 +1,24 @@
/* Disabling tools that are incompatible with the markdown editor */
.markdownextra_disabledtools {
position: relative;
opacity: .5;
}
.markdownextra_disabledtools:hover {
opacity: 1;
}
.markdownextra_disabledtools .markdownextra_disabledtools_overlay {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
background: rgba(64,64,64,.6);
text-align: center;
color: white;
cursor: pointer;
}
/* For CSS3 browsers: allow user to resize the preview: */
.meltdown_preview { resize: vertical; }
/* Cosmetic fixes due to editor and preview being reversed: */
.meltdown_wrap textarea { margin-bottom: 5px !important; }

View File

@ -0,0 +1,18 @@
jQuery(document).ready(function($) {
// Disabling default DukuWiki toolbar (but allow users to renable it if needed):
$("#tool__bar").addClass("markdownextra_disabledtools").append($("<div\>", {
id: "markdownextra_tool__bar_overlay",
"class": "markdownextra_disabledtools_overlay",
text: "[ Activate DukuWiki toolbar ]",
click: function() {
$(this).fadeOut(200);
}}));
// Activate Meltdown on the textarea:
$("#wiki__text").meltdown();
// Put preview after the editor:
$(".meltdown_wrap").append($(".meltdown_preview-wrap"));
// Open the preview (There is no init option for this...):
$(".meltdown_control-preview").click();
});

View File

@ -0,0 +1,32 @@
Meltdown (Markdown Extra Live Toolbox)
======================================
A JQuery plugin that adds Markdown Extra live previews, and a toolbar for common markdown actions. **Check out the [project page](http://iphands.github.com/Meltdown/) for a live demo**
##Usage
###Simple, standard, awesome
~~~
jQuery('some_selector').meltdown();
~~~
###Advanced, changing the preview slider timeout and adding an example widget, still awesome
~~~
jQuery('some_selector').meltdown({
previewTimeout: 4000,
examples['test'] = {
label: "Test",
altText: "A test example/opt",
markdown: "this is a test"
}
});
~~~
##Libraries that Meltdown uses
* [jQuery](http://jquery.com/)
* [jQuery UI](http://jqueryui.com/) [1]
* [js-markdown-extra](https://github.com/tanakahisateru/js-markdown-extra "Github link to js-markdown-extra")
* [rangyinputs](http://code.google.com/p/rangyinputs/ "Google code link to rangyinputs") [1]
[1] jQuery UI and rangyinputs are optional. For now Meltdown will still function without these plugins.
##License
Copyright (c) 2013 Ian Page Hands and Mark Caron. Licensed under the GPLv3 license.

View File

@ -0,0 +1,357 @@
/* Meltdown Wrap
=======================================================================*/
.meltdown_wrap {
position: relative;
margin-bottom: 10px;
padding: 5px;
background: #c8c8c8;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
border-radius: 5px;
}
/* Meltdown Font Icons
=======================================================================*/
@font-face {
font-family: 'meltdown';
src:url('../fonts/meltdown.eot');
src:url('../fonts/meltdown.eot?#iefix') format('embedded-opentype'),
url('../fonts/meltdown.woff') format('woff'),
url('../fonts/meltdown.ttf') format('truetype'),
url('../fonts/meltdown.svg#meltdown') format('svg');
font-weight: normal;
font-style: normal;
}
/* Use the following CSS code if you want to use data attributes for inserting your icons */
[data-icon]:before {
font-family: 'meltdown';
content: attr(data-icon);
speak: none;
font-weight: normal;
line-height: 1;
-webkit-font-smoothing: antialiased;
}
/* Use the following CSS code if you want to have a class per icon */
/*
Instead of a list of all class selectors,
you can use the generic selector below, but it's slower:
[class*="meltdown-icon-"]:before {
*/
.meltdown-icon-eye-open:before, .meltdown-icon-eye-close:before, .meltdown-icon-table:before, .meltdown-icon-bold:before, .meltdown-icon-italic:before, .meltdown-icon-list-ol:before, .meltdown-icon-list-ul:before, .meltdown-icon-link:before, .meltdown-icon-code:before, .meltdown-icon-picture:before, .meltdown-icon-quote:before, .meltdown-icon-help:before, .meltdown-icon-code-block:before, .meltdown-icon-return:before, .meltdown-icon-footnote:before, .meltdown-icon-hr:before, .meltdown-icon-caret-down:before, .meltdown-icon-add-to-list:before {
font-family: 'meltdown';
speak: none;
font-style: normal;
font-weight: normal;
line-height: 1;
-webkit-font-smoothing: antialiased;
}
.meltdown-icon-eye-open:before {
content: "\73";
}
.meltdown-icon-eye-close:before {
content: "\68";
}
.meltdown-icon-table:before {
content: "\74";
}
.meltdown-icon-bold:before {
content: "\62";
}
.meltdown-icon-italic:before {
content: "\69";
}
.meltdown-icon-list-ol:before {
content: "\31";
}
.meltdown-icon-list-ul:before {
content: "\2a";
}
.meltdown-icon-link:before {
content: "\6c";
}
.meltdown-icon-code:before {
content: "\3c";
}
.meltdown-icon-picture:before {
content: "\70";
}
.meltdown-icon-quote:before {
content: "\22";
}
.meltdown-icon-help:before {
content: "\3f";
}
.meltdown-icon-code-block:before {
content: "\5b";
}
.meltdown-icon-return:before {
content: "\72";
}
.meltdown-icon-footnote:before {
content: "\66";
}
.meltdown-icon-hr:before {
content: "\5f";
}
.meltdown-icon-caret-down:before {
content: "\76";
}
.meltdown-icon-add-to-list:before {
content: "\2b";
}
/* Meltdown Toolbar
=======================================================================*/
.meltdown_bar {
position: relative;
padding: 5px 0;
margin: 0 0 3px;
height: 24px;
border: 1px solid #a8a8a8;
background: #fff; /* Old browsers */
background: -moz-linear-gradient(top, #ffffff 0%, #e5e5e5 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(100%,#e5e5e5)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #ffffff 0%,#e5e5e5 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #ffffff 0%,#e5e5e5 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, #ffffff 0%,#e5e5e5 100%); /* IE10+ */
background: linear-gradient(to bottom, #ffffff 0%,#e5e5e5 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#e5e5e5',GradientType=0 ); /* IE6-9 */
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
}
ul.meltdown_controls {
float: left;
width: 100%;
margin: 0 !important;
padding: 0 !important;
list-style: none;
}
li.meltdown_control,
li.meltdown_controlgroup {
position: relative;
float: left;
margin: 0 0 0 5px;
padding: 0;
}
.meltdown_controls li.meltdown_control-preview { float: right; margin-right: 5px; }
.meltdown_controls li.meltdown_control-table,
.meltdown_controls li.meltdown_controlgroup-kitchenSink { padding-left: 5px; border-left: 1px solid #ccc; }
li.meltdown_control span,
li.meltdown_controlgroup > span {
float: left;
padding: 6px;
line-height: 1em;
height: 12px;
min-width: 12px;
-moz-border-radius: 2px;
-webkit-border-radius: 2px;
border-radius: 2px;
color: #333;
font-weight: bold;
font-size: 12px;
cursor: pointer;
}
li.meltdown_control:hover span,
li.meltdown_control:focus span {
color: #06c;
}
.meltdown_controls li.meltdown_control-bold span,
.meltdown_controls li.meltdown_control-italics span,
.meltdown_controls li.meltdown_control-ul span,
.meltdown_controls li.meltdown_control-ol span,
.meltdown_controls li.meltdown_control-hr span,
.meltdown_controls li.meltdown_control-table span,
.meltdown_controls li.meltdown_control-preview span,
.meltdown_controls li.meltdown_control-link span,
.meltdown_controls li.meltdown_control-img span,
.meltdown_controls li.meltdown_control-blockquote span,
.meltdown_controls li.meltdown_control-codeblock span,
.meltdown_controls li.meltdown_control-code span,
.meltdown_controls li.meltdown_control-footnote span,
.meltdown_controls li.meltdown_controlgroup-kitchenSink > span {
height: 12px;
position: relative;
text-indent: -9000em;
width: 12px;
}
.meltdown_controls li.meltdown_control-bold span:before,
.meltdown_controls li.meltdown_control-italics span:before,
.meltdown_controls li.meltdown_control-ul span:before,
.meltdown_controls li.meltdown_control-ol span:before,
.meltdown_controls li.meltdown_control-hr span:before,
.meltdown_controls li.meltdown_control-table span:before,
.meltdown_controls li.meltdown_control-preview span:before,
.meltdown_controls li.meltdown_control-link span:before,
.meltdown_controls li.meltdown_control-img span:before,
.meltdown_controls li.meltdown_control-blockquote span:before,
.meltdown_controls li.meltdown_control-codeblock span:before,
.meltdown_controls li.meltdown_control-code span:before,
.meltdown_controls li.meltdown_control-footnote span:before,
.meltdown_controls li.meltdown_controlgroup-kitchenSink > span:before {
position: absolute;
left: 4px;
top: 4px;
font-family: 'meltdown';
speak: none;
font-style: normal;
font-weight: normal;
font-size: 16px;
line-height: 1;
-webkit-font-smoothing: antialiased;
text-indent: 0;
}
/* Resize and reposition Bold */
.meltdown_controls li.meltdown_control-bold span:before {
content: "\62";
font-size: 12px;
left: 7px;
top: 7px;
}
/* Resize and reposition Italics */
.meltdown_controls li.meltdown_control-italics span:before {
content: "\69";
font-size: 12px;
left: 8px;
top: 7px;
}
.meltdown_controls li.meltdown_control-ul span:before {
content: "\2a";
}
.meltdown_controls li.meltdown_control-ol span:before {
content: "\31";
}
.meltdown_controls li.meltdown_control-table span:before {
content: "\74";
}
.meltdown_controls li.meltdown_control-preview span:before {
content: "\73";
}
.meltdown_controls li.meltdown_preview-showing span:before {
content: "\68"; /* Toggle to Closed Eye */
color: #06c;
}
.meltdown_controls li.meltdown_controlgroup-kitchenSink > span:before {
content: "\2b";
}
.meltdown_controls li.meltdown_control-link span:before {
content: "\6c";
}
.meltdown_controls li.meltdown_control-img span:before {
content: "\70";
}
.meltdown_controls li.meltdown_control-blockquote span:before {
content: "\22";
}
.meltdown_controls li.meltdown_control-codeblock span:before {
content: "\5b";
}
.meltdown_controls li.meltdown_control-code span:before {
content: "\3c";
}
.meltdown_controls li.meltdown_control-footnote span:before {
content: "\66";
}
.meltdown_controls li.meltdown_control-hr span:before {
content: "\5f";
}
li.meltdown_controlgroup ul {
position: absolute;
left: 0;
top: 24px;
margin: 0 !important;
padding: 5px !important;
min-width: 100%;
background: #fff;
border: 1px solid #a8a8a8;
list-style: none;
-webkit-box-shadow: 0 3px 10px rgba(0,0,0,.2);
-moz-box-shadow: 0 3px 10px rgba(0,0,0,.2);
box-shadow: 0 3px 10px rgba(0,0,0,.2);
-webkit-background-clip: padding-box;
-moz-background-clip: padding;
background-clip: padding-box;
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
}
.meltdown_controls li.meltdown_controlgroup-kitchenSink > ul {
width: 120px;
}
li.meltdown_controlgroup-open > span {
color: #06c;
}
.meltdown_controls li.meltdown_controlgroup i.meltdown-icon-caret-down {
}
li.meltdown_controlgroup li {
float: none;
margin: 0;
}
.meltdown_controls li.meltdown_controlgroup-kitchenSink li { float: left; margin-left: 5px; }
li.meltdown_controlgroup li span { display: block; float: none; }
/* Meltdown Preview
=======================================================================*/
.meltdown_preview-header {
display: block;
padding: 2px 5px;
font-size: 11px;
font-weight: bold;
color: #666;
text-transform: uppercase;
text-align: center;
border: 1px solid #a8a8a8;
border-bottom-color: #ccc;
background: #eeeeee; /* Old browsers */
background: -moz-linear-gradient(top, #eeeeee 0%, #eeeeee 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#eeeeee), color-stop(100%,#eeeeee)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #eeeeee 0%,#eeeeee 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #eeeeee 0%,#eeeeee 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, #eeeeee 0%,#eeeeee 100%); /* IE10+ */
background: linear-gradient(to bottom, #eeeeee 0%,#eeeeee 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#eeeeee', endColorstr='#eeeeee',GradientType=0 ); /* IE6-9 */
-webkit-border-top-left-radius: 3px;
-webkit-border-top-right-radius: 3px;
-moz-border-radius-topleft: 3px;
-moz-border-radius-topright: 3px;
border-top-left-radius: 3px;
border-top-right-radius: 3px;
}
.meltdown_preview {
border: 1px solid #a8a8a8;
border-top: 0;
margin-bottom: 3px;
padding: 5px;
overflow: auto;
background: #fff;
-webkit-border-bottom-right-radius: 3px;
-webkit-border-bottom-left-radius: 3px;
-moz-border-radius-bottomright: 3px;
-moz-border-radius-bottomleft: 3px;
border-bottom-right-radius: 3px;
border-bottom-left-radius: 3px;
}
.meltdownvisible .meltdown_preview {
}
.meltdown_wrap textarea {
margin: 0 !important;
padding: 5px;
border: 1px solid #a8a8a8;
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
}
.meltdown_wrap textarea:focus {
outline: none;
border-color: #5c8cd0;
}

View File

@ -0,0 +1,49 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>
This is a custom SVG font generated by IcoMoon.
<iconset grid="14"></iconset>
</metadata>
<defs>
<font id="meltdown" horiz-adv-x="448" >
<font-face units-per-em="448" ascent="384" descent="-64" />
<missing-glyph horiz-adv-x="448" />
<glyph unicode="&#x73;" d="M 416.00,144.00q-38.00,59.00 -95.25,88.25q 15.25-26.00 15.25-56.25q0.00-46.25 -32.875-79.125t-79.125-32.875t-79.125,32.875t-32.875,79.125q0.00,30.25 15.25,56.25q-57.25-29.25 -95.25-88.25q 33.25-51.25 83.375-81.625t 108.625-30.375t 108.625,30.375t 83.375,81.625zM 236.00,240.00q0.00,5.00 -3.50,8.50t-8.50,3.50q-31.25,0.00 -53.625-22.375 t-22.375-53.625q0.00-5.00 3.50-8.50t 8.50-3.50t 8.50,3.50t 3.50,8.50q0.00,21.50 15.25,36.75t 36.75,15.25q 5.00,0.00 8.50,3.50t 3.50,8.50zM 448.00,144.00q0.00-8.50 -5.00-17.25q-35.00-57.50 -94.125-92.125t-124.875-34.625t-124.875,34.75t-94.125,92.00q-5.00,8.75 -5.00,17.25t 5.00,17.25q 35.00,57.25 94.125,92.00t 124.875,34.75t 124.875-34.75t 94.125-92.00q 5.00-8.75 5.00-17.25z" data-tags="eye-open, view, visit" />
<glyph unicode="&#x68;" d="M 138.75,50.25l 19.50,35.25q-21.75,15.75 -34.00,39.75t-12.25,50.75q0.00,30.25 15.25,56.25q-57.25-29.25 -95.25-88.25q 41.75-64.50 106.75-93.75zM 236.00,240.00q0.00,5.00 -3.50,8.50t-8.50,3.50q-31.25,0.00 -53.625-22.375t-22.375-53.625q0.00-5.00 3.50-8.50t 8.50-3.50t 8.50,3.50t 3.50,8.50q0.00,21.50 15.25,36.75t 36.75,15.25q 5.00,0.00 8.50,3.50t 3.50,8.50zM 326.75,287.75q0.00-1.75 -0.25-2.25 q-26.25-47.00 -78.75-141.50t-79.00-141.75l-12.25-22.25q-2.50-4.00 -7.00-4.00q-3.00,0.00 -33.50,17.50q-4.00,2.50 -4.00,7.00q0.00,3.00 11.00,21.75q-35.75,16.25 -65.875,43.25t-52.125,61.25q-5.00,7.75 -5.00,17.25t 5.00,17.25q 38.25,58.75 95.00,92.75t 124.00,34.00q 22.25,0.00 45.00-4.25l 13.50,24.25q 2.50,4.00 7.00,4.00q 1.25,0.00 4.50-1.50t 7.75-3.875t 8.25-4.625t 7.875-4.625t 4.875-2.875 q 4.00-2.50 4.00-6.75zM 336.00,176.00q0.00-34.75 -19.75-63.375t-52.25-41.125l 70.00,125.50q 2.00-11.25 2.00-21.00zM 448.00,144.00q0.00-8.75 -5.00-17.25q-9.75-16.00 -27.25-36.25q-37.50-43.00 -86.875-66.75t-104.875-23.75l 18.50,33.00q 53.00,4.50 98.125,34.25t 75.375,76.75q-28.75,44.75 -70.50,73.50l 15.75,28.00q 23.75-16.00 45.625-38.25t 36.125-46.00q 5.00-8.50 5.00-17.25z " data-tags="eye-close, blocked, private" />
<glyph unicode="&#x74;" d="M 128.00,40.00l0.00,48.00 q0.00,3.50 -2.25,5.75t-5.75,2.25l-80.00,0.00 q-3.50,0.00 -5.75-2.25t-2.25-5.75l0.00-48.00 q0.00-3.50 2.25-5.75t 5.75-2.25l 80.00,0.00 q 3.50,0.00 5.75,2.25t 2.25,5.75zM 128.00,136.00l0.00,48.00 q0.00,3.50 -2.25,5.75t-5.75,2.25l-80.00,0.00 q-3.50,0.00 -5.75-2.25t-2.25-5.75l0.00-48.00 q0.00-3.50 2.25-5.75t 5.75-2.25l 80.00,0.00 q 3.50,0.00 5.75,2.25t 2.25,5.75zM 256.00,40.00l0.00,48.00 q0.00,3.50 -2.25,5.75t-5.75,2.25l-80.00,0.00 q-3.50,0.00 -5.75-2.25t-2.25-5.75 l0.00-48.00 q0.00-3.50 2.25-5.75t 5.75-2.25l 80.00,0.00 q 3.50,0.00 5.75,2.25t 2.25,5.75zM 128.00,232.00l0.00,48.00 q0.00,3.50 -2.25,5.75t-5.75,2.25l-80.00,0.00 q-3.50,0.00 -5.75-2.25t-2.25-5.75l0.00-48.00 q0.00-3.50 2.25-5.75t 5.75-2.25l 80.00,0.00 q 3.50,0.00 5.75,2.25t 2.25,5.75zM 256.00,136.00l0.00,48.00 q0.00,3.50 -2.25,5.75t-5.75,2.25l-80.00,0.00 q-3.50,0.00 -5.75-2.25t-2.25-5.75l0.00-48.00 q0.00-3.50 2.25-5.75t 5.75-2.25l 80.00,0.00 q 3.50,0.00 5.75,2.25t 2.25,5.75zM 384.00,40.00l0.00,48.00 q0.00,3.50 -2.25,5.75t-5.75,2.25l-80.00,0.00 q-3.50,0.00 -5.75-2.25t-2.25-5.75l0.00-48.00 q0.00-3.50 2.25-5.75t 5.75-2.25l 80.00,0.00 q 3.50,0.00 5.75,2.25t 2.25,5.75zM 256.00,232.00l0.00,48.00 q0.00,3.50 -2.25,5.75t-5.75,2.25l-80.00,0.00 q-3.50,0.00 -5.75-2.25t-2.25-5.75l0.00-48.00 q0.00-3.50 2.25-5.75t 5.75-2.25l 80.00,0.00 q 3.50,0.00 5.75,2.25t 2.25,5.75zM 384.00,136.00l0.00,48.00 q0.00,3.50 -2.25,5.75t-5.75,2.25l-80.00,0.00 q-3.50,0.00 -5.75-2.25t-2.25-5.75l0.00-48.00 q0.00-3.50 2.25-5.75t 5.75-2.25l 80.00,0.00 q 3.50,0.00 5.75,2.25t 2.25,5.75zM 384.00,232.00l0.00,48.00 q0.00,3.50 -2.25,5.75t-5.75,2.25l-80.00,0.00 q-3.50,0.00 -5.75-2.25t-2.25-5.75l0.00-48.00 q0.00-3.50 2.25-5.75t 5.75-2.25l 80.00,0.00 q 3.50,0.00 5.75,2.25t 2.25,5.75zM 416.00,312.00l0.00-272.00 q0.00-16.50 -11.75-28.25t-28.25-11.75l-336.00,0.00 q-16.50,0.00 -28.25,11.75t-11.75,28.25l0.00,272.00 q0.00,16.50 11.75,28.25t 28.25,11.75l 336.00,0.00 q 16.50,0.00 28.25-11.75t 11.75-28.25 z" horiz-adv-x="416" data-tags="table, grid" />
<glyph unicode="&#x62;" d="M 138.75,3.75q 19.00-8.00 35.00-8.00q 32.75,0.00 54.00,10.25t 30.50,28.25q 9.50,17.50 9.50,45.25q0.00,28.50 -10.25,45.00q-14.50,23.50 -35.25,31.50q-20.00,8.00 -61.75,8.00q-18.50,0.00 -25.25-2.50l0.00-36.00 l-0.25-43.25l 0.75-67.50q0.00-3.75 3.00-11.00zM 135.25,190.25q 10.75-1.75 27.25-1.75q 43.75,0.00 66.00,16.25t 22.25,56.00q0.00,28.00 -21.25,46.75q-21.00,18.75 -63.75,18.75q-13.00,0.00 -32.50-3.25q0.00-11.00 0.50-19.25 q 1.75-30.50 1.50-69.75l-0.25-24.50q0.00-10.75 0.25-19.25zM0.00-32.00l 0.50,23.50q 11.25,2.25 17.00,3.00q 19.25,3.00 30.75,7.75q 4.25,6.75 5.25,12.75q 2.25,16.50 2.25,48.50l-0.50,124.25q-1.25,64.00 -2.25,101.00q-0.25,21.75 -2.75,27.25q-0.25,1.00 -3.00,3.00q-4.50,3.00 -17.25,3.75q-7.50,0.50 -28.50,3.25l-1.00,20.75l 65.00,1.50l 95.00,3.25l 11.25,0.25q 1.25,0.00 3.50,0.125t 3.50,0.125q 0.25,0.00 5.375-0.125t 10.125-0.125l 18.50,0.00 q 22.00,0.00 47.75-6.75 q 10.75-3.25 24.00-9.75q 14.25-7.25 25.50-19.00q 11.00-11.75 16.25-26.00t 5.25-30.50q0.00-17.50 -8.00-32.00t-23.75-26.25q-6.50-5.00 -37.50-19.25q 44.25-10.25 66.75-36.50q 23.00-26.50 23.00-59.00q0.00-19.00 -7.25-40.25q-5.25-15.50 -17.75-29.25q-16.50-18.00 -35.00-27.00q-18.25-9.00 -50.75-15.00q-20.50-3.75 -49.50-2.75l-49.25,1.00q-21.00,0.50 -74.50-2.75q-8.25-0.75 -68.00-2.75z" horiz-adv-x="352" data-tags="bold, editor, format" />
<glyph unicode="&#x69;" d="M0.00-31.50l 4.25,21.25q 1.00,0.25 19.25,5.00q 19.00,4.75 29.00,9.75q 7.25,9.25 10.25,25.25l 6.75,34.75l 14.00,67.00l 3.00,16.00q 2.00,11.00 4.25,21.125t 4.00,16.75t 3.125,11.625t 2.25,7.625t 0.875,2.875l 7.25,39.25l 4.00,15.75l 5.50,33.75l 2.00,12.50l0.00,9.50 q-10.25,5.50 -36.00,7.00q-7.00,0.50 -9.50,1.00l 4.75,25.75l 79.25-3.50q 9.75-0.50 18.25-0.50q 16.50,0.00 53.50,2.25q 8.25,0.50 17.00,1.125t 9.00,0.625q-0.50-4.75 -1.50-9.50 q-1.75-7.25 -3.25-12.75q-13.75-4.75 -27.25-7.75q-16.00-4.00 -25.25-7.75q-3.00-7.75 -6.00-22.00q-2.25-11.00 -3.25-20.50q-11.00-49.75 -16.50-76.50l-15.25-77.75l-9.50-39.50l-10.75-58.75l-3.00-11.25q-0.50-1.75 0.25-6.75q 16.00-3.75 29.75-5.25q 9.00-1.25 16.50-2.50q-0.25-7.25 -1.75-14.50q-1.75-7.75 -2.25-10.25q-4.50,0.00 -5.75-0.25q-6.00-0.50 -10.50-0.50q-2.25,0.00 -7.00,0.75q-4.75,1.00 -36.25,4.25 l-49.50,0.50q-10.25,0.25 -43.50-2.75q-18.50-1.75 -24.50-2.25z" horiz-adv-x="256" data-tags="italic, editor, format" />
<glyph unicode="&#x31;" d="M 95.25-21.00q0.00-20.00 -13.625-31.50t-33.875-11.50q-26.50,0.00 -43.00,16.50l 14.25,22.00q 12.25-11.25 26.50-11.25q 7.25,0.00 12.625,3.625t 5.375,10.625q0.00,16.00 -26.25,14.00l-6.50,14.00q 2.00,2.50 8.125,10.875t 10.625,13.50t 9.25,9.625l0.00,0.25 q-4.00,0.00 -12.125-0.25t-12.125-0.25l0.00-13.25 l-26.50,0.00 l0.00,38.00 l 83.25,0.00 l0.00-22.00 l-23.75-28.75q 12.75-3.00 20.25-12.25t 7.50-22.00zM 95.75,135.75l0.00-39.75 l-90.50,0.00 q-1.50,9.00 -1.50,13.50q0.00,12.75 5.875,23.25t 14.125,17.00t 16.50,11.875t 14.125,10.875t 5.875,11.25q0.00,6.25 -3.625,9.625t-9.875,3.375q-11.50,0.00 -20.25-14.50l-21.25,14.75q 6.00,12.75 17.875,19.875t 26.375,7.125q 18.25,0.00 30.75-10.375t 12.50-28.125q0.00-12.50 -8.50-22.875t-18.75-16.125t-18.875-12.625t-8.875-13.125l 31.75,0.00 l0.00,15.00 l 26.25,0.00 zM 448.00,56.00l0.00-48.00 q0.00-3.25 -2.375-5.625 t-5.625-2.375l-304.00,0.00 q-3.25,0.00 -5.625,2.375t-2.375,5.625l0.00,48.00 q0.00,3.50 2.25,5.75t 5.75,2.25l 304.00,0.00 q 3.25,0.00 5.625-2.375t 2.375-5.625zM 96.00,280.75l0.00-24.75 l-83.75,0.00 l0.00,24.75 l 26.75,0.00 q0.00,10.25 0.125,30.50t 0.125,30.25l0.00,3.00 l-0.50,0.00 q-2.00-4.25 -12.50-13.50l-17.75,19.00l 34.00,31.75l 26.50,0.00 l0.00-101.00 l 27.00,0.00 zM 448.00,184.00l0.00-48.00 q0.00-3.25 -2.375-5.625t-5.625-2.375l-304.00,0.00 q-3.25,0.00 -5.625,2.375 t-2.375,5.625l0.00,48.00 q0.00,3.50 2.25,5.75t 5.75,2.25l 304.00,0.00 q 3.25,0.00 5.625-2.375t 2.375-5.625zM 448.00,312.00l0.00-48.00 q0.00-3.25 -2.375-5.625t-5.625-2.375l-304.00,0.00 q-3.25,0.00 -5.625,2.375t-2.375,5.625l0.00,48.00 q0.00,3.25 2.375,5.625t 5.625,2.375l 304.00,0.00 q 3.25,0.00 5.625-2.375t 2.375-5.625z" data-tags="list-ol, numbered list" />
<glyph unicode="&#x2a;" d="M 96.00,32.00q0.00-20.00 -14.00-34.00t-34.00-14.00t-34.00,14.00t-14.00,34.00t 14.00,34.00t 34.00,14.00t 34.00-14.00t 14.00-34.00zM 96.00,160.00q0.00-20.00 -14.00-34.00t-34.00-14.00t-34.00,14.00t-14.00,34.00t 14.00,34.00t 34.00,14.00t 34.00-14.00t 14.00-34.00zM 448.00,56.00l0.00-48.00 q0.00-3.25 -2.375-5.625t-5.625-2.375l-304.00,0.00 q-3.25,0.00 -5.625,2.375t-2.375,5.625l0.00,48.00 q0.00,3.25 2.375,5.625 t 5.625,2.375l 304.00,0.00 q 3.25,0.00 5.625-2.375t 2.375-5.625zM 96.00,288.00q0.00-20.00 -14.00-34.00t-34.00-14.00t-34.00,14.00t-14.00,34.00t 14.00,34.00t 34.00,14.00t 34.00-14.00t 14.00-34.00zM 448.00,184.00l0.00-48.00 q0.00-3.25 -2.375-5.625t-5.625-2.375l-304.00,0.00 q-3.25,0.00 -5.625,2.375t-2.375,5.625l0.00,48.00 q0.00,3.25 2.375,5.625t 5.625,2.375l 304.00,0.00 q 3.25,0.00 5.625-2.375t 2.375-5.625z M 448.00,312.00l0.00-48.00 q0.00-3.25 -2.375-5.625t-5.625-2.375l-304.00,0.00 q-3.25,0.00 -5.625,2.375t-2.375,5.625l0.00,48.00 q0.00,3.25 2.375,5.625t 5.625,2.375l 304.00,0.00 q 3.25,0.00 5.625-2.375t 2.375-5.625z" data-tags="list-ul, bullets" />
<glyph unicode="&#x6c;" d="M 364.00,80.00q0.00,10.00 -7.00,17.00l-52.00,52.00q-7.00,7.00 -17.00,7.00q-10.50,0.00 -18.00-8.00q 0.75-0.75 4.75-4.625t 5.375-5.375t 3.75-4.75t 3.25-6.375t 0.875-6.875q0.00-10.00 -7.00-17.00t-17.00-7.00q-3.75,0.00 -6.875,0.875t-6.375,3.25t-4.75,3.75t-5.375,5.375t-4.625,4.75q-8.25-7.75 -8.25-18.25q0.00-10.00 7.00-17.00l 51.50-51.75q 6.75-6.75 17.00-6.75q 10.00,0.00 17.00,6.50 l 36.75,36.50q 7.00,7.00 7.00,16.75zM 188.25,256.25q0.00,10.00 -7.00,17.00l-51.50,51.75q-7.00,7.00 -17.00,7.00q-9.75,0.00 -17.00-6.75l-36.75-36.50q-7.00-7.00 -7.00-16.75q0.00-10.00 7.00-17.00l 52.00-52.00q 6.75-6.75 17.00-6.75q 10.50,0.00 18.00,7.75q-0.75,0.75 -4.75,4.625t-5.375,5.375t-3.75,4.75t-3.25,6.375t-0.875,6.875q0.00,10.00 7.00,17.00t 17.00,7.00q 3.75,0.00 6.875-0.875t 6.375-3.25t 4.75-3.75 t 5.375-5.375t 4.625-4.75q 8.25,7.75 8.25,18.25zM 412.00,80.00q0.00-30.00 -21.25-50.75l-36.75-36.50q-20.75-20.75 -50.75-20.75q-30.25,0.00 -51.00,21.25l-51.50,51.75q-20.75,20.75 -20.75,50.75q0.00,30.75 22.00,52.25l-22.00,22.00q-21.50-22.00 -52.00-22.00q-30.00,0.00 -51.00,21.00l-52.00,52.00q-21.00,21.00 -21.00,51.00t 21.25,50.75l 36.75,36.50q 20.75,20.75 50.75,20.75q 30.25,0.00 51.00-21.25l 51.50-51.75 q 20.75-20.75 20.75-50.75q0.00-30.75 -22.00-52.25l 22.00-22.00q 21.50,22.00 52.00,22.00q 30.00,0.00 51.00-21.00l 52.00-52.00q 21.00-21.00 21.00-51.00z" horiz-adv-x="416" data-tags="link, chain, anchor" />
<glyph unicode="&#x3c;" d="M0.00,114.416l 140.588-90.398l0.00,65.254 L 56.882,140.96l 83.706,51.688L 140.588,258.35 L0.00,167.49L0.00,114.416 z M 170.324-8.00l 48.384,0.00 l 70.896,336.00l-48.706,0.00
L 170.324-8.00z M 307.426,258.35l0.00-65.702 l 83.678-51.688l-83.678-51.674l0.00-65.254 L 448.00,114.416l0.00,53.074 L 307.426,258.35z" data-tags="code, embed" />
<glyph unicode="&#x70;" d="M 160.00,240.00q0.00-20.00 -14.00-34.00t-34.00-14.00t-34.00,14.00t-14.00,34.00t 14.00,34.00t 34.00,14.00t 34.00-14.00t 14.00-34.00zM 416.00,144.00l0.00-112.00 l-352.00,0.00 l0.00,48.00 l 80.00,80.00l 40.00-40.00l 128.00,128.00zM 440.00,320.00l-400.00,0.00 q-3.25,0.00 -5.625-2.375t-2.375-5.625l0.00-304.00 q0.00-3.25 2.375-5.625t 5.625-2.375l 400.00,0.00 q 3.25,0.00 5.625,2.375t 2.375,5.625l0.00,304.00 q0.00,3.25 -2.375,5.625t-5.625,2.375zM 480.00,312.00l0.00-304.00 q0.00-16.50 -11.75-28.25t-28.25-11.75l-400.00,0.00 q-16.50,0.00 -28.25,11.75t-11.75,28.25l0.00,304.00 q0.00,16.50 11.75,28.25t 28.25,11.75l 400.00,0.00 q 16.50,0.00 28.25-11.75t 11.75-28.25z" horiz-adv-x="480" data-tags="picture, image, photo" />
<glyph unicode="&#x22;" d="M 110.118,298.813c-36.064,0.00-65.318-30.083-65.318-67.20s 29.254-67.20, 65.318-67.20c 65.296,0.00, 21.773-129.92-65.318-129.92l0.00-31.338
C 200.211,3.155, 261.117,298.813, 110.118,298.813z M 298.256,298.813c-36.064,0.00-65.318-30.083-65.318-67.20s 29.254-67.20, 65.318-67.20c 65.296,0.00, 21.773-129.92-65.318-129.92
l0.00-31.338 C 388.371,3.155, 449.277,298.813, 298.256,298.813z" data-tags="quote, rdquo" />
<glyph unicode="&#x3f;" d="M 221.267,366.058c-113.814-1.523-204.848-95.021-203.325-208.835c 1.523-113.747, 95.021-204.803, 208.835-203.28
c 113.77,1.523, 204.826,95.021, 203.28,208.835C 428.557,276.547, 335.059,367.581, 221.267,366.058z M 220.662,34.56L 219.52,34.56 c-17.517,0.515-29.882,13.44-29.389,30.71
c 0.493,16.957, 13.149,29.299, 30.106,29.299l 1.03-0.022c 18.01-0.538, 30.24-13.328, 29.702-31.091C 250.477,46.454, 238.00,34.56, 220.662,34.56z
M 294.381,180.877c-4.144-5.846-13.194-13.126-24.618-22.019l-12.589-8.691c-6.899-5.376-11.066-10.416-12.611-15.366
c-1.254-3.942-1.837-4.95-1.949-12.902l-0.022-2.038L 194.589,119.859 l 0.134,4.077c 0.582,16.71, 1.008,26.522, 7.93,34.653
c 10.864,12.746, 34.832,28.179, 35.84,28.829c 3.427,2.598, 6.317,5.533, 8.49,8.669c 5.04,6.944, 7.258,12.432, 7.258,17.786
c0.00,7.459-2.218,14.358-6.586,20.496c-4.211,5.936-12.208,8.938-23.766,8.938c-11.469,0.00-19.309-3.651-24.013-11.11
C 195.014,224.512, 192.595,216.47, 192.595,208.227l0.00-2.061 l-49.504,0.00 l 0.09,2.15c 1.277,30.33, 12.096,52.147, 32.166,64.893C 187.936,281.341, 203.616,285.44, 221.894,285.44
c 23.946,0.00, 44.195-5.824, 60.099-17.293c 16.128-11.626, 24.304-29.053, 24.304-51.766C 306.298,203.658, 302.288,191.718, 294.381,180.877z" data-tags="help, question" />
<glyph unicode="&#x5b;" d="M 170.324-8.00L 218.708-8.00L 289.604,328.00L 240.898,328.00 zM 108.063,249.687L 108.063,300.00L 59.063,300.00L 8.75,300.00L 8.75,249.687L 8.75,70.312L 8.75,20.00L 59.063,20.00L 108.063,20.00L 108.063,70.312L 59.063,70.312L 59.063,249.687 zM 339.938,249.687L 339.938,300.00L 388.938,300.00L 439.25,300.00L 439.25,249.687L 439.25,70.312L 439.25,20.00L 388.938,20.00L 339.938,20.00L 339.938,70.312L 388.938,70.312L 388.938,249.687 z" data-tags="code-block" />
<glyph unicode="&#x72;" d="M 403.245,119.68L 403.245,294.624 l-62.72-0.448L 340.525,137.60 l-224.00,0.00 l0.00,49.28 l-94.08-80.64l 94.08-80.64l0.00,49.28 l 241.92,0.00 C 383.152,74.88, 403.245,94.928, 403.245,119.68z" data-tags="return" />
<glyph unicode="&#x66;" d="M 32.00,0.00l 256.00,0.00 L 288.00,192.00 L 184.00,192.00 c-6.666,0.00-12.334,2.333-17.00,7.00s-7.00,10.333-7.00,17.00L 160.00,320.00 L 32.00,320.00 L 32.00,0.00 z M 192.00,224.00l 74.75,0.00 L 192.00,298.75L 192.00,224.00 z M 320.00,192.00l0.00-200.00
c0.00-6.667-2.333-12.333-7.00-17.00s-10.334-7.00-17.00-7.00L 24.00-32.00 c-6.667,0.00-12.333,2.333-17.00,7.00s-7.00,10.333-7.00,17.00L0.00,328.00 c0.00,6.667, 2.333,12.333, 7.00,17.00
s 10.333,7.00, 17.00,7.00l 136.00,0.00 c 6.666,0.00, 14.00-1.667, 22.00-5.00s 14.334-7.333, 19.00-12.00l 102.00-102.00c 4.667-4.667, 8.667-11.00, 12.00-19.00S 320.00,198.667, 320.00,192.00zM 169.517,150.50l-27.022,0.00 l-34.67-32.375l 18.10-19.375c 7.138,6.288, 11.386,10.877, 12.746,13.766l 0.51,0.00 l0.00-3.058
c0.00-6.797-0.042-17.081-0.128-30.847s-0.128-24.133-0.128-31.101l-27.276,0.00 l0.00-25.237 l 85.399,0.00 l0.00,25.237 l-27.531,0.00 L 169.517,150.50 zM 77.023,125.22L 99.447,125.22L 99.447,150.50L 54.00,150.50L 54.00,22.273L 99.447,22.273L 99.447,47.554L 77.023,47.554 zM 231.589,125.22L 209.166,125.22L 209.166,150.50L 254.613,150.50L 254.613,22.273L 209.166,22.273L 209.166,47.554L 231.589,47.554 z" horiz-adv-x="320" data-tags="footnote" />
<glyph unicode="&#x5f;" d="M0.00,191.36L 448.00,191.36L 448.00,128.64L0.00,128.64z" data-tags="hr" />
<glyph unicode="&#x76;" d="M 256.00,208.00q0.00-6.50 -4.75-11.25l-112.00-112.00q-4.75-4.75 -11.25-4.75t-11.25,4.75l-112.00,112.00q-4.75,4.75 -4.75,11.25t 4.75,11.25t 11.25,4.75l 224.00,0.00 q 6.50,0.00 11.25-4.75t 4.75-11.25z" horiz-adv-x="256" data-tags="caret-down, download, bottom, arrow" />
<glyph unicode="&#x2b;" d="M 156.80,182.40L 22.40,182.40 c-12.365,0.00-22.40-10.035-22.40-22.40s 10.035-22.40, 22.40-22.40l 134.40,0.00 c 12.365,0.00, 22.40,10.035, 22.40,22.40S 169.165,182.40, 156.80,182.40z M 156.80,92.80L 22.40,92.80 c-12.365,0.00-22.40-10.013-22.40-22.40s 10.035-22.40, 22.40-22.40l 134.40,0.00
c 12.365,0.00, 22.40,10.013, 22.40,22.40S 169.165,92.80, 156.80,92.80z M 434.56,182.40L 358.40,182.40 L 358.40,258.56 C 358.40,270.925, 348.387,272.00, 336.00,272.00s-22.40-1.075-22.40-13.44L 313.60,182.40 l-73.92,0.00 C 227.293,182.40, 226.24,172.365, 226.24,160.00
s 1.075-22.40, 13.462-22.40L 313.60,137.60 l0.00-76.16 c0.00-12.365, 10.013-13.44, 22.40-13.44s 22.40,1.075, 22.40,13.44L 358.40,137.60 l 76.16,0.00 c 12.365,0.00, 13.44,10.035, 13.44,22.40S 446.925,182.40, 434.56,182.40z M 156.80,272.00L 22.40,272.00
C 10.035,272.00,0.00,261.965,0.00,249.60s 10.035-22.40, 22.40-22.40l 134.40,0.00 c 12.365,0.00, 22.40,10.035, 22.40,22.40S 169.165,272.00, 156.80,272.00z" data-tags="add-to-list, plus, list" />
<glyph unicode="&#x20;" horiz-adv-x="224" />
<glyph class="hidden" unicode="&#xf000;" d="M0,384L 448 -64L0 -64 z" horiz-adv-x="0" />
</font></defs></svg>

After

Width:  |  Height:  |  Size: 17 KiB

View File

@ -0,0 +1,49 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>
This is a custom SVG font generated by IcoMoon.
<iconset grid="14"></iconset>
</metadata>
<defs>
<font id="meltdown" horiz-adv-x="448" >
<font-face units-per-em="448" ascent="384" descent="-64" />
<missing-glyph horiz-adv-x="448" />
<glyph unicode="&#x73;" d="M 416.00,144.00q-38.00,59.00 -95.25,88.25q 15.25-26.00 15.25-56.25q0.00-46.25 -32.875-79.125t-79.125-32.875t-79.125,32.875t-32.875,79.125q0.00,30.25 15.25,56.25q-57.25-29.25 -95.25-88.25q 33.25-51.25 83.375-81.625t 108.625-30.375t 108.625,30.375t 83.375,81.625zM 236.00,240.00q0.00,5.00 -3.50,8.50t-8.50,3.50q-31.25,0.00 -53.625-22.375 t-22.375-53.625q0.00-5.00 3.50-8.50t 8.50-3.50t 8.50,3.50t 3.50,8.50q0.00,21.50 15.25,36.75t 36.75,15.25q 5.00,0.00 8.50,3.50t 3.50,8.50zM 448.00,144.00q0.00-8.50 -5.00-17.25q-35.00-57.50 -94.125-92.125t-124.875-34.625t-124.875,34.75t-94.125,92.00q-5.00,8.75 -5.00,17.25t 5.00,17.25q 35.00,57.25 94.125,92.00t 124.875,34.75t 124.875-34.75t 94.125-92.00q 5.00-8.75 5.00-17.25z" />
<glyph unicode="&#x68;" d="M 138.75,50.25l 19.50,35.25q-21.75,15.75 -34.00,39.75t-12.25,50.75q0.00,30.25 15.25,56.25q-57.25-29.25 -95.25-88.25q 41.75-64.50 106.75-93.75zM 236.00,240.00q0.00,5.00 -3.50,8.50t-8.50,3.50q-31.25,0.00 -53.625-22.375t-22.375-53.625q0.00-5.00 3.50-8.50t 8.50-3.50t 8.50,3.50t 3.50,8.50q0.00,21.50 15.25,36.75t 36.75,15.25q 5.00,0.00 8.50,3.50t 3.50,8.50zM 326.75,287.75q0.00-1.75 -0.25-2.25 q-26.25-47.00 -78.75-141.50t-79.00-141.75l-12.25-22.25q-2.50-4.00 -7.00-4.00q-3.00,0.00 -33.50,17.50q-4.00,2.50 -4.00,7.00q0.00,3.00 11.00,21.75q-35.75,16.25 -65.875,43.25t-52.125,61.25q-5.00,7.75 -5.00,17.25t 5.00,17.25q 38.25,58.75 95.00,92.75t 124.00,34.00q 22.25,0.00 45.00-4.25l 13.50,24.25q 2.50,4.00 7.00,4.00q 1.25,0.00 4.50-1.50t 7.75-3.875t 8.25-4.625t 7.875-4.625t 4.875-2.875 q 4.00-2.50 4.00-6.75zM 336.00,176.00q0.00-34.75 -19.75-63.375t-52.25-41.125l 70.00,125.50q 2.00-11.25 2.00-21.00zM 448.00,144.00q0.00-8.75 -5.00-17.25q-9.75-16.00 -27.25-36.25q-37.50-43.00 -86.875-66.75t-104.875-23.75l 18.50,33.00q 53.00,4.50 98.125,34.25t 75.375,76.75q-28.75,44.75 -70.50,73.50l 15.75,28.00q 23.75-16.00 45.625-38.25t 36.125-46.00q 5.00-8.50 5.00-17.25z " />
<glyph unicode="&#x74;" d="M 128.00,40.00l0.00,48.00 q0.00,3.50 -2.25,5.75t-5.75,2.25l-80.00,0.00 q-3.50,0.00 -5.75-2.25t-2.25-5.75l0.00-48.00 q0.00-3.50 2.25-5.75t 5.75-2.25l 80.00,0.00 q 3.50,0.00 5.75,2.25t 2.25,5.75zM 128.00,136.00l0.00,48.00 q0.00,3.50 -2.25,5.75t-5.75,2.25l-80.00,0.00 q-3.50,0.00 -5.75-2.25t-2.25-5.75l0.00-48.00 q0.00-3.50 2.25-5.75t 5.75-2.25l 80.00,0.00 q 3.50,0.00 5.75,2.25t 2.25,5.75zM 256.00,40.00l0.00,48.00 q0.00,3.50 -2.25,5.75t-5.75,2.25l-80.00,0.00 q-3.50,0.00 -5.75-2.25t-2.25-5.75 l0.00-48.00 q0.00-3.50 2.25-5.75t 5.75-2.25l 80.00,0.00 q 3.50,0.00 5.75,2.25t 2.25,5.75zM 128.00,232.00l0.00,48.00 q0.00,3.50 -2.25,5.75t-5.75,2.25l-80.00,0.00 q-3.50,0.00 -5.75-2.25t-2.25-5.75l0.00-48.00 q0.00-3.50 2.25-5.75t 5.75-2.25l 80.00,0.00 q 3.50,0.00 5.75,2.25t 2.25,5.75zM 256.00,136.00l0.00,48.00 q0.00,3.50 -2.25,5.75t-5.75,2.25l-80.00,0.00 q-3.50,0.00 -5.75-2.25t-2.25-5.75l0.00-48.00 q0.00-3.50 2.25-5.75t 5.75-2.25l 80.00,0.00 q 3.50,0.00 5.75,2.25t 2.25,5.75zM 384.00,40.00l0.00,48.00 q0.00,3.50 -2.25,5.75t-5.75,2.25l-80.00,0.00 q-3.50,0.00 -5.75-2.25t-2.25-5.75l0.00-48.00 q0.00-3.50 2.25-5.75t 5.75-2.25l 80.00,0.00 q 3.50,0.00 5.75,2.25t 2.25,5.75zM 256.00,232.00l0.00,48.00 q0.00,3.50 -2.25,5.75t-5.75,2.25l-80.00,0.00 q-3.50,0.00 -5.75-2.25t-2.25-5.75l0.00-48.00 q0.00-3.50 2.25-5.75t 5.75-2.25l 80.00,0.00 q 3.50,0.00 5.75,2.25t 2.25,5.75zM 384.00,136.00l0.00,48.00 q0.00,3.50 -2.25,5.75t-5.75,2.25l-80.00,0.00 q-3.50,0.00 -5.75-2.25t-2.25-5.75l0.00-48.00 q0.00-3.50 2.25-5.75t 5.75-2.25l 80.00,0.00 q 3.50,0.00 5.75,2.25t 2.25,5.75zM 384.00,232.00l0.00,48.00 q0.00,3.50 -2.25,5.75t-5.75,2.25l-80.00,0.00 q-3.50,0.00 -5.75-2.25t-2.25-5.75l0.00-48.00 q0.00-3.50 2.25-5.75t 5.75-2.25l 80.00,0.00 q 3.50,0.00 5.75,2.25t 2.25,5.75zM 416.00,312.00l0.00-272.00 q0.00-16.50 -11.75-28.25t-28.25-11.75l-336.00,0.00 q-16.50,0.00 -28.25,11.75t-11.75,28.25l0.00,272.00 q0.00,16.50 11.75,28.25t 28.25,11.75l 336.00,0.00 q 16.50,0.00 28.25-11.75t 11.75-28.25 z" horiz-adv-x="416" />
<glyph unicode="&#x62;" d="M 138.75,3.75q 19.00-8.00 35.00-8.00q 32.75,0.00 54.00,10.25t 30.50,28.25q 9.50,17.50 9.50,45.25q0.00,28.50 -10.25,45.00q-14.50,23.50 -35.25,31.50q-20.00,8.00 -61.75,8.00q-18.50,0.00 -25.25-2.50l0.00-36.00 l-0.25-43.25l 0.75-67.50q0.00-3.75 3.00-11.00zM 135.25,190.25q 10.75-1.75 27.25-1.75q 43.75,0.00 66.00,16.25t 22.25,56.00q0.00,28.00 -21.25,46.75q-21.00,18.75 -63.75,18.75q-13.00,0.00 -32.50-3.25q0.00-11.00 0.50-19.25 q 1.75-30.50 1.50-69.75l-0.25-24.50q0.00-10.75 0.25-19.25zM0.00-32.00l 0.50,23.50q 11.25,2.25 17.00,3.00q 19.25,3.00 30.75,7.75q 4.25,6.75 5.25,12.75q 2.25,16.50 2.25,48.50l-0.50,124.25q-1.25,64.00 -2.25,101.00q-0.25,21.75 -2.75,27.25q-0.25,1.00 -3.00,3.00q-4.50,3.00 -17.25,3.75q-7.50,0.50 -28.50,3.25l-1.00,20.75l 65.00,1.50l 95.00,3.25l 11.25,0.25q 1.25,0.00 3.50,0.125t 3.50,0.125q 0.25,0.00 5.375-0.125t 10.125-0.125l 18.50,0.00 q 22.00,0.00 47.75-6.75 q 10.75-3.25 24.00-9.75q 14.25-7.25 25.50-19.00q 11.00-11.75 16.25-26.00t 5.25-30.50q0.00-17.50 -8.00-32.00t-23.75-26.25q-6.50-5.00 -37.50-19.25q 44.25-10.25 66.75-36.50q 23.00-26.50 23.00-59.00q0.00-19.00 -7.25-40.25q-5.25-15.50 -17.75-29.25q-16.50-18.00 -35.00-27.00q-18.25-9.00 -50.75-15.00q-20.50-3.75 -49.50-2.75l-49.25,1.00q-21.00,0.50 -74.50-2.75q-8.25-0.75 -68.00-2.75z" horiz-adv-x="352" />
<glyph unicode="&#x69;" d="M0.00-31.50l 4.25,21.25q 1.00,0.25 19.25,5.00q 19.00,4.75 29.00,9.75q 7.25,9.25 10.25,25.25l 6.75,34.75l 14.00,67.00l 3.00,16.00q 2.00,11.00 4.25,21.125t 4.00,16.75t 3.125,11.625t 2.25,7.625t 0.875,2.875l 7.25,39.25l 4.00,15.75l 5.50,33.75l 2.00,12.50l0.00,9.50 q-10.25,5.50 -36.00,7.00q-7.00,0.50 -9.50,1.00l 4.75,25.75l 79.25-3.50q 9.75-0.50 18.25-0.50q 16.50,0.00 53.50,2.25q 8.25,0.50 17.00,1.125t 9.00,0.625q-0.50-4.75 -1.50-9.50 q-1.75-7.25 -3.25-12.75q-13.75-4.75 -27.25-7.75q-16.00-4.00 -25.25-7.75q-3.00-7.75 -6.00-22.00q-2.25-11.00 -3.25-20.50q-11.00-49.75 -16.50-76.50l-15.25-77.75l-9.50-39.50l-10.75-58.75l-3.00-11.25q-0.50-1.75 0.25-6.75q 16.00-3.75 29.75-5.25q 9.00-1.25 16.50-2.50q-0.25-7.25 -1.75-14.50q-1.75-7.75 -2.25-10.25q-4.50,0.00 -5.75-0.25q-6.00-0.50 -10.50-0.50q-2.25,0.00 -7.00,0.75q-4.75,1.00 -36.25,4.25 l-49.50,0.50q-10.25,0.25 -43.50-2.75q-18.50-1.75 -24.50-2.25z" horiz-adv-x="256" />
<glyph unicode="&#x31;" d="M 95.25-21.00q0.00-20.00 -13.625-31.50t-33.875-11.50q-26.50,0.00 -43.00,16.50l 14.25,22.00q 12.25-11.25 26.50-11.25q 7.25,0.00 12.625,3.625t 5.375,10.625q0.00,16.00 -26.25,14.00l-6.50,14.00q 2.00,2.50 8.125,10.875t 10.625,13.50t 9.25,9.625l0.00,0.25 q-4.00,0.00 -12.125-0.25t-12.125-0.25l0.00-13.25 l-26.50,0.00 l0.00,38.00 l 83.25,0.00 l0.00-22.00 l-23.75-28.75q 12.75-3.00 20.25-12.25t 7.50-22.00zM 95.75,135.75l0.00-39.75 l-90.50,0.00 q-1.50,9.00 -1.50,13.50q0.00,12.75 5.875,23.25t 14.125,17.00t 16.50,11.875t 14.125,10.875t 5.875,11.25q0.00,6.25 -3.625,9.625t-9.875,3.375q-11.50,0.00 -20.25-14.50l-21.25,14.75q 6.00,12.75 17.875,19.875t 26.375,7.125q 18.25,0.00 30.75-10.375t 12.50-28.125q0.00-12.50 -8.50-22.875t-18.75-16.125t-18.875-12.625t-8.875-13.125l 31.75,0.00 l0.00,15.00 l 26.25,0.00 zM 448.00,56.00l0.00-48.00 q0.00-3.25 -2.375-5.625 t-5.625-2.375l-304.00,0.00 q-3.25,0.00 -5.625,2.375t-2.375,5.625l0.00,48.00 q0.00,3.50 2.25,5.75t 5.75,2.25l 304.00,0.00 q 3.25,0.00 5.625-2.375t 2.375-5.625zM 96.00,280.75l0.00-24.75 l-83.75,0.00 l0.00,24.75 l 26.75,0.00 q0.00,10.25 0.125,30.50t 0.125,30.25l0.00,3.00 l-0.50,0.00 q-2.00-4.25 -12.50-13.50l-17.75,19.00l 34.00,31.75l 26.50,0.00 l0.00-101.00 l 27.00,0.00 zM 448.00,184.00l0.00-48.00 q0.00-3.25 -2.375-5.625t-5.625-2.375l-304.00,0.00 q-3.25,0.00 -5.625,2.375 t-2.375,5.625l0.00,48.00 q0.00,3.50 2.25,5.75t 5.75,2.25l 304.00,0.00 q 3.25,0.00 5.625-2.375t 2.375-5.625zM 448.00,312.00l0.00-48.00 q0.00-3.25 -2.375-5.625t-5.625-2.375l-304.00,0.00 q-3.25,0.00 -5.625,2.375t-2.375,5.625l0.00,48.00 q0.00,3.25 2.375,5.625t 5.625,2.375l 304.00,0.00 q 3.25,0.00 5.625-2.375t 2.375-5.625z" />
<glyph unicode="&#x2a;" d="M 96.00,32.00q0.00-20.00 -14.00-34.00t-34.00-14.00t-34.00,14.00t-14.00,34.00t 14.00,34.00t 34.00,14.00t 34.00-14.00t 14.00-34.00zM 96.00,160.00q0.00-20.00 -14.00-34.00t-34.00-14.00t-34.00,14.00t-14.00,34.00t 14.00,34.00t 34.00,14.00t 34.00-14.00t 14.00-34.00zM 448.00,56.00l0.00-48.00 q0.00-3.25 -2.375-5.625t-5.625-2.375l-304.00,0.00 q-3.25,0.00 -5.625,2.375t-2.375,5.625l0.00,48.00 q0.00,3.25 2.375,5.625 t 5.625,2.375l 304.00,0.00 q 3.25,0.00 5.625-2.375t 2.375-5.625zM 96.00,288.00q0.00-20.00 -14.00-34.00t-34.00-14.00t-34.00,14.00t-14.00,34.00t 14.00,34.00t 34.00,14.00t 34.00-14.00t 14.00-34.00zM 448.00,184.00l0.00-48.00 q0.00-3.25 -2.375-5.625t-5.625-2.375l-304.00,0.00 q-3.25,0.00 -5.625,2.375t-2.375,5.625l0.00,48.00 q0.00,3.25 2.375,5.625t 5.625,2.375l 304.00,0.00 q 3.25,0.00 5.625-2.375t 2.375-5.625z M 448.00,312.00l0.00-48.00 q0.00-3.25 -2.375-5.625t-5.625-2.375l-304.00,0.00 q-3.25,0.00 -5.625,2.375t-2.375,5.625l0.00,48.00 q0.00,3.25 2.375,5.625t 5.625,2.375l 304.00,0.00 q 3.25,0.00 5.625-2.375t 2.375-5.625z" />
<glyph unicode="&#x6c;" d="M 364.00,80.00q0.00,10.00 -7.00,17.00l-52.00,52.00q-7.00,7.00 -17.00,7.00q-10.50,0.00 -18.00-8.00q 0.75-0.75 4.75-4.625t 5.375-5.375t 3.75-4.75t 3.25-6.375t 0.875-6.875q0.00-10.00 -7.00-17.00t-17.00-7.00q-3.75,0.00 -6.875,0.875t-6.375,3.25t-4.75,3.75t-5.375,5.375t-4.625,4.75q-8.25-7.75 -8.25-18.25q0.00-10.00 7.00-17.00l 51.50-51.75q 6.75-6.75 17.00-6.75q 10.00,0.00 17.00,6.50 l 36.75,36.50q 7.00,7.00 7.00,16.75zM 188.25,256.25q0.00,10.00 -7.00,17.00l-51.50,51.75q-7.00,7.00 -17.00,7.00q-9.75,0.00 -17.00-6.75l-36.75-36.50q-7.00-7.00 -7.00-16.75q0.00-10.00 7.00-17.00l 52.00-52.00q 6.75-6.75 17.00-6.75q 10.50,0.00 18.00,7.75q-0.75,0.75 -4.75,4.625t-5.375,5.375t-3.75,4.75t-3.25,6.375t-0.875,6.875q0.00,10.00 7.00,17.00t 17.00,7.00q 3.75,0.00 6.875-0.875t 6.375-3.25t 4.75-3.75 t 5.375-5.375t 4.625-4.75q 8.25,7.75 8.25,18.25zM 412.00,80.00q0.00-30.00 -21.25-50.75l-36.75-36.50q-20.75-20.75 -50.75-20.75q-30.25,0.00 -51.00,21.25l-51.50,51.75q-20.75,20.75 -20.75,50.75q0.00,30.75 22.00,52.25l-22.00,22.00q-21.50-22.00 -52.00-22.00q-30.00,0.00 -51.00,21.00l-52.00,52.00q-21.00,21.00 -21.00,51.00t 21.25,50.75l 36.75,36.50q 20.75,20.75 50.75,20.75q 30.25,0.00 51.00-21.25l 51.50-51.75 q 20.75-20.75 20.75-50.75q0.00-30.75 -22.00-52.25l 22.00-22.00q 21.50,22.00 52.00,22.00q 30.00,0.00 51.00-21.00l 52.00-52.00q 21.00-21.00 21.00-51.00z" horiz-adv-x="416" />
<glyph unicode="&#x3c;" d="M0.00,114.416l 140.588-90.398l0.00,65.254 L 56.882,140.96l 83.706,51.688L 140.588,258.35 L0.00,167.49L0.00,114.416 z M 170.324-8.00l 48.384,0.00 l 70.896,336.00l-48.706,0.00
L 170.324-8.00z M 307.426,258.35l0.00-65.702 l 83.678-51.688l-83.678-51.674l0.00-65.254 L 448.00,114.416l0.00,53.074 L 307.426,258.35z" />
<glyph unicode="&#x70;" d="M 160.00,240.00q0.00-20.00 -14.00-34.00t-34.00-14.00t-34.00,14.00t-14.00,34.00t 14.00,34.00t 34.00,14.00t 34.00-14.00t 14.00-34.00zM 416.00,144.00l0.00-112.00 l-352.00,0.00 l0.00,48.00 l 80.00,80.00l 40.00-40.00l 128.00,128.00zM 440.00,320.00l-400.00,0.00 q-3.25,0.00 -5.625-2.375t-2.375-5.625l0.00-304.00 q0.00-3.25 2.375-5.625t 5.625-2.375l 400.00,0.00 q 3.25,0.00 5.625,2.375t 2.375,5.625l0.00,304.00 q0.00,3.25 -2.375,5.625t-5.625,2.375zM 480.00,312.00l0.00-304.00 q0.00-16.50 -11.75-28.25t-28.25-11.75l-400.00,0.00 q-16.50,0.00 -28.25,11.75t-11.75,28.25l0.00,304.00 q0.00,16.50 11.75,28.25t 28.25,11.75l 400.00,0.00 q 16.50,0.00 28.25-11.75t 11.75-28.25z" horiz-adv-x="480" />
<glyph unicode="&#x22;" d="M 110.118,298.813c-36.064,0.00-65.318-30.083-65.318-67.20s 29.254-67.20, 65.318-67.20c 65.296,0.00, 21.773-129.92-65.318-129.92l0.00-31.338
C 200.211,3.155, 261.117,298.813, 110.118,298.813z M 298.256,298.813c-36.064,0.00-65.318-30.083-65.318-67.20s 29.254-67.20, 65.318-67.20c 65.296,0.00, 21.773-129.92-65.318-129.92
l0.00-31.338 C 388.371,3.155, 449.277,298.813, 298.256,298.813z" />
<glyph unicode="&#x3f;" d="M 221.267,366.058c-113.814-1.523-204.848-95.021-203.325-208.835c 1.523-113.747, 95.021-204.803, 208.835-203.28
c 113.77,1.523, 204.826,95.021, 203.28,208.835C 428.557,276.547, 335.059,367.581, 221.267,366.058z M 220.662,34.56L 219.52,34.56 c-17.517,0.515-29.882,13.44-29.389,30.71
c 0.493,16.957, 13.149,29.299, 30.106,29.299l 1.03-0.022c 18.01-0.538, 30.24-13.328, 29.702-31.091C 250.477,46.454, 238.00,34.56, 220.662,34.56z
M 294.381,180.877c-4.144-5.846-13.194-13.126-24.618-22.019l-12.589-8.691c-6.899-5.376-11.066-10.416-12.611-15.366
c-1.254-3.942-1.837-4.95-1.949-12.902l-0.022-2.038L 194.589,119.859 l 0.134,4.077c 0.582,16.71, 1.008,26.522, 7.93,34.653
c 10.864,12.746, 34.832,28.179, 35.84,28.829c 3.427,2.598, 6.317,5.533, 8.49,8.669c 5.04,6.944, 7.258,12.432, 7.258,17.786
c0.00,7.459-2.218,14.358-6.586,20.496c-4.211,5.936-12.208,8.938-23.766,8.938c-11.469,0.00-19.309-3.651-24.013-11.11
C 195.014,224.512, 192.595,216.47, 192.595,208.227l0.00-2.061 l-49.504,0.00 l 0.09,2.15c 1.277,30.33, 12.096,52.147, 32.166,64.893C 187.936,281.341, 203.616,285.44, 221.894,285.44
c 23.946,0.00, 44.195-5.824, 60.099-17.293c 16.128-11.626, 24.304-29.053, 24.304-51.766C 306.298,203.658, 302.288,191.718, 294.381,180.877z" />
<glyph unicode="&#x5b;" d="M 170.324-8.00L 218.708-8.00L 289.604,328.00L 240.898,328.00 zM 108.063,249.687L 108.063,300.00L 59.063,300.00L 8.75,300.00L 8.75,249.687L 8.75,70.312L 8.75,20.00L 59.063,20.00L 108.063,20.00L 108.063,70.312L 59.063,70.312L 59.063,249.687 zM 339.938,249.687L 339.938,300.00L 388.938,300.00L 439.25,300.00L 439.25,249.687L 439.25,70.312L 439.25,20.00L 388.938,20.00L 339.938,20.00L 339.938,70.312L 388.938,70.312L 388.938,249.687 z" />
<glyph unicode="&#x72;" d="M 403.245,119.68L 403.245,294.624 l-62.72-0.448L 340.525,137.60 l-224.00,0.00 l0.00,49.28 l-94.08-80.64l 94.08-80.64l0.00,49.28 l 241.92,0.00 C 383.152,74.88, 403.245,94.928, 403.245,119.68z" />
<glyph unicode="&#x66;" d="M 32.00,0.00l 256.00,0.00 L 288.00,192.00 L 184.00,192.00 c-6.666,0.00-12.334,2.333-17.00,7.00s-7.00,10.333-7.00,17.00L 160.00,320.00 L 32.00,320.00 L 32.00,0.00 z M 192.00,224.00l 74.75,0.00 L 192.00,298.75L 192.00,224.00 z M 320.00,192.00l0.00-200.00
c0.00-6.667-2.333-12.333-7.00-17.00s-10.334-7.00-17.00-7.00L 24.00-32.00 c-6.667,0.00-12.333,2.333-17.00,7.00s-7.00,10.333-7.00,17.00L0.00,328.00 c0.00,6.667, 2.333,12.333, 7.00,17.00
s 10.333,7.00, 17.00,7.00l 136.00,0.00 c 6.666,0.00, 14.00-1.667, 22.00-5.00s 14.334-7.333, 19.00-12.00l 102.00-102.00c 4.667-4.667, 8.667-11.00, 12.00-19.00S 320.00,198.667, 320.00,192.00zM 169.517,150.50l-27.022,0.00 l-34.67-32.375l 18.10-19.375c 7.138,6.288, 11.386,10.877, 12.746,13.766l 0.51,0.00 l0.00-3.058
c0.00-6.797-0.042-17.081-0.128-30.847s-0.128-24.133-0.128-31.101l-27.276,0.00 l0.00-25.237 l 85.399,0.00 l0.00,25.237 l-27.531,0.00 L 169.517,150.50 zM 77.023,125.22L 99.447,125.22L 99.447,150.50L 54.00,150.50L 54.00,22.273L 99.447,22.273L 99.447,47.554L 77.023,47.554 zM 231.589,125.22L 209.166,125.22L 209.166,150.50L 254.613,150.50L 254.613,22.273L 209.166,22.273L 209.166,47.554L 231.589,47.554 z" horiz-adv-x="320" />
<glyph unicode="&#x5f;" d="M0.00,191.36L 448.00,191.36L 448.00,128.64L0.00,128.64z" />
<glyph unicode="&#x76;" d="M 256.00,208.00q0.00-6.50 -4.75-11.25l-112.00-112.00q-4.75-4.75 -11.25-4.75t-11.25,4.75l-112.00,112.00q-4.75,4.75 -4.75,11.25t 4.75,11.25t 11.25,4.75l 224.00,0.00 q 6.50,0.00 11.25-4.75t 4.75-11.25z" horiz-adv-x="256" />
<glyph unicode="&#x2b;" d="M 156.80,182.40L 22.40,182.40 c-12.365,0.00-22.40-10.035-22.40-22.40s 10.035-22.40, 22.40-22.40l 134.40,0.00 c 12.365,0.00, 22.40,10.035, 22.40,22.40S 169.165,182.40, 156.80,182.40z M 156.80,92.80L 22.40,92.80 c-12.365,0.00-22.40-10.013-22.40-22.40s 10.035-22.40, 22.40-22.40l 134.40,0.00
c 12.365,0.00, 22.40,10.013, 22.40,22.40S 169.165,92.80, 156.80,92.80z M 434.56,182.40L 358.40,182.40 L 358.40,258.56 C 358.40,270.925, 348.387,272.00, 336.00,272.00s-22.40-1.075-22.40-13.44L 313.60,182.40 l-73.92,0.00 C 227.293,182.40, 226.24,172.365, 226.24,160.00
s 1.075-22.40, 13.462-22.40L 313.60,137.60 l0.00-76.16 c0.00-12.365, 10.013-13.44, 22.40-13.44s 22.40,1.075, 22.40,13.44L 358.40,137.60 l 76.16,0.00 c 12.365,0.00, 13.44,10.035, 13.44,22.40S 446.925,182.40, 434.56,182.40z M 156.80,272.00L 22.40,272.00
C 10.035,272.00,0.00,261.965,0.00,249.60s 10.035-22.40, 22.40-22.40l 134.40,0.00 c 12.365,0.00, 22.40,10.035, 22.40,22.40S 169.165,272.00, 156.80,272.00z" />
<glyph unicode="&#x20;" horiz-adv-x="224" />
<glyph class="hidden" unicode="&#xf000;" d="M0,384L 448 -64L0 -64 z" horiz-adv-x="0" />
</font></defs></svg>

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -0,0 +1,405 @@
/*global jQuery, console, Markdown*/
/*
* Meltdown (Markup Extra Live Toolbox)
* Version: 0.1 (13-FEB-2013)
* Requires: jQuery v1.7.2 or later
*/
(function (jQuery) {
'use strict';
var ver, name, dbg;
ver = '0.1';
name = 'meltdown';
dbg = true;
function debug(msg) {
if ((typeof console !== 'undefined') && (dbg === true)) {
console.log(msg);
}
}
function update(previewArea, input) {
var mde = Markdown;
previewArea.height(input.outerHeight());
previewArea.html(mde(input.val()));
}
function addEventHandler(thees, example, control) {
control.click(function (e) {
var text, selection, before, placeholder, after, lineStart, lineEnd, charBefore, charAfter;
before = example.before || "";
placeholder = example.placeholder || "";
after = example.after || "";
if (typeof thees.surroundSelectedText !== 'undefined') {
text = thees.val();
selection = thees.getSelection();
if (example.lineSelect) {
lineStart = text.lastIndexOf('\n', selection.start) + 1;
lineEnd = text.indexOf('\n', selection.end);
if(lineEnd === -1) {
lineEnd = text.length;
}
thees.setSelection(lineStart, lineEnd);
selection = thees.getSelection();
}
if(selection.length > 0) {
placeholder = selection.text;
}
if (example.isBlock) {
for (var i = 0; i < 2; i++) {
charBefore = text.charAt(selection.start - 1 - i);
charAfter = text.charAt(selection.end + i);
if (charBefore !== "\n" && charBefore !== "") {
before = "\n" + before;
}
if (charAfter !== "\n" && charAfter !== "") {
after = after + "\n";
}
}
}
if (selection.text !== placeholder) {
thees.replaceSelectedText(placeholder, "select");
}
thees.surroundSelectedText(before, after, "select");
} else {
debug('Failed to load surroundSelectedText');
thees.val(before + placeholder + after + "\n\n" + thees.val());
}
e.preventDefault();
thees.focus();
thees.keyup();
});
}
function buildControls(opts, thees, controls) {
var controlList, example, control, tuple, t, groupClass, group, outer, tmpThis;
controlList = [];
for (example in opts.examples) {
if (opts.examples.hasOwnProperty(example)) {
example = opts.examples[example];
control = jQuery('<li><span>' + example.label + '</span></li>');
control.addClass(name + '_control');
if (typeof example.styleClass !== 'undefined') {
control.addClass(example.styleClass);
}
control.children(":first").attr('title', example.altText);
addEventHandler(thees, example, control);
tuple = {};
tuple.example = example;
tuple.control = control;
controlList.push(tuple);
}
}
function addClickHandler(outer) {
outer.on('click', function () {
var element = jQuery(this);
element.siblings('li').removeClass(name + '_controlgroup-open').children('ul').hide();
element.toggleClass(name + '_controlgroup-open').children('ul').toggle();
});
}
for (t in controlList) {
if (controlList.hasOwnProperty(t)) {
t = controlList[t];
if (t.example.group && t.example.groupLabel) {
groupClass = name + "_controlgroup-" + t.example.group;
group = controls.find("ul." + groupClass);
outer = jQuery('<li />');
if (group.length === 0) {
group = jQuery('<ul style="display: none;" />');
group.addClass(name + '_controlgroup-dropdown ' + groupClass);
outer.addClass(name + '_controlgroup ' + groupClass);
outer.append('<span>' + t.example.groupLabel + ' <i class="meltdown-icon-caret-down"></i></span><b></b>');
outer.append(group);
controls.append(outer);
}
group.append(t.control);
addClickHandler(outer);
} else {
controls.append(t.control);
}
}
}
}
function getAddExampleControl(options, thees, previewArea, example) {
var control = jQuery('<li><span>' + example.label + '</span></li>');
control.addClass(name + '_control');
if (typeof example.styleClass !== 'undefined') {
control.addClass(example.styleClass);
}
control.children(":first").attr('title', example.altText);
control.on('click', function () {
thees.val(example.markdown + "\n\n\n" + thees.val());
thees.keyup();
});
return control;
}
function getPreviewControl(options, thees, previewArea) {
var control = jQuery('<li class="' + name + '_control ' + name + '_control-preview"><span title="Show preview">Show preview</span></li>');
control.on('click', function () {
if (control.hasClass('disabled')) {
return;
}
if (!previewArea.is(':visible')) {
previewArea.find('.meltdown_preview').height(thees.outerHeight());
if (options.hasEffects) {
previewArea.slideToggle(options.previewTimeout);
} else {
previewArea.fadeIn();
}
previewArea.addClass(name + 'visible');
control.children(':eq(0)').text('Hide preview');
control.addClass(name + '_preview-showing');
update(previewArea.children(':eq(1)'), thees);
} else {
if (options.hasEffects) {
previewArea.slideToggle(options.previewTimeout);
} else {
previewArea.fadeOut();
}
previewArea.removeClass(name + 'visible');
control.removeClass(name + '_preview-showing');
control.children(':eq(0)').text('Show preview');
}
});
return control;
}
function getExamples() {
var key, examples, pounds, i, j;
examples = {
bold: {
label: "B",
altText: "Bold",
before: "**",
after: "**"
},
italics: {
label: "I",
altText: "Italics",
before: "*",
after: "*"
},
ul: {
label: "UL",
altText: "Unordered List",
before: "* ",
placeholder: "Item\n* Item",
lineSelect: true,
isBlock: true
},
ol: {
label: "OL",
altText: "Ordered List",
before: "1. ",
placeholder: "Item 1\n2. Item 2\n3. Item 3",
lineSelect: true,
isBlock: true
},
table: {
label: "Table",
altText: "Table",
before: "First Header | Second Header\n------------- | -------------\nContent Cell | Content Cell\nContent Cell | Content Cell\n",
isBlock: true
}
};
pounds = "";
for (i = 1; i <= 6; i += 1) {
pounds = pounds + "#";
examples['h' + i] = {
group: "h",
groupLabel: "Headers",
label: "H" + i,
altText: "Header " + i,
before: pounds + " ",
lineSelect: true
};
}
examples.link = {
label: "Link",
group: "kitchenSink",
groupLabel: "Kitchen Sink",
altText: "Link",
before: "[",
placeholder: "Example link",
after: "](http:// \"Link title\")"
};
examples.img = {
label: "Image",
group: "kitchenSink",
groupLabel: "Kitchen Sink",
altText: "Image",
before: "![Alt text](",
placeholder: "http://",
after: ")"
};
examples.blockquote = {
label: "Blockquote",
group: "kitchenSink",
groupLabel: "Kitchen Sink",
altText: "Blockquote",
before: "> ",
placeholder: "Quoted text",
lineSelect: true,
isBlock: true
};
examples.codeblock = {
label: "Code Block",
group: "kitchenSink",
groupLabel: "Kitchen Sink",
altText: "Code Block",
before: "~~~\n",
placeholder: "Code",
after: "\n~~~",
lineSelect: true,
isBlock: true
};
examples.code = {
label: "Code",
group: "kitchenSink",
groupLabel: "Kitchen Sink",
altText: "Inline Code",
before: "`",
placeholder: "code",
after: "`",
};
examples.footnote = {
label: "Footnote",
group: "kitchenSink",
groupLabel: "Kitchen Sink",
altText: "Footnote",
before: "[^1]\n\n[^1]:",
placeholder: "Example footnote",
isBlock: true
};
examples.hr = {
label: "HR",
group: "kitchenSink",
groupLabel: "Kitchen Sink",
altText: "Horizontal Rule",
before: "----------",
placeholder: "",
isBlock: true
};
for (key in examples) {
if (examples.hasOwnProperty(key)) {
examples[key].styleClass = name + "_control-" + key;
}
}
return examples;
}
function addToolTip(wrap) {
var tip, preview;
preview = wrap.find('.meltdown_control-preview');
if (typeof jQuery.qtip !== 'undefined') {
// Disable the preview
preview.addClass('disabled');
tip = preview.qtip({
content: "Warning this feature is a tech preview feature.<br/>"
+ "There is a <a target=\"_blank\" href=\"https://github.com/iphands/Meltdown/issues/1\">known issue</a> with one of the libraries used to generate the live preview.<br/><br/>"
+ "Live previews <b>can</b> cause the browser tab to stop responding.<br/><br/>"
+ "This warning will be removed when <a href=\"#\" target=\"_blank\" href=\"https://github.com/iphands/Meltdown/issues/1\">the issue</a> is resolved.<br/></br>"
+ "<input type=\"button\" class=\"meltdown_control-preview-enabler\" value=\"Click here\"> to remove this warning and enable live previews",
show: {
delay: 0,
when: {
event: 'mouseover'
}
},
hide: {
delay: 5000,
when: {
event: 'mouseout'
}
},
position: {
corner: {
target: 'leftMiddle',
tooltip: 'rightMiddle'
}
},
api: {
onRender: function () {
jQuery('.meltdown_control-preview-enabler').click(function () {
tip.qtip('destroy');
jQuery('.meltdown_control-preview').removeClass('disabled');
preview.click();
});
}
},
style: {
classes: 'meltdown_techpreview-qtip',
name: 'dark',
lineHeight: '1.3em',
padding: '12px',
width: {
max: 300,
min: 0
},
tip: true
}
});
}
}
jQuery.fn.meltdown = function (userOptions) {
return this.each(function () {
var defaults, opts, thees, wrap, previewWrap, preview, bar, controls;
defaults = jQuery.fn.meltdown.defaults;
opts = jQuery.extend(true, {}, defaults, userOptions);
opts.hasEffects = typeof jQuery.ui !== 'undefined';
thees = jQuery(this);
thees.wrap('<div class="' + name + '_wrap" />');
thees.before('<div><div style="display: none;" class="' + name + '_preview-wrap"><span class="' + name + '_preview-header">Preview Area (<a class="meltdown_techpreview" href="https://github.com/iphands/Meltdown/issues/1">Tech Preview</a>)</span><div class="' + name + '_preview"></div></div></div><div class="meltdown_bar"><ul class="' + name + '_controls"></ul></div>');
wrap = thees.parent();
previewWrap = wrap.children(':eq(0)').children(':eq(0)'); /* wrapper for the preview area, but not where the updated content goes */
preview = previewWrap.children(':eq(1)'); /* preview area where updates happen */
bar = wrap.children(':eq(1)');
controls = bar.children().first();
buildControls(opts, thees, controls);
controls.append(getPreviewControl(opts, thees, previewWrap));
wrap.width(thees.outerWidth());
preview.height(thees.outerHeight());
thees.on('keyup', function (event) {
if (previewWrap.is(':visible')) {
update(preview, thees);
}
});
addToolTip(wrap);
});
};
jQuery.fn.meltdown.defaults = {
examples: getExamples(),
previewTimeout: 400
};
}(jQuery));

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,17 @@
/**
* @license Rangy Inputs, a jQuery plug-in for selection and caret manipulation within textareas and text inputs.
*
* https://github.com/timdown/rangyinputs
*
* For range and selection features for contenteditable, see Rangy.
* http://code.google.com/p/rangy/
*
* Depends on jQuery 1.0 or later.
*
* Copyright 2013, Tim Down
* Licensed under the MIT license.
* Version: 1.1.2
* Build date: 6 September 2013
*/
!function(a){function l(a,b){var c=typeof a[b];return"function"===c||!("object"!=c||!a[b])||"unknown"==c}function m(a,c){return typeof a[c]!=b}function n(a,b){return!("object"!=typeof a[b]||!a[b])}function o(a){window.console&&window.console.log&&window.console.log("RangyInputs not supported in your browser. Reason: "+a)}function p(a,c,d){return 0>c&&(c+=a.value.length),typeof d==b&&(d=c),0>d&&(d+=a.value.length),{start:c,end:d}}function q(a,b,c){return{start:b,end:c,length:c-b,text:a.value.slice(b,c)}}function r(){return n(document,"body")?document.body:document.getElementsByTagName("body")[0]}var c,d,e,f,g,h,i,j,k,b="undefined";a(document).ready(function(){function v(a,b){return function(){var c=this.jquery?this[0]:this,d=c.nodeName.toLowerCase();if(1==c.nodeType&&("textarea"==d||"input"==d&&"text"==c.type)){var e=[c].concat(Array.prototype.slice.call(arguments)),f=a.apply(this,e);if(!b)return f}return b?this:void 0}}var s=document.createElement("textarea");if(r().appendChild(s),m(s,"selectionStart")&&m(s,"selectionEnd"))c=function(a){var b=a.selectionStart,c=a.selectionEnd;return q(a,b,c)},d=function(a,b,c){var d=p(a,b,c);a.selectionStart=d.start,a.selectionEnd=d.end},k=function(a,b){b?a.selectionEnd=a.selectionStart:a.selectionStart=a.selectionEnd};else{if(!(l(s,"createTextRange")&&n(document,"selection")&&l(document.selection,"createRange")))return r().removeChild(s),o("No means of finding text input caret position"),void 0;c=function(a){var d,e,f,g,b=0,c=0,h=document.selection.createRange();return h&&h.parentElement()==a&&(f=a.value.length,d=a.value.replace(/\r\n/g,"\n"),e=a.createTextRange(),e.moveToBookmark(h.getBookmark()),g=a.createTextRange(),g.collapse(!1),e.compareEndPoints("StartToEnd",g)>-1?b=c=f:(b=-e.moveStart("character",-f),b+=d.slice(0,b).split("\n").length-1,e.compareEndPoints("EndToEnd",g)>-1?c=f:(c=-e.moveEnd("character",-f),c+=d.slice(0,c).split("\n").length-1))),q(a,b,c)};var t=function(a,b){return b-(a.value.slice(0,b).split("\r\n").length-1)};d=function(a,b,c){var d=p(a,b,c),e=a.createTextRange(),f=t(a,d.start);e.collapse(!0),d.start==d.end?e.move("character",f):(e.moveEnd("character",t(a,d.end)),e.moveStart("character",f)),e.select()},k=function(a,b){var c=document.selection.createRange();c.collapse(b),c.select()}}r().removeChild(s),f=function(a,b,c,e){var f;b!=c&&(f=a.value,a.value=f.slice(0,b)+f.slice(c)),e&&d(a,b,b)},e=function(a){var b=c(a);f(a,b.start,b.end,!0)},j=function(a){var e,b=c(a);return b.start!=b.end&&(e=a.value,a.value=e.slice(0,b.start)+e.slice(b.end)),d(a,b.start,b.start),b.text};var u=function(a,b,c,e){var f=b+c.length;if(e="string"==typeof e?e.toLowerCase():"",("collapsetoend"==e||"select"==e)&&/[\r\n]/.test(c)){var g=c.replace(/\r\n/g,"\n").replace(/\r/g,"\n");f=b+g.length;var h=b+g.indexOf("\n");"\r\n"==a.value.slice(h,h+2)&&(f+=g.match(/\n/g).length)}switch(e){case"collapsetostart":d(a,b,b);break;case"collapsetoend":d(a,f,f);break;case"select":d(a,b,f)}};g=function(a,b,c,d){var e=a.value;a.value=e.slice(0,c)+b+e.slice(c),"boolean"==typeof d&&(d=d?"collapseToEnd":""),u(a,c,b,d)},h=function(a,b,d){var e=c(a),f=a.value;a.value=f.slice(0,e.start)+b+f.slice(e.end),u(a,e.start,b,d||"collapseToEnd")},i=function(a,d,e,f){typeof e==b&&(e=d);var g=c(a),h=a.value;a.value=h.slice(0,g.start)+d+g.text+e+h.slice(g.end);var i=g.start+d.length;u(a,i,g.text,f||"select")},a.fn.extend({getSelection:v(c,!1),setSelection:v(d,!0),collapseSelection:v(k,!0),deleteSelectedText:v(e,!0),deleteText:v(f,!0),extractSelectedText:v(j,!1),insertText:v(g,!0),replaceSelectedText:v(h,!0),surroundSelectedText:v(i,!0)})})}(jQuery);

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
base markdownextra
author Joonas Pulakka, Jiang Le
email joonas.pulakka@iki.fi
date 2013-01-14
name PHP Markdown Extra plugin
desc Parses PHP Markdown Extra blocks.
url http://www.dokuwiki.org/plugin:markdownextra

View File

@ -0,0 +1,148 @@
<?php
/**
* PHP Markdown Extra plugin for DokuWiki.
*
* @license GPL 3 (http://www.gnu.org/licenses/gpl.html) - NOTE: PHP Markdown
* Extra is licensed under the BSD license. See License.text for details.
* @version 1.03 - 24.11.2012 - PHP Markdown Extra 1.2.5 included.
* @author Joonas Pulakka <joonas.pulakka@iki.fi>, Jiang Le <smartynaoki@gmail.com>
*/
if (!defined('DOKU_INC')) die();
if (!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN', DOKU_INC . 'lib/plugins/');
require_once (DOKU_PLUGIN . 'syntax.php');
require_once (DOKU_PLUGIN . 'markdownextra/markdown.php');
class syntax_plugin_markdownextra extends DokuWiki_Syntax_Plugin {
function getType() {
return 'protected';
}
function getPType() {
return 'block';
}
function getSort() {
return 69;
}
function connectTo($mode) {
$this->Lexer->addEntryPattern('<markdown>(?=.*</markdown>)', $mode, 'plugin_markdownextra');
}
function postConnect() {
$this->Lexer->addExitPattern('</markdown>', 'plugin_markdownextra');
}
function handle($match, $state, $pos, Doku_Handler $handler) {
switch ($state) {
case DOKU_LEXER_ENTER : return array($state, '');
case DOKU_LEXER_UNMATCHED : return array($state, Markdown($match));
case DOKU_LEXER_EXIT : return array($state, '');
}
return array($state,'');
}
function render($mode, Doku_Renderer $renderer, $data) {
//dbg('function render($mode, &$renderer, $data)-->'.' mode = '.$mode.' data = '.$data);
//dbg($data);
if ($mode == 'xhtml') {
list($state,$match) = $data;
switch ($state) {
case DOKU_LEXER_ENTER : break;
case DOKU_LEXER_UNMATCHED :
$match = $this->_toc($renderer, $match);
$renderer->doc .= $match;
break;
case DOKU_LEXER_EXIT : break;
}
return true;
}else if ($mode == 'metadata') {
//dbg('function render($mode, &$renderer, $data)-->'.' mode = '.$mode.' data = '.$data);
//dbg($data);
list($state,$match) = $data;
switch ($state) {
case DOKU_LEXER_ENTER : break;
case DOKU_LEXER_UNMATCHED :
if (!$renderer->meta['title']){
$renderer->meta['title'] = $this->_markdown_header($match);
}
$this->_toc($renderer, $match);
$internallinks = $this->_internallinks($match);
#dbg($internallinks);
if (count($internallinks)>0){
foreach($internallinks as $internallink)
{
$renderer->internallink($internallink);
}
}
break;
case DOKU_LEXER_EXIT : break;
}
return true;
} else {
return false;
}
}
function _markdown_header($text)
{
$doc = new DOMDocument('1.0','UTF-8');
//dbg($doc);
$meta = '<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head>';
$doc->loadHTML($meta.$text);
//dbg($doc->saveHTML());
if ($nodes = $doc->getElementsByTagName('h1')){
return $nodes->item(0)->nodeValue;
}
return false;
}
function _internallinks($text)
{
$links = array();
if ( ! $text ) return $links;
$doc = new DOMDocument('1.0', 'UTF-8');
$doc->loadHTML($text);
if ($nodes = $doc->getElementsByTagName('a')){
foreach($nodes as $atag)
{
$href = $atag->getAttribute('href');
if (!preg_match('/^(https{0,1}:\/\/|ftp:\/\/|mailto:)/i',$href)){
$links[] = $href;
}
}
}
return $links;
}
function _toc(&$renderer, $text)
{
$doc = new DOMDocument('1.0','UTF-8');
//dbg($doc);
$meta = '<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head>';
$doc->loadHTML($meta.$text);
if ($nodes = $doc->getElementsByTagName("*")){
foreach($nodes as $node)
{
if (preg_match('/h([1-7])/',$node->tagName,$match))
{
#dbg($node);
$node->setAttribute('class', 'sectionedit'.$match[1]);
$hid = $renderer->_headerToLink($node->nodeValue,'true');
$node->setAttribute('id',$hid);
$renderer->toc_additem($hid, $node->nodeValue, $match[1]);
}
}
}
//remove outer tags of content
$html = $doc->saveHTML();
$html = str_replace('<!DOCTYPE html>','',$html);
$html = preg_replace('/.+<body>/', '', $html);
$html = preg_replace('@</body>.*</html>@','', $html);
return $html;
}
}