アーカイブ - sinonome (3 / 4)

  • コア sino.dll を 「文」から「YAYA」に変更(絵文字(😀など)が出力可能になっています)
  • タグアーカイブでページネーションを実装
  • {entrynext} {entryprev}scope モディファイアの値に tag を追加(タグを複数設定している場合は、一番最初に指定したタグが対象となります)
  • 各タグにおける相対パスの出力処理がおかしかったのを修正
  • ファイル分割によるカテゴリー分け機能を廃止(カテゴライズは「タグ」機能のみに変更)
  • その他の内部的変更

ダウンロード

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

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

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

TAG: 日常

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

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

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

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

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

文と出会ったのは高校の頃で、それ以前からも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でやりたかったのですが、まずは基本的な機能の実装にリソースを集中するための判断となります。

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

  • HTMLタグを除去するグローバルモディファイア remove_html を追加
  • {pages}{entries}でfileを指定した場合、offsetとlimitが無視されていたのを修正
  • 記号がバックスラッシュで正しくエスケープされない場合があるのを修正
  • 他潜在的バグの修正

ダウンロード