From dfebce465c2103fd65ea653972b524e7da22f8b4 Mon Sep 17 00:00:00 2001 From: Hayleigh Thompson Date: Tue, 21 Jul 2026 02:54:00 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Introduce=20an=20ascii=20util=20mod?= =?UTF-8?q?ule=20for=20efficient=20string=20splits.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/at/internal/ascii.gleam | 6 ++++++ src/at/internal/ascii_ffi.mjs | 3 +++ 2 files changed, 9 insertions(+) create mode 100644 src/at/internal/ascii.gleam create mode 100644 src/at/internal/ascii_ffi.mjs diff --git a/src/at/internal/ascii.gleam b/src/at/internal/ascii.gleam new file mode 100644 index 0000000..0a17a31 --- /dev/null +++ b/src/at/internal/ascii.gleam @@ -0,0 +1,6 @@ +/// A more-efficient version of `string.slice` that relies on the input string +/// being made up of only ASCII characters. +/// +@external(erlang, "binary", "part") +@external(javascript, "./ascii_ffi.mjs", "slice") +pub fn slice(string: String, at from: Int, length length: Int) -> String diff --git a/src/at/internal/ascii_ffi.mjs b/src/at/internal/ascii_ffi.mjs new file mode 100644 index 0000000..5540875 --- /dev/null +++ b/src/at/internal/ascii_ffi.mjs @@ -0,0 +1,3 @@ +export function slice(string, from, length) { + return string.slice(from, from + length); +} -- 2.51.2