PostHTML

PostHTML

[5] PostHTML · GitHub, https://github.com/posthtml

[1] GitHub - posthtml/posthtml: PostHTML is a tool to transform HTML/XML with JS plugins, https://github.com/posthtml/posthtml

[2] posthtml - HTML/XML processor, https://posthtml.org/#/

[3] >>1

transform HTML/XML with JS plugins

だと意味がよくわかりませんが、要は「入力の HTMLもどき」を 「PostHTML プラグイン」の組み合わせを通して 「出力の HTML」 を得るようなソフトウェアらしいです。

[4] なぜか「入力の HTMLもどき」があたかも HTML であるかのように説明され、あたかも HTML であるかのように利用者は理解しているようですが、 プラグイン専用の独自の要素属性が大量にあったり、 場合によっては class 属性値として出力されるものを要素名に使ったりできます (プラグインとその呼び出し設定次第)。

[16] 基本はサーバー側で実行される前提に見える。「入力の HTMLもどき」はクライアントには送られないのが基本、 のように見えるがどうだろう。

[6] PostCSS とは兄弟プロジェクトなのかな

[7] GitHub - posthtml/posthtml-content: Apply functions to tags through custom attributes, https://github.com/posthtml/posthtml-content

[8] GitHub - posthtml/posthtml-shiki: Highlight code blocks with PostHTML and Shiki, https://github.com/posthtml/posthtml-shiki

<shiki>
  <h1 class="text-xl">Hello</h1>
</shiki>

[10] GitHub - posthtml/posthtml-import: Import HTML Plugin, https://github.com/posthtml/posthtml-import

<import src="file.html">

[15] GitHub - posthtml/posthtml-include: Include HTML Plugin, https://github.com/posthtml/posthtml-include

    <include src="components/button.html" locals='{
        "text": "Button"
    }'></include>

[14] GitHub - posthtml/posthtml-expressions: Use variables, JS-like expressions, and even markup-powered logic in your HTML., https://github.com/posthtml/posthtml-expressions

<if condition="foo === 'bar'">
  <p>Foo really is bar! Revolutionary!</p>
</if>

<elseif condition="foo === 'wow'">
  <p>Foo is wow, oh man.</p>
</elseif>

<else>
  <p>Foo is probably just foo in the end.</p>
</else>
<when condition="foo === 'bar'">
  <p>Foo really is bar! Revolutionary!</p>
</when>

<elsewhen condition="foo === 'wow'">
  <p>Foo is wow, oh man.</p>
</elsewhen>

<otherwise>
  <p>Foo is probably just foo in the end.</p>
</otherwise>
<switch expression="foo">
  <case n="'bar'">
    <p>Foo really is bar! Revolutionary!</p>
  </case>
  <case n="'wow'">
    <p>Foo is wow, oh man.</p>
  </case>
  <default>
    <p>Foo is probably just foo in the end.</p>
  </default>
</switch>
<clause expression="foo">
  <when n="'bar'">
    <p>Foo really is bar! Revolutionary!</p>
  </when>
  <when n="'wow'">
    <p>Foo is wow, oh man.</p>
  </when>
  <fallback>
    <p>Foo is probably just foo in the end.</p>
  </fallback>
</clause>
<each loop="item, index in array">
  <p>{{ index }}: {{ item }}</p>
</each>

You can define custom tag names to use for creating loops:

<for loop="item in [1,2,3]">
  <p>{{ item }}</p>
</for>
<scope with="author">
  <include src="components/profile.html"></include>
</scope>

You can define a custom tag name to use for creating scopes:

<context with="author">
  <include src="components/profile.html"></include>
</context>
<raw>
  <if condition="foo === 'bar'">
    <p>Output {{ foo }} as-is</p>
  </if>
</raw>

You can customize the name of the tag:

<verbatim>
  <if condition="foo === 'bar'">
    <p>Output {{ foo }} as-is</p>
  </if>
</verbatim>

[9] SugarML

[11] Home | Maizzle - Framework for Rapid Email Prototyping, https://v3.maizzle.com/

Bring Your Own HTML

No need to learn custom syntax or adapt your templates to it. Use your existing HTML, it'll just work.

Supercharged by PostHTML

PostHTML gives your HTML superpowers, enabling you to write complex logic with simple, text editor-friendly markup.

<extends src="src/layouts/main.html">
  <block name="template">
    <table class="w-600 sm:w-full">
      <tr>
        <td class="text-base text-gray-700">
          <h2>Article title</h2>
          <p>Lorem ipsum dolor sit amet</p>
        </td>
      </tr>
    </table>
  </block>
</extends>

[12] いや custom syntax だろw

