mirror of
https://github.com/neovim/neovim.git
synced 2025-09-06 19:38:20 +00:00
feat: add vim.str_utf_{start,end} (#16129)
vim.str_utf_{start,end} return the offset from the current position to the start and end of the current utf-character (nearest codepoint) respectively.
This commit is contained in:

committed by
GitHub

parent
97ae0ab4d8
commit
2230b578d1
@@ -179,6 +179,31 @@ describe('lua stdlib', function()
|
||||
end
|
||||
end)
|
||||
|
||||
it("vim.str_utf_start", function()
|
||||
exec_lua([[_G.test_text = "xy åäö ɧ 汉语 ↥ 🤦x🦄 å بِيَّ"]])
|
||||
local expected_positions = {0,0,0,0,-1,0,-1,0,-1,0,0,-1,0,0,-1,-2,0,-1,-2,0,0,-1,-2,0,0,-1,-2,-3,0,0,-1,-2,-3,0,0,0,-1,0,0,-1,0,-1,0,-1,0,-1,0,-1}
|
||||
eq(expected_positions, exec_lua([[
|
||||
local start_codepoint_positions = {}
|
||||
for idx = 1, #_G.test_text do
|
||||
table.insert(start_codepoint_positions, vim.str_utf_start(_G.test_text, idx))
|
||||
end
|
||||
return start_codepoint_positions
|
||||
]]))
|
||||
end)
|
||||
|
||||
it("vim.str_utf_end", function()
|
||||
exec_lua([[_G.test_text = "xy åäö ɧ 汉语 ↥ 🤦x🦄 å بِيَّ"]])
|
||||
local expected_positions = {0,0,0,1,0,1,0,1,0,0,1,0,0,2,1,0,2,1,0,0,2,1,0,0,3,2,1,0,0,3,2,1,0,0,0,1,0,0,1,0,1,0,1,0,1,0,1,0 }
|
||||
eq(expected_positions, exec_lua([[
|
||||
local end_codepoint_positions = {}
|
||||
for idx = 1, #_G.test_text do
|
||||
table.insert(end_codepoint_positions, vim.str_utf_end(_G.test_text, idx))
|
||||
end
|
||||
return end_codepoint_positions
|
||||
]]))
|
||||
end)
|
||||
|
||||
|
||||
it("vim.str_utf_pos", function()
|
||||
exec_lua([[_G.test_text = "xy åäö ɧ 汉语 ↥ 🤦x🦄 å بِيَّ"]])
|
||||
local expected_positions = { 1,2,3,4,6,8,10,11,13,14,17,20,21,24,25,29,30,34,35,36,38,39,41,43,45,47 }
|
||||
|
Reference in New Issue
Block a user