Module:CommonFunctions: Difference between revisions

From Elwiki
No edit summary
No edit summary
Line 38: Line 38:


-- Implement splitting string to a table.
-- Implement splitting string to a table.
function split(pString, pPattern)
function split(s, delimiter)
  if pPattern == nil then pPattern = "," end
    if delimiter == nil then delimiter = ',' end
  local Table = {}
    result = {};
  local fpat = "(.-)" .. pPattern
    for match in (s..delimiter):gmatch("(.-)"..delimiter) do
  local last_end = 1
        table.insert(result, match);
  local s, e, cap = pString:find(fpat, 1)
    end
  while s do
    return result;
      if s ~= 1 or cap ~= "" then
    table.insert(Table,cap)
      end
      last_end = e+1
      s, e, cap = pString:find(fpat, last_end)
  end
  if last_end <= #pString then
      cap = trim(pString:sub(last_end))
      table.insert(Table, trim(cap))
  end
  return Table
end
end

Revision as of 19:32, 7 April 2022

Documentation for this module may be created at Module:CommonFunctions/doc

-- String starts
function string.starts(String, Start)
    return string.sub(String, 1, string.len(Start)) == Start
end

-- Implement sorted loop through array.
function spairs(t)
    local keys = {}
    for k in pairs(t) do keys[#keys+1] = k end
    table.sort(keys)
    local i = 0
    return function()
        i = i + 1
        if keys[i] then
            return keys[i], t[keys[i]]
        end
    end
end

-- Implement merging tables
function tableMerge(first_table, second_table)
    for k,v in spairs(second_table) do first_table[k] = v end
end

-- Implement rounding.
function round(num, numDecimalPlaces)
    if numDecimalPlaces == nil then
        numDecimalPlaces = 2
    end
    local mult = 10^(numDecimalPlaces or 0)
    return math.floor(num * mult + 0.5) / mult
end

-- Implement string trim.
function trim(s)
  return (string.gsub(s, "^%s*(.-)%s*$", "%1"))
end

-- Implement splitting string to a table.
function split(s, delimiter)
    if delimiter == nil then delimiter = ',' end
    result = {};
    for match in (s..delimiter):gmatch("(.-)"..delimiter) do
        table.insert(result, match);
    end
    return result;
end