アーカイブ - sinonome (1 / 2)

ダウンロード

記事ファイルの記述フォーマットを変更

まず最重要事項として、記事・ウェブページファイルの記述フォーマットを変更しました。以下のようになります。
単純なMarkdown形式になったので、各種テキストエディターの色分け機能やアウトライン機能との親和性向上が望めます。

本文の最高レベルの見出しが##になってしまったのは残念ですが、上記の恩恵を考えるとまあいいかなという気がしています。

<!--
TAG: このファイルの投稿に適用するタグ名
-->

# 休日が終わった
<!--
DATE: 2022-06-19
OUTPUTPATH: holiday-end
-->

## いいいいいいいい

本文本文本文本文本文本文本文本文
本文本文本文本文本文本文本文本文

# 休日が始まった
<!--
DATE: 2022-06-18
OUTPUTPATH: holiday-start
-->

## ああああああああ

本文本文本文本文本文本文本文本文
本文本文本文本文本文本文本文本文

..

変更内容

記事ファイル・ウェブページファイルのフォーマット変更
  • 上述の通り、フォーマットを変更
  • メタ情報で指定していたセパレータ変更機能(SEP・SECTIONSEP)を廃止
  • ファイルや各記事等のメタ情報を(必要なければ)入力不要とした
  • {entrybody}等のモディファイアheadinglevelの挙動を変更
    旧)「#」を何タグで出力するかを決める
    新)「##」を何タグで出力するかを決める
    (一番上のレベルのタグからheading1~のクラスが付与されるのは変更なし)
  • 同梱サンプルテーマを新フォーマットで書き直し
