From e603a283fc8e0d2076cbd66daf796fedccada54c Mon Sep 17 00:00:00 2001 From: Jon Pretty Date: Fri, 22 Nov 2024 19:36:57 +0100 Subject: [PATCH] Implement `slices` method --- src/core/gossamer-core.scala | 5 +++++ src/core/soundness+gossamer-core.scala | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/core/gossamer-core.scala b/src/core/gossamer-core.scala index 3ccae05..428c453 100644 --- a/src/core/gossamer-core.scala +++ b/src/core/gossamer-core.scala @@ -140,6 +140,11 @@ extension [TextType: Textual](text: TextType) def upto(ordinal: Ordinal): TextType = text.segment(Prim ~ ordinal) def from(ordinal: Ordinal): TextType = text.segment(ordinal ~ Ult.of(text)) + def slices(size: Int): List[TextType] = + val length = text.length + List.tabulate[TextType]((length - 1)/size + 1): i => + text.segment(Ordinal.zerary(i*size) ~ Ordinal.natural(((i + 1)*size).min(length))) + def skip(count: Int, bidi: Bidi = Ltr): TextType = bidi match case Ltr => text.segment(Ordinal.zerary(count) ~ Ult.of(text)) case Rtl => text.segment(Prim ~ Countback(count).of(text)) diff --git a/src/core/soundness+gossamer-core.scala b/src/core/soundness+gossamer-core.scala index e970ae4..c593578 100644 --- a/src/core/soundness+gossamer-core.scala +++ b/src/core/soundness+gossamer-core.scala @@ -23,7 +23,7 @@ export gossamer.{Bidi, Buffer, Cuttable, Decimalizer, Interpolation, Joinable, N snip, reverse, contains, trim, where, upto, dropWhile, snipWhere, mapChars, count, metrics, pad, center, fit, uncamel, unkebab, unsnake, starts, ends, tr, subscript, superscript, rsub, sub, flatMap, urlEncode, urlDecode, punycode, bytes, - sysBytes, lev, join, add, words, lines, appendln, spaced} + sysBytes, lev, join, add, words, lines, appendln, spaced, slices} package decimalFormatters: export gossamer.decimalFormatters.java