Module: VivlioStarter::CLI::PreProcessCommands::ShowcaseSvgBuilder

Defined in:
lib/vivlio_starter/cli/pre_process/showcase_svg_builder.rb

Overview

showcase 記法のパースと合成 SVG 生成(純関数)

Defined Under Namespace

Classes: Annotation, ImageLine, ShowcaseBlock

Constant Summary collapse

NUM =

--- 行パターン(§7.2) --- 数値トークン: パーミル(無単位)or 元画像の実ピクセル(px 接尾辞)

/-?\d+(?:\.\d+)?(?:px)?/
IMAGE_LINE =
/^!\[([^\]]*)\]\(([^)]+)\)(?:\{([^}]*)\})?\s*$/
RECT_LINE =
/^rect(?::(\d+))?\s+(#{NUM})\s*,\s*(#{NUM})\s*,\s*(#{NUM})\s*,\s*(#{NUM})(?:\s+\{([^}]*)\})?(?:\s+(.*))?$/
POINTER_LINE =
/^pointer(?::(\d+))?\s+(#{NUM})\s*,\s*(#{NUM})(?:\s+\{([^}]*)\})?(?:\s+(.*))?$/
COMMENT_LINE =
/^#/
OPTION_TOKEN =

… オプション。値の空白は二重引用符で保護する(border="3 dashed blue")。

/([\w-]+)=(?:"([^"]*)"|(\S+))/
BADGE_RADIUS =

--- 視覚定数(§7.7・初期値は §5.5。すべて「正規化単位」で描画時に u 倍する) ---

26
BADGE_FONT_SIZE =

rect バッジ(丸数字)の半径

28
BADGE_STROKE_WIDTH =

rect バッジの番号

2.5
BADGE_FILL =

rect バッジの外枠

'white'
BADGE_STROKE_COLOR =
'#333333'
BADGE_TEXT_COLOR =

白丸に濃色文字

'#222222'
RECT_BORDER =
'3 solid #ff3b30'
RECT_BACKGROUND =
'transparent'
RECT_CORNER_RADIUS =
2
POINTER_BODY_HEIGHT =

ホームベース記号の本体高さ

72
POINTER_FONT_SIZE =

pointer ラベル

30
POINTER_BACKGROUND =
'#ff3b30'
POINTER_TEXT_COLOR =
'white'
POINTER_BADGE_RADIUS =

本体内の白抜き小バッジ

20
POINTER_BADGE_FONT_SIZE =
24
POINTER_BADGE_STROKE =
2
POINTER_CONTENT_GAP =

小バッジとラベルの間隔

8
POINTER_BODY_PADDING =

本体の左右余白

24
POINTER_MIN_BODY_RATIO =

本体長の下限(本体高さ比)

1.2
DASH_PATTERNS =

線種 → stroke-dasharray(値は正規化単位)

{ 'dashed' => [8, 5], 'dotted' => [2, 4] }.freeze
POINTER_ROTATIONS =

▶ の向き → 基準形(右向き)からの回転角。SVG の rotate は時計回り。

{ 'right' => 0, 'down' => 90, 'left' => 180, 'up' => 270 }.freeze
BASELINE_SHIFT =

のベースライン補正(dominant-baseline はレンダラ間で挙動差があるため使わない)

0.34
LABEL_FONT_FAMILY =

ラベルに使うフォントのファミリ名。SVG 内で完結させるため実フォント名は使わない。

'vs-showcase-label'

Class Method Summary collapse