Notify::TemplateMessageBuilder
Inherits Notify::MessageBuilder < Reference < Object
Incoming と解決済みルールから Message を組み立てる共通の整形(仕様書 4.3 節 手順 3 から手順 7)。
テンプレートの展開、本文の切り詰め、表示時間、高さ、アイコンの解決は どのソースから来た通知でも同じである。ソース側の MessageBuilder はこれを継承し、 source_id を返すだけでよい。ソースに固有の整形が要るときは、そのソースの側で上書きする。
notify に置いてはいるが、整形の知識を中立の usecase へ集めたわけではない。 RelayUsecase が見るのは MessageBuilder の抽象だけであり、ここを使うかどうかは各ソースが決める。
Constants
BUILTIN_ICONS = ["default", "warning", "error"] of ::String
XSOverlay が組み込みアイコンとして解釈する名前。 他のシンクを追加するときは、各アダプタがこの名前を自分の同等物へ対応づける。
HEIGHT_MAX = 250.0
HEIGHT_MIN = 120.0
本文がある通知の高さの下限と上限。
HEIGHT_PER_CHAR = 0.65
本文 1 文字あたりに加算する高さ。HEIGHT_MIN から 200 文字で HEIGHT_MAX に達する係数である。
HEIGHT_WITHOUT_BODY = 100.0
本文が無い通知の高さ。
PLACEHOLDER = /\{(?:app_name|app_id|title|body)\}/
title テンプレートで置換するプレースホルダ。
SOURCE_APP = "KxNotifyUtils"
Constructors
new(icons : IconRepository)
Source