class

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

Instance methods

build(incoming : Incoming, settings : Config::Resolved) : Message
Source