Files
maddy/bench/benchmark_test.md
Petra Baranski 4f977219c3
Some checks failed
run-checks / run-clang-format (push) Has been cancelled
run-tests / test-on-ubuntu (push) Has been cancelled
run-tests / test-on-windows (push) Has been cancelled
run-tests / test-on-osx (push) Has been cancelled
Update dependency versions / update-fetch-content (push) Has been cancelled
Release 1.5.0
* Use the git tag as release name
* Update version to 1.5.0
* stabilize benchmark code
2025-04-21 12:43:45 +02:00

5.4 KiB

Benchmark test file

This file is for the benchmark testing.


This specification defines which markdown syntax can be parsed by maddy. There is no HTML allowed in the markdown syntax - or said otherwise - it might destroy the output, if there was HTML in your markdown.

The Parser expects you to use spaces and not tabs for indentation in the markdown.

If a line starts with < and config->enabledParsers |= maddy::types::HTML_PARSER; is set, it expects that the upcoming line is HTML and therefor will not be surrounded by a paragraph.

Headlines

# h1 heading
## h2 heading
### h3 heading
#### h4 heading
##### h5 heading
###### h6 heading

results in:

<h1>h1 heading</h1>
<h2>h2 heading</h2>
<h3>h3 heading</h3>
<h4>h4 heading</h4>
<h5>h5 heading</h5>
<h6>h6 heading</h6>
[Text of the link](http://example.com)

results in

<a href="http://example.com">Text of the link</a>
[Text of the link](http://example.com "title text")

results in

<a href="http://example.com" title="title text">Text of the link</a>

Lists

unordered

Characters "*", "+" or "-" to make an unordered "bullet" list are equivalent.


- unordered
* list
+ items

results in

<ul>
  <li>unordered</li>
  <li>list</li>
  <li>items</li>
</ul>

* unordered
  * list
  * items
    * in
    + an
  - hierarchy

results in

<ul>
  <li>unordered
    <ul>
      <li>list</li>
      <li>items
        <ul>
          <li>in</li>
          <li>an</li>
        </ul>
      </li>
      <li>hierarchy</li>
    </ul>
  </li>
</ul>

ordered


1. ordered
2. list
3. items

results in


<ol>
  <li>ordered</li>
  <li>list</li>
  <li>items</li>
</ol>


1. ordered
* list
* items

results in


<ol>
  <li>ordered</li>
  <li>list</li>
  <li>items</li>
</ol>


1. ordered
* list
  1. items
  * in
    1. an
  * hierarchy

results in

<ol>
  <li>ordered</li>
  <li>list
    <ol>
      <li>items</li>
      <li>in
        <ol>
          <li>an</li>
        </ol>
      </li>
      <li>hierarchy</li>
    </ol>
  </li>
</ol>

combination


* combination
* of
  1. unordered and
  * ordered
* list

results in

<ul>
  <li>combination</li>
  <li>of
    <ol>
      <li>unordered and</li>
      <li>ordered</li>
    </ol>
  </li>
  <li>list</li>
</ul>

checklist


- [ ] some item
  - [ ] another item
- [x] some checked item

results in

<ul class="checklist">
  <li><label><input type="checkbox"/>some item
    <ul class="checklist">
      <li><label><input type="checkbox"/><span>another item</label></li>
    </ul>
  </label></li>
  <li><label><input type="checkbox" checked="checked"/>some checked item</label></li>
</ul>

might not work in combination with other lists

Code Blocks

```
some code
```

results in

<pre><code>
some code
</code></pre>
```cpp
int a = 42;
```

results in

<pre class="cpp"><code>
int a = 42;
</code></pre>

Inline code

some text `some inline code` some other text

results in

some text <code>some inline code</code> some other text

quotes

> Some quote

results in

<blockqoute>
  <p>Some quote</p>
</blockquote>

bold

**bold text**
__bold text__

results in

<strong>bold text</strong>
<strong>bold text</strong>

italic

*italic text*

results in

<i>italic text</i>

emphasized

This can be disabled by setting config->enabledParsers &= ~maddy::types::EMPHASIZED_PARSER;.

_emphasized text_

results in

<em>emphasized text</em>

strikethrough

~~striked through text~~

results in

<s>striked through text</s>

horizontal line

---

results in

<hr/>

break line

New\r\nLine

results in

New<br>
Line

Images

![Image alt text](http://example.com/example.png)

results in

<img src="http://example.com/example.png" alt="Image alt text"/>

Tables


|table>
Left header | middle header | last header
- | - | -
cell 1 | cell 2 | cell 3
cell 4 | cell 5 | cell 6
- | - | -
foot a | foot b | foot c
|<table

becomes

<table>
  <thead>
    <tr>
      <th>Left header</th>
      <th>middle header</th>
      <th>last header</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>cell 1</td>
      <td>cell 2</td>
      <td>cell 3</td>
    </tr>
    <tr>
      <td>cell 4</td>
      <td>cell 5</td>
      <td>cell 6</td>
    </tr>
  </tbody>
  <tfoot>
    <tr>
      <td>foot a</td>
      <td>foot b</td>
      <td>foot c</td>
    </tr>
  </tfoot>
</table>

table header and footer are optional

LaTeX(MathJax) block support

To turn on the LaTeX support - which basically is only a MathJax support and makes sure, that formulas aren't internally checked for other parsers - it has to be enabled in config:

std::shared_ptr<maddy::ParserConfig> config = std::make_shared<maddy::ParserConfig>();
config->enabledParsers |= maddy::types::LATEX_BLOCK_PARSER;

std::shared_ptr<maddy::Parser> parser = std::make_shared<maddy::Parser>(config);
std::string htmlOutput = parser->Parse(markdownInput);

After this you can do the following in Markdown:

$$x = {-b \\pm \\sqrt{b^2-4ac} \\over 2a}.$$

Which results in

$$x = {-b \\pm \\sqrt{b^2-4ac} \\over 2a}.$$\n