※開発者向けリソースは別ページに移動しました

メタ情報

各投稿、及び投稿ファイルに記述するメタ情報の一覧です。

メタ情報は、一番最初に記述されているものが使われます。
(例外として、「複数行記述可能」としているものについては全て処理します)

投稿(記事・ウェブページ)のメタ情報

<!--
DATE: 2022-03-03
OUTPUTPATH: 2022-hinamatsuri
TAG: 行事,家族
SKIPGENERATE
-->
名称 概要 フォーマット 未入力時のデフォルト値 備考
DATE 投稿日 年4桁-月2桁-日2桁
年4桁-月2桁-日2桁 時2桁:分2桁:秒2桁
sinonome 処理時の年月日と時分秒 左記以外のフォーマットは未入力扱い
OUTPUTPATH 投稿名 ファイル名に使用可能な半角英数字記号 数値(自動割り振り) URLの一部(特にファイル名)になる
TAG ※記事のみ タグ タグ名(カンマで列挙)
SKIPGENERATE ページとして出力しない なし 値は不要
補足

SKIPGENERATEを記述すると、pagetitlepagebodyなどのタグで内容を呼び出すことはできますが、ファイルとして出力はされません。

たとえばテンプレート内に以下のように記述すると、ウェブページファイル osirase.md に記述した内容を表示させることができ、かつ osirase.md はウェブページとしては出力されません。

{pages file="osirase"}
    <h2>おしらせ</h2>
    {pagebody}
{/pages}

ファイルのメタ情報

<!--
TITLE: このサイトについて
OUTPUTPATH: about-this-site
DELIM: →
RE_DEFINE: 📅 (\d{4}\-\d{2}-\d{2})→DATE: $1
-->
名称 概要 フォーマット 未入力時のデフォルト値 備考
TITLE ※ウェブページファイルのみ ファイルのタイトル テンプレートタグから呼び出される
OUTPUTPATH ※ウェブページファイルのみ 出力パスに使用される文字列 半角英数字記号
DEFINE / REPLACE
RE_DEFINE / RE_REPLACE
文字列置換 カンマ区切り
(またはDELIMで指定した記号)
複数行記述可能
DELIM 区切り文字変更 , 書いた行の下から有効
補足(DEFINE/RE_DEFINE/REPLACE/RE_REPLACE)

DEFINE RE_DEFINE REPLACE RE_REPLACEについて説明します。

DEFINE

DEFINEは、投稿ファイルがsinonomeのフォーマットにしたがってパースされる前に置換処理を行います。

パースされる前の置換なので、sinonomeの記法をハックできます。
たとえば各投稿のメタ情報は通常、HTMLのコメントアウトの中に記述するので、Markdownビューアーでは見えません。
これをMarkdownビューアーで見えるようにするために、コードブロックにしてみます。

<!--
DEFINE: ~~~~~~~~ meta,<!(hyphen)-,~~~~~~~~,-(hyphen)>
DEFINE: <!(hyphen)//,<!-,(hyphen)>,->
-->

上記の通り、「置換前,置換後」で記述します。
「置換1前,置換1後,置換2前,置換2後,..」と続けて書くこともできます。
また、2行以上書くことができ、その場合は上から処理されます。

これで、各投稿のメタ情報を、以下のように書くことができるようになります。

~~~~~~~~ meta
DATE: 2022-06-22
~~~~~~~~
REPLACE

REPLACEは、投稿ファイルがパースされた後、各投稿の本文に対して置換処理を行います。

<!--
DELIM: →
REPLACE: ,→,
-->

全角カンマを半角カンマに変換します。
カンマはデフォルトでは置換文字列に含むことができないので、DELIMで区切り文字を変更しています。

RE_DEFINE / RE_REPLACE

RE_DEFINE RE_REPLACE はRE_のついていないものと処理タイミングは同じですが、正規表現が使えます。
perl風のメタ文字が使用可能なので、たとえば以下のようなことができます。

<!--
RE_REPLACE: <a(\s+.*?href="http.+?\")>(.*?)<\/a>,<a$1 data-type="external">🔗$2</a>
-->

aタグのhrefが「http」で始まる場合、テキストの前にリンクの絵文字が付きます。

補足2(define_replace.txt)

全ての投稿ファイルに同じDEFINE等を適用したい場合に、全てのファイルに書くのは手間です。
そのような場合には、プロファイルディレクトリに define_replace.txt を作成して、内容を記述してください。

ただし、ファイルに書いたものと、define_replace.txtに書いたものとでは、処理タイミングが異なります
これを把握していないと、意図しない置換動作になる可能性があります。
おかしいなと思ったら、以下を確認してみてください。

  1. 投稿ファイルが読み込まれる
  2. define_replace.txtの DEFINE RE_DEFINE
  3. ファイルの DEFINE RE_DEFINE
  4. ファイルがパースされ、各投稿に分解される
  5. 各投稿に対して、ファイルの REPLACE RE_REPLACE
  6. テンプレートタグが処理され、htmlファイルに書き込まれる内容が準備される
  7. htmlファイルに書き込まれる内容に対して、define_replace.txtの REPLACE RE_REPLACE

特に注意すべきなのは、上記の5.と7.の間に、テンプレート処理が入ることです。
テンプレート処理が終わってからREPLACEしたい場合は、define_replace.txtに書く必要があります。 もっとシンプルにいえば、テンプレートタグによる出力内容を置換したい場合は、define_replace.txtに書く必要があります。

たとえばあるテーマで、{entrydate}タグで2022年06月01日と出力されたとします。
普通「06月」「01日」という表現はしないので、REPLACEで0を取り除こうと思います。
このとき、REPLACEはファイルのメタ情報とdefine_replace.txt、どちらに書くべきでしょうか?

REPLACE: 年0,年,月0,月

{entrydate}はテンプレートタグなので、6.で日付が出力されます。
よって、ファイルのメタ情報(5.)に書いても処理ができません。
define_replace.txt(7.)に書くことで、意図通りに処理されます。

複数プロファイル

sinonome は複数プロファイルに対応しています。
これにより、簡易的に複数の別のウェブサイトを生成することができます。

使用するプロファイルを指定するには、インストールディレクトリに profile.txt を設置します。
そこにプロファイルのディレクトリ名を記入してください。

// コメントアウトが使えます。
// いちいちディレクトリ名を入力するのは不便なので、コメントアウトの付け外しで運用できます

//default
myblog

1行目から調べて、最初に発見したディレクトリ名が採用されます。
存在しないディレクトリ名は採用されず、無視されます。

// myblog の方が先に書いてありますので、myblog が使用されます。
myblog
default

profile.txt が存在しない場合や、有効な記述がなかった場合は「default」を指定したと見なされます。

プロファイルの指定は、起動パラメーターでも可能です。
profile.txt と起動パラメーターの両方で指定した場合は、起動パラメーターが優先されます。

起動パラメーター

sino.exeに以下の引数を渡して起動すると、動作を変更することができます。
複数渡すことができます。

パラメーター 概要
-nat アーカイブテンプレートの処理を省略します。
(アーカイブテンプレートファイル自体の読み込みは行われます)
-nit インデックステンプレートの処理を省略します。
(インデックステンプレートファイル自体の読み込みは行われます)
-nfc ・テーマの \resources ディレクトリ
・プロファイルディレクトリの \files ディレクトリ
上記を出力ディレクトリへコピーする動作を省略します。
-profile ディレクトリ名 プロファイルのディレクトリ名を指定します。無効なディレクトリ名の場合は処理を行いません。