refactor: templates I guess?

This commit is contained in:
Daylin Morgan 2023-09-20 15:40:35 -05:00
parent 16356ad51f
commit 190cf82e6e
Signed by: daylin
GPG key ID: C1E52E7DD81DF79F

View file

@ -17,7 +17,7 @@ type
proc len(span: BbSpan): int = span.slice[1] - span.slice[0] proc len(span: BbSpan): int = span.slice[1] - span.slice[0]
proc endSpan(bbs: var BbString) = template endSpan(bbs: var BbString) =
if bbs.spans.len == 0: return if bbs.spans.len == 0: return
if bbs.plain.len >= 1: if bbs.plain.len >= 1:
bbs.spans[^1].slice[1] = bbs.plain.len-1 bbs.spans[^1].slice[1] = bbs.plain.len-1
@ -27,28 +27,28 @@ proc endSpan(bbs: var BbString) =
proc newSpan(bbs: var BbString, styles: seq[string] = @[]) = proc newSpan(bbs: var BbString, styles: seq[string] = @[]) =
bbs.spans.add BbSpan(styles: styles, slice: [bbs.plain.len, 0]) bbs.spans.add BbSpan(styles: styles, slice: [bbs.plain.len, 0])
proc resetSpan(bbs: var BbString) = template resetSpan(bbs: var BbString) =
bbs.endSpan bbs.endSpan
bbs.newSpan bbs.newSpan
proc closeLastStyle(bbs: var BbString) = template closeLastStyle(bbs: var BbString) =
bbs.endSpan bbs.endSpan
let newStyle = bbs.spans[^1].styles[0..^2] # drop the latest style let newStyle = bbs.spans[^1].styles[0..^2] # drop the latest style
bbs.newSpan newStyle bbs.newSpan newStyle
proc addToSpan(bbs: var BbString, pattern: string) = template addToSpan(bbs: var BbString, pattern: string) =
let currStyl = bbs.spans[^1].styles let currStyl = bbs.spans[^1].styles
bbs.endSpan bbs.endSpan
bbs.newSpan currStyl & @[pattern] bbs.newSpan currStyl & @[pattern]
proc closeStyle(bbs: var BbString, pattern: string) = template closeStyle(bbs: var BbString, pattern: string) =
let style = pattern[1..^1].strip() let style = pattern[1..^1].strip()
if style in bbs.spans[^1].styles: if style in bbs.spans[^1].styles:
bbs.endSpan bbs.endSpan
let newStyle = bbs.spans[^1].styles.filterIt(it != style) # use sets instead let newStyle = bbs.spans[^1].styles.filterIt(it != style) # use sets instead
bbs.newSpan newStyle bbs.newSpan newStyle
proc closeFinalSpan(bbs: var BbString) = template closeFinalSpan(bbs: var BbString) =
if bbs.spans.len >= 1 and bbs.spans[^1].slice[1] == 0: if bbs.spans.len >= 1 and bbs.spans[^1].slice[1] == 0:
bbs.endSpan bbs.endSpan