--!The Automatic Cross-platform Build Tool -- -- XMake is free software; you can redistribute it and/or modify -- it under the terms of the GNU Lesser General Public License as published by -- the Free Software Foundation; either version 2.1 of the License, or -- (at your option) any later version. -- -- XMake is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU Lesser General Public License for more details. -- -- You should have received a copy of the GNU Lesser General Public License -- along with XMake; -- If not, see http://www.gnu.org/licenses/ -- -- Copyright (C) 2009 - 2015, ruki All rights reserved. -- -- @author ruki -- @file string.lua -- -- define module: string local string = string or {} -- find the last substring with the given pattern function string.find_last(self, pattern, plain) -- find the last substring local curr = 0 repeat local next = self:find(pattern, curr + 1, plain) if next then curr = next end until (not next) -- found? if curr > 0 then return curr end end -- split string with the given pattern function string.split(self, pattern) -- split it local list = {} self:gsub("[^" .. pattern .."]+", function(v) table.insert(list, v) end ) return list end -- trim the spaces function string.trim(self) return (self:gsub("^%s*(.-)%s*$", "%1")) end -- trim the left spaces function string.ltrim(self) return (self:gsub("^%s*", "")) end -- trim the right spaces function string.rtrim(self) local n = #self while n > 0 and s:find("^%s", n) do n = n - 1 end return self:sub(1, n) end -- append a substring with a given separator function string.append(self, substr, separator) -- check assert(self) -- not substr? return self if not substr then return self end -- append it local s = self if #s == 0 then s = substr else s = string.format("%s%s%s", s, separator or "", substr) end -- ok return s end -- return module: string return string