{% capture strip_whitespace %} {% include _shower/setup.md %} {% assign items = showerify_input | split:'<h1' %} {% for item in items %}

{% assign subitems = item | split:'</h1>' %}
{% assign subsubitems = subitems[0] %}

{% capture subsubitems2 %}{{ subsubitems }}{% endcapture %}
{% assign subsubitems2 = subsubitems2 | split: '>' %}
{% assign lol = subsubitems2[0] | append:">" %}
{% capture supertitle %}{{ subsubitems | remove_first:lol }}{% endcapture %}

{% endfor %}

{% assign flag = false %} {% for item in items %}

{% capture h1_attrs %}{{ item | split:'>' | first }}{% endcapture %}
{% if flag != false %}
    {% capture showerify_middle %}<section{{ h1_attrs | replace_first:'class="','class="slide ' }}{% unless h1_attrs contains 'class' %} class="slide cover"{% endunless %}><div><h2{% endcapture %}
    {% assign slides = item | remove_first:h1_attrs | replace_first:'</h1>','</h2>' | split: '<h2' %}

    {% assign flag = false %}
    {% for slide in slides %}
        {% capture slide_attrs %}{{ slide | split:'>' | first }}{% endcapture %}

        <!-- Looking for strong in header for shout -->
        {% capture slide_header_content %}^BEGIN^{{ slide | remove_first:slide_attrs | split:'</h2>' | first }}$END${% endcapture %}
        {% assign slide_extra_class = '' %}
        {% if slide_header_content contains '^BEGIN^><strong>' and slide_header_content contains '</strong>$END$' %}
            {% assign slide_extra_class = ' shout' %}
        {% endif %}

        {% if flag == false %}
            {% capture showerify_middle %}{{ showerify_middle }}{{ slide }}{% endcapture %}
            {% assign flag = true %}
        {% else %}
            {% capture showerify_middle %}{{ showerify_middle }}</div></section>

<section class=“slide{{ slide_extra_class }}”{{ slide_attrs }}><div><h2{% endcapture %}

            {% assign newslide = slide | remove_first:slide_attrs %}
            {% if slide_extra_class %}
                {% assign newslide = newslide | replace_first:'><strong>','>' %}
                {% assign newslide = newslide | replace_first:'</strong></h2>','</h2>' %}
            {% endif %}
            {% capture showerify_middle %}{{ showerify_middle }}{{ newslide }}{% endcapture %}
        {% endif %}
    {% endfor %}
    {% capture showerify_middle %}{{ showerify_middle }}</div></section>{% endcapture %}
{% else %}
    {% assign flag = true %}
{% endif %}

{% endfor %} <!– There is a difference between Liquid 1.4.1 and 1.5.0 in replace syntax, and in 1.4.1 you can't chain the one that is only there in 1.5.0, so multiple assigns there –> {% assign showerify_middle = showerify_middle | replace:'class=“slide” class=“','class=”slide ' %} {% assign showerify_middle = showerify_middle | replace:'&lt;/mark&gt;','</mark>' %} {% assign showerify_middle = showerify_middle | replace:'&lt;mark&gt;','<mark>' %} {% assign showerify_middle = showerify_middle | replace:'&lt;mark class=“next”&gt;','<mark class=“next”>' %} {% assign showerify_middle = showerify_middle | replace:'&lt;mark class=“comment”&gt;','<mark class=“comment”>' %} {% assign showerify_middle = showerify_middle | replace:'&lt;mark class=“important”&gt;','<mark class=“important”>' %}

<!– Replacing inline “comment” with <footer> –> {% assign footers = showerify_middle | split:'<p>// ' %} {% assign iteration = 0 %} {% for footer in footers %}

{% if iteration > 0 %}
    {% assign footer_content = footer | split:'</p>' | first %}
    {% capture footer_oldcontent %}<p>// {{ footer_content }}</p>{% endcapture %}
    {% capture footer_newcontent %}<footer>{{ footer_content }}</footer>{% endcapture %}
    {% assign showerify_middle = showerify_middle | replace_first:footer_oldcontent,footer_newcontent %}
{% endif %}
{% assign iteration = iteration | plus:1 %}

{% endfor %}

<!– The same thing, but this time for comment without the space –> {% assign footers = showerify_middle | split:'<p>//' %} {% assign iteration = 0 %} {% for footer in footers %}

{% if iteration > 0 %}
    {% assign footer_content = footer | split:'</p>' | first %}
    {% capture footer_oldcontent %}<p>//{{ footer_content }}</p>{% endcapture %}
    {% capture footer_newcontent %}<footer>{{ footer_content }}</footer>{% endcapture %}
    {% assign showerify_middle = showerify_middle | replace_first:footer_oldcontent,footer_newcontent %}
{% endif %}
{% assign iteration = iteration | plus:1 %}

{% endfor %}

<!– Code with line-numbers –> {% if line_numbers %}

{% assign code_blocks = showerify_middle | split:'<pre><code>' %}
{% assign iteration = 0 %}
{% for code_block in code_blocks %}
    {% if iteration > 0 %}
        {% assign code_block_content = code_block | split:'</code></pre>' | first %}
        {% capture code_block_oldcontent %}<pre><code>{{ code_block_content }}</code></pre>{% endcapture %}
        {% assign code_block_newcontent = code_block_oldcontent | newline_to_br | strip_newlines | replace:'<br />','</code><code>' %}
        {% assign code_block_newcontent = code_block_newcontent | replace:'<code></code></pre>','</pre>' %}
        {% assign code_block_newcontent = code_block_newcontent | replace:'<code></code>','<code> </code>' %}
        {% assign showerify_middle = showerify_middle | replace_first:code_block_oldcontent,code_block_newcontent %}
    {% endif %}
    {% assign iteration = iteration | plus:1 %}
{% endfor %}

{% endif %}

<!– Adding .next to list items –> {% assign showerify_middle = showerify_middle | replace:'>…',' class=“next”>' %} {% assign showerify_middle = showerify_middle | replace:'>&hellip;',' class=“next”>' %} {% assign showerify_middle = showerify_middle | replace:'>…',' class=“next”>' %} {% assign showerify_middle = showerify_middle | replace:' class=“next”> ',' class=“next”>' %} {% assign showerify_middle = showerify_middle | replace:'>...','>…' %} {% assign showerify_middle = showerify_middle | replace:'>&hellip;','>&hellip;' %} {% assign showerify_middle = showerify_middle | replace:'>…','>…' %}

<!– By default all the simple `<th>` are for cols –> {% assign showerify_middle = showerify_middle | replace:'<th>','<th scope=“col”>' %} <!– And all the td starting/ending with asteriks are row ths –> {% assign showerify_middle = showerify_middle | replace:'<td>* ','<th scope=“row”>' %} {% assign showerify_middle = showerify_middle | replace:' *</td>','</th>' %}

<!– Kramdown mailto problem –> {% assign showerify_middle = showerify_middle | replace:'href=“mail:','href=”mailto:' %}

<!– Prototype of #3, need to split things here –> <!– is there a way to declare <hr/> with classes/attributes? –> {% assign showerify_middle = showerify_middle | replace:'<hr />','</div></section><section class=“slide”><div>' %}

{% capture showerify_output %}{{ showerify_middle }}{% endcapture %} {% endcapture %}