機能・タグ・モディファイア等の追加
  • 下書き機能の実装(タイトルの前に(draft)と書くだけ)
  • {tagid}追加(タグのタグID(英数字の方)を出力)
  • グローバルモディファイアstrform追加(出力内容がある場合、書式化して出力)
  • {entries}タグにtagモディファイアを追加(指定したタグを設定した投稿のみ表示できます)
  • {if}タグのモディファイアにneを追加(一致しない場合に真、いわゆる!=
  • アーカイブマッピング用のタグに以下を追加
    <entrydateyear> DATEの年部分
    <entrydatemonth> DATEの月部分
    <entrytag> TAGで最初に指定したタグのタグID
各種変更・修正
  • YAYA 5.69.7.0 → 5.71.2.0
  • モディファイアheadinglevelを指定可能なタグについて、指定していないのに指定されているものとして処理していたのを修正
  • 基本設定remove_blankline, 1で、preタグ内でも改行を削除してしまっていたのを修正
  • {entryfield}の出力がコロン記号まで含んでいたのを修正
  • {pageid}タグを削除(OUTPUTPATHの値等で代用してください)
  • sino.exeをリビルド(少しサイズが小さくなりました 150KB→90KB)
preview 7 の記事ファイルの扱いの変更に関連する項目
  • アーカイブのループの際、entryarchive のコンテキストで{archivetitle}タグは何も返さないように変更(ファイル別アーカイブがなくなったため)
  • {datafiletitle}タグを廃止し、ウェブページ専用の{pagefiletitle}タグを追加した
  • 以下のモディファイア、および値を廃止した
    {entries}file
    {entryprev}`{entrynext}scopeの値のうちfile`
  • 記事ファイル処理時に出力していたファイル「-sortbydate.md」を生成されないようにした
  • ログ取得時、Markdown変換用SAORIのI/Oが大量に記録されてしまうため、リクエスト直前とレスポンス直後にiologのon/offを切り替えるようにした(YAYAのSETSETTING()関数を使用)
  • コア sino.dll を 「文」から「YAYA」に変更(絵文字(😀など)が出力可能になっています)
  • タグアーカイブでページネーションを実装
  • {entrynext} {entryprev}scope モディファイアの値に tag を追加(タグを複数設定している場合は、一番最初に指定したタグが対象となります)
  • 各タグにおける相対パスの出力処理がおかしかったのを修正
  • ファイル分割によるカテゴリー分け機能を廃止(カテゴライズは「タグ」機能のみに変更)
  • その他の内部的変更

ダウンロード

ファイル記事分割についての仕様変更

今までは、ファイルを分割することで「カテゴリー」として扱っていました。
しかし preview 7以降は、デフォルトでは記事ファイルの分割は特に意味を持ちません。
記事のカテゴライズは、「タグ」のみで行うことになります。

なお、ファイルのヘッダーに以下の行を記述することで、そのファイル内の投稿全てにタグを付与することができます。

TAG: 日常

ファイルのヘッダーにこう書くことで、ファイル内の投稿に全て日常タグが付与されます。

文からYAYAへの変更に際して

前述の通り、YAYAに変更したきっかけは「文では絵文字を扱うのが困難だったから」です。
しかし、絵文字は数値文字参照にすればいい(🌻なら&#x1f33b;)だけであり、そんなに大きい問題ではありません。

文には大変思い入れがあります。しかしその思い入れを優先するために、今後制限事項が徐々に増えていったり、クオリティ低下に直結する作業量の増大が発生するのは作り手にとっても受け手にとっても望ましくはない、という判断に至りました。

なぜ文に思い入れがあるのかというと、私にとって大事な存在だからです。理由は二つ。
一つは、空想を形にするという、人生で一番楽しいことを実現してくれるから。
もう一つは、私に現実に生きるためのプログラミングの力をくれたからです。

文と出会ったのは高校の頃で、それ以前からもJavaScriptなどでコードを書くことはしていましたが、文は当時の私にとってはとても本格的なプログラミング言語でした。C言語のように複雑なことができるのに、規模が抑えられておりシンプルで、プログラミング初学者だった私にとっては大変扱いやすい言語でした。

ライブラリとしての構造もまたシンプルで、読み込む側のアプリケーションを作ることも、読み込む拡張モジュールを作ることも、特別に難しくはありません。このことは、私がコンパイル型というタイプの異なる言語を(断続的ではありますが)学び続けるきっかけになってくれました。

これ以上個人的事情を書くのはやめておこうと思いますが(書きたくなったら外部のブログ等に書くことにします)、つまるところ、文と出会えたおかげで、今の私があります。

文作者のumeiciさんに、心から感謝申し上げます。
伺かゴーストの方は文の使用を継続しますので、そういう意味でも、これからもお世話になります。

また、文を互換性の高いかたちで発展させてくれている、YAYA開発チームの皆様にも感謝申し上げます。

  • {else}節にさらに{else}がある場合、正常に動作していなかったのを修正
  • preview 4でモディファイアの値に変数が使用可能になったため、{if}タグのモディファイアeqvarを廃止
  • DATE:に年月日を入力しており時刻だけ入力していない場合、時刻を00時00分00秒と見なすよう変更(今までは現在の時刻が使用されていた)
  • {pagedate} {entrydate}の仕様があやふやだったので明確化してタグリファレンスに記載

ダウンロード

{if}eqに限らず)モディファイアの値の頭に$を付けると変数名と見なされ、その変数の値が参照されます。
つまり、eqvarを使っていた場合は、以下のように書き直してください。

(旧)
{if name="変数名1" eqvar="変数名2"}
(新)
{if name="変数名1" eq="$変数名2"}
  • テンプレートタグ {relpath}{root} に変更
  • 複数プロファイルに対応した(ディレクトリ構成の変更あり)
  • sino.exe パラメータの取り扱いに関する改良

ダウンロード

テンプレートタグ {root}

ルートを示す相対パスを表示する {relpath} は、{root}タグに名称を変更しました。
将来的に、設定により相対パス・絶対URL・ルート相対パスを選択できようになる予定です。

複数プロファイルへの対応

複数のウェブサイトを扱えるようになりました。(複数のサイトを管理できるという意味です。複数ユーザーで使うのに適した構造にしたわけではありません)

ディレクトリ構造の変更

今までは以下の構造になっていました。

\sources
    \各ファイル

新しい構造は以下のようになります。

\profiles
    \default
        \各ファイル
    \myblog
        \各ファイル
    \私のブログ
        \各ファイル
    ..

新しいディレクトリ構成では、profiles\ 直下にプロファイルディレクトリを作成します。プロファイルディレクトリ以下のファイル構成は、以前の sources\ の中身と同じです。

なお、プロファイルディレクトリ名には日本語が使えますが、Shift_JISの範囲となります。
(参考)シフトJIS漢字コード表 http://www.tohoho-web.com/ex/draft/code.htm
特殊な記号の付いたアルファベット(áなど)や絵文字は使えません。

今バージョンからは、サイトファイルの出力用ディレクトリはプロファイルディレクトリの中に自動生成されます。

profile.txt の準備

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

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

//default
myblog

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

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

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

パラメータによる指定(仮対応)

パラメータで指定することもできます。「-profile ディレクトリ名」と指定してください。
無効なディレクトリ名が指定されていた場合は、sinonome は何も処理せずそのまま終了します。

  • モディファイアの値に変数を指定できるようにした(値の頭に「$」を付けると変数と見なされます)
  • 本文のHTML変換を外部ライブラリに切り替え(Markdownへの変換をDLLで実装)

ダウンロード

HTML変換ライブラリの変更について

使用されるフォーマットは、Markdownの中でも特に「CommonMark」というものになります。
参考: https://qiita.com/Prof-Cheese/items/9629438b06aacc068c98

この変更により、記法の大幅な追加や各種問題の解消が行われましたが、以下のような点で非互換も発生しています。

  • リストの「-」記号の直後には必ずスペースを開ける必要がある
  • 改行は<br>に変換されない 等

詳しくはマニュアルのページをご覧ください。

本当は文字列処理DLLのポテンシャルを最大限に活かすという意味でも全てAYAでやりたかったのですが、まずは基本的な機能の実装にリソースを集中するための判断となります。

仕様が固まるまでの間、このレベルの変更は今後もありえますので、どうぞご了承ください。