Layout primitives (org/layout-primitives.org, ~290 lines): - CLOS layout-node class wrapping YGNodeRef with tg:finalize for GC cleanup - 12 setter functions with keyword→integer enum translation - layout-calculate: runs Yoga layout, returns root - 14 tests: dimension, direction, flex-grow, align, justify, padding, margin, absolute position, wrap, gap, nested layout Composable API (org/layout-composable.org, ~200 lines): - vbox/hbox macros: declarative container creation with style props - overlay macro: absolute-positioned child over relative base - spacer function: flex-grow filler - make-props-list helper: extracts plist minus :children - 6 tests: vbox stacking, hbox layout, spacer flex, overlay position, align/justify via vbox, padding offset GREEN: 29/29 pass (59 assertions) - yoga-ffi: 9 tests (22 assertions) - layout-primitives: 14 tests (24 assertions) - layout-composable: 6 tests (13 assertions)
12 lines
351 B
Common Lisp
12 lines
351 B
Common Lisp
(defsystem :cl-tui
|
|
:name "cl-tui"
|
|
:author "memex"
|
|
:version "0.1.0"
|
|
:license "AGPLv3"
|
|
:description "Reusable Common Lisp Terminal UI Framework"
|
|
:depends-on (:cffi :croatoan :trivial-garbage)
|
|
:serial t
|
|
:components ((:file "lisp/yoga-ffi")
|
|
(:file "lisp/layout-primitives")
|
|
(:file "lisp/layout-composable")))
|