mirror of
https://github.com/1bardesign/batteries.git
synced 2024-11-26 15:44:35 +00:00
Merge PR #17
This commit is contained in:
commit
49505af37e
46
stringx.lua
46
stringx.lua
@ -215,6 +215,39 @@ function stringx.trim(s)
|
|||||||
return s:sub(head, tail)
|
return s:sub(head, tail)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--trim the start of a string
|
||||||
|
function stringx.ltrim(s)
|
||||||
|
local head = 1
|
||||||
|
for i = 1, #s do
|
||||||
|
if not _whitespace_bytes[s:byte(i)] then
|
||||||
|
head = i
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if head == 1 then
|
||||||
|
return s
|
||||||
|
end
|
||||||
|
return s:sub(head)
|
||||||
|
end
|
||||||
|
|
||||||
|
--trim the end of a string
|
||||||
|
function stringx.rtrim(s)
|
||||||
|
local tail = #s
|
||||||
|
|
||||||
|
for i = #s, 1, -1 do
|
||||||
|
if not _whitespace_bytes[s:byte(i)] then
|
||||||
|
tail = i
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if tail == #s then
|
||||||
|
return s
|
||||||
|
end
|
||||||
|
|
||||||
|
return s:sub(1, tail)
|
||||||
|
end
|
||||||
|
|
||||||
function stringx.deindent(s, keep_trailing_empty)
|
function stringx.deindent(s, keep_trailing_empty)
|
||||||
--detect windows or unix newlines
|
--detect windows or unix newlines
|
||||||
local windows_newlines = s:find("\r\n", nil, true)
|
local windows_newlines = s:find("\r\n", nil, true)
|
||||||
@ -291,4 +324,17 @@ function stringx.starts_with(s, prefix)
|
|||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--check if a given string ends with another
|
||||||
|
--(without garbage)
|
||||||
|
function stringx.ends_with(s, suffix)
|
||||||
|
local len = #s
|
||||||
|
local suffix_len = #suffix
|
||||||
|
for i = 0, suffix_len - 1 do
|
||||||
|
if s:byte(len - i) ~= suffix:byte(suffix_len - i) then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
return stringx
|
return stringx
|
||||||
|
Loading…
Reference in New Issue
Block a user