[18] GitHub - posthtml/posthtml-custom-elements: Custom Elements Plugin, https://github.com/posthtml/posthtml-custom-elements

[20] GitHub - posthtml/posthtml-components: A PostHTML plugin for creating components with HTML-friendly syntax inspired by Laravel Blade. Slots, stack/push, props, custom tag and much more., https://github.com/posthtml/posthtml-components

This PostHTML plugin provides an HTML-friendly syntax for using components in your HTML templates. If you are familiar with Blade, React, Vue or similar, you will find the syntax to be familiar, as this plugin is inspired by them.

[21] >>20 HTML-friendly syntax は HTML でないと言っているようにも読めるが、その後の方ではやっぱり HTML と言っている。

[13] Templates | Maizzle - Framework for Rapid Email Prototyping, https://v3.maizzle.com/docs/templates/

[60] HTML要素概説
要素名
*
日付
説明
PostHTMLHTML と称するものでは任意の要素名著者が使えるようだ。>>19 POSTHTML
出典
注釈
  • PostHTML プラグインと称する JavaScript コードの組み合わせによって HTML を生成するソフトウェア。 本書では公式に提供されているプラグインも含めて指す。 平成時代末期頃に開発が始まり、令和時代に入った現在も開発が続いている。 入力にはプラグインの動作を指定する独自の要素属性も含まれるが、 単に HTML と呼ばれている。
  • [19] Custom Elements や Web Components に対応すると称するプラグインでは任意の要素名や属性名が使える。 POSTHTML:CE POSTHTML:WC その他のプラグインも独自の要素名や属性名を使っている。 また、設定により要素名や属性名をカスタマイズできるとしている。 本書では公式に提供されているプラグインの要素名と別名としての利用例が明示されている要素名を採録対象とし、 それ以外は対象外とする。
[60] HTML要素概説
要素名
yield
要素名
push
要素名
stack
日付
説明
PostHTMLHTML と称するものにある。
出典
[44] HTML要素概説
要素名
fill:*
要素名
slot:*
日付
説明
PostHTMLHTML と称するものが fill:slot: から始まる任意の要素名を使う。 このままの要素名ではない。
出典
参照
fill:*
参照
slot:*
[45] HTML要素概説
要素名
include
日付
説明
以来、 PostHTMLHTML と称するものにある。
出典
[22] HTML要素概説
要素名
extends
要素名
block
日付
説明
PostHTMLHTML と称するものにある。
出典
[40] HTML要素概説
要素名
if
要素名
elseif
要素名
else
要素名
when
要素名
elsewhen
要素名
otherwise
要素名
switch
要素名
case
要素名
default
要素名
each
要素名
scope
要素名
raw
日付
説明
PostHTMLHTML と称するものにある。
出典
[41] HTML要素概説
要素名
clause
要素名
fallback
要素名
for
要素名
context
要素名
verbatim
日付
説明
PostHTMLHTML と称するものにおける別名例にある。 POSTHTML:EXP
[37] HTML要素概説
要素名
shiki
日付
説明
PostHTMLHTML と称するものにある。
出典
[39] HTML要素概説
要素名
highlight
日付
説明
PostHTMLHTML と称するものにおける shiki の別名例にある。 POSTHTML:SHIKI
[36] HTML要素概説
要素名
markdown
日付
説明
PostHTMLHTML と称するものにある。
出典
[38] HTML要素概説
要素名
md
日付
説明
PostHTMLHTML と称するものにある。 POSTHTML:MD POSTHTML:MARKDOWNIT
[30] HTML要素概説
要素名
spaceless
日付
説明
PostHTMLHTML と称するものにある。 既存の雛形言語複数からの借用である。>>35
出典
注釈
[29] HTML要素概説
要素名
mixin
日付
説明
PostHTMLHTML と称するものにある。
出典
[28] HTML要素概説
要素名
import
日付
説明
PostHTMLHTML と称するものにある。
出典
[26] HTML要素概説
要素名
fetch
日付
説明
PostHTMLHTML と称するものにある。
出典
[27] HTML要素概説
要素名
get
日付
説明
PostHTMLHTML と称するものにおける fetch の別名例にある。 POSTHTML:MSO
[23] HTML要素概説
要素名
outlook
要素名
not-outlook
日付
説明
PostHTMLHTML と称するものにある。
出典
[25] HTML要素概説
要素名
mso
要素名
not-mso
日付
説明
PostHTMLHTML と称するものにおける outlook, not-outlook の別名例に mso, not-mso がある。 POSTHTML:MSO
[24] HTML要素概説
要素名
module
要素名
content
日付
説明
PostHTMLHTML と称するものにある。 同名の他の提案とは異なる。
出典

[31] 関連: unifiedjs