def css.nth.formula

gralha-css-style@0.1.0.1 · css.bend:144

import gralha-css-style@0.1.0.1/css.bend as Css
import Base
import gralha-text-scan@0.1.0.1/scan.bend as U

144def css.nth.formula(scan: U.Scan, +index: U32) -> Bool:
145  U.Scan{h, t} = scan
146  +head = h
147  +tail = t
148  +a = U.choose(F32, U.string.equal(head, "") || U.string.equal(head, "+"), 1.0, U.choose(F32, U.string.equal(head, "-"), F32.neg(1.0), U.scalar(head, 0.0)))
149  +b = U.scalar(U.drop(tail, "n"), 0.0)
150  +difference = (U32.to_f32(index) - b : F32)
151  +n = (difference / a : F32)
152  U.branch(Bool, U.string.equal(tail, ""), _ => F32.is_eq(U32.to_f32(index), U.scalar(head, F32.neg(1.0))),
153    _ => U.choose(Bool, F32.is_eq(a, 0.0), F32.is_eq(difference, 0.0), F32.is_ge(n, 0.0) && F32.is_eq(n, F32.floor(n))))

Uses (18)

Used by (1)