experimental: renderer
All checks were successful
NeoVim tests / plenary-tests (push) Successful in 9s
All checks were successful
NeoVim tests / plenary-tests (push) Successful in 9s
This commit is contained in:
29
lua/u/utils/string.lua
Normal file
29
lua/u/utils/string.lua
Normal file
@@ -0,0 +1,29 @@
|
||||
local M = {}
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
--- eat_while
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
--- @param s string
|
||||
--- @param pos number
|
||||
--- @param predicate fun(c: string, i: number, s: string): boolean
|
||||
function M.eat_while(s, pos, predicate)
|
||||
local eaten = ''
|
||||
local curr = pos
|
||||
local watchdog = 0
|
||||
while curr <= #s do
|
||||
watchdog = watchdog + 1
|
||||
if watchdog > #s then error 'infinite loop' end
|
||||
|
||||
local c = s:sub(curr, curr)
|
||||
if not predicate(c, curr, s) then break end
|
||||
eaten = eaten .. c
|
||||
curr = curr + 1
|
||||
end
|
||||
return eaten, curr
|
||||
end
|
||||
|
||||
--- @param c string
|
||||
function M.is_whitespace(c) return c == ' ' or c == '\t' or c == '\n' end
|
||||
|
||||
return M
|
||||
Reference in New Issue
Block a user