Merge pull request #451 from Xertis/patch-4
Added new extensions for tables and math
This commit is contained in:
commit
f0c7bc6377
@ -52,6 +52,47 @@ table.shuffle(t: table) -> table
|
|||||||
|
|
||||||
Перемешивает значения в таблице.
|
Перемешивает значения в таблице.
|
||||||
|
|
||||||
|
```lua
|
||||||
|
table.merge(t1: table, t2: table) -> table
|
||||||
|
```
|
||||||
|
|
||||||
|
Добавляет в таблицу **t1** значения из таблицы **t2**. Если в таблице **t2** присутствует ключ из **t1**, то значение ключа не будет изменено.
|
||||||
|
|
||||||
|
```lua
|
||||||
|
table.map(t: table, func: function(indx, value) ) -> table
|
||||||
|
```
|
||||||
|
|
||||||
|
Проходится по таблице и применяет ко всем её элементам **func**, которая возвращает новое значение элемента.
|
||||||
|
|
||||||
|
```lua
|
||||||
|
table.filter(t: table, func: function(indx, value) ) -> table
|
||||||
|
```
|
||||||
|
|
||||||
|
Проходится по таблице с помощью **func**, которая возвращает **true** если элемент надо сохранить и **false**, если его надо удалить.
|
||||||
|
|
||||||
|
```lua
|
||||||
|
table.set_default(t: table, key: number | string, default: any) -> any | default
|
||||||
|
```
|
||||||
|
|
||||||
|
Позволяет безопасно получать значение по указанному ключу. Если ключ существует в таблице, метод вернет его значение. Если ключ отсутствует, метод установит его со значением **default** и вернет его.
|
||||||
|
|
||||||
|
```lua
|
||||||
|
table.flat(t: table) -> table
|
||||||
|
```
|
||||||
|
|
||||||
|
Возвращает "плоскую" версию исходной таблицы.
|
||||||
|
|
||||||
|
```lua
|
||||||
|
table.deep_flat(t: table) -> table
|
||||||
|
```
|
||||||
|
|
||||||
|
Возвращает глубокую "плоскую" версию исходной таблицы.
|
||||||
|
|
||||||
|
```lua
|
||||||
|
table.sub(arr: table, start: number | nil, stop: number | nil) -> table
|
||||||
|
```
|
||||||
|
|
||||||
|
Возвращает обрезанную версию таблицы с индекса **start** до индекса **stop** включительно, при этом пары ключ-значение не сохраняются в новой таблице. При значениях **nil** начинает с **1** и заканчивает **#arr** соответственно.
|
||||||
|
|
||||||
```lua
|
```lua
|
||||||
table.tostring(t: table) -> string
|
table.tostring(t: table) -> string
|
||||||
@ -139,6 +180,24 @@ string.escape(str: string) -> string
|
|||||||
|
|
||||||
Экранирует строку. Является псевдонимом `utf8.escape`.
|
Экранирует строку. Является псевдонимом `utf8.escape`.
|
||||||
|
|
||||||
|
```lua
|
||||||
|
string.pad(str: string, size: number, [опционально] char: string) -> string
|
||||||
|
```
|
||||||
|
|
||||||
|
Добавляет **char** слева и справа от строки, пока её размер не будет равен **size**. По стандарту **char** равен символу пробела
|
||||||
|
|
||||||
|
```lua
|
||||||
|
string.left_pad(str: string, size: number, [опционально] char: string) -> string
|
||||||
|
```
|
||||||
|
|
||||||
|
Добавляет **char** слева от строки, пока её размер не будет равен **size**. По стандарту **char** равен символу пробела
|
||||||
|
|
||||||
|
```lua
|
||||||
|
string.right_pad(str: string, size: number, [опционально] char: string) -> string
|
||||||
|
```
|
||||||
|
|
||||||
|
Добавляет **char** справа от строки, пока её размер не будет равен **size**. По стандарту **char** равен символу пробела
|
||||||
|
|
||||||
## Расширения для math
|
## Расширения для math
|
||||||
|
|
||||||
```lua
|
```lua
|
||||||
@ -165,6 +224,12 @@ math.round(num: number, [опционально] places: num) -> number
|
|||||||
|
|
||||||
Возвращает округлённое значение num до указанного количества знаков после запятой places.
|
Возвращает округлённое значение num до указанного количества знаков после запятой places.
|
||||||
|
|
||||||
|
```lua
|
||||||
|
math.sum(x: number, ... | t: table) -> number
|
||||||
|
```
|
||||||
|
|
||||||
|
Возвращает сумму всех принимаемых аргументов. Если в качестве аргумента была передана таблица, метод вернёт сумму всех её элементов.
|
||||||
|
|
||||||
## Дополнительные глобальные функции
|
## Дополнительные глобальные функции
|
||||||
|
|
||||||
В этом же скрипте также определены и другие глобальные функции которые доступны для использования. Ниже их список
|
В этом же скрипте также определены и другие глобальные функции которые доступны для использования. Ниже их список
|
||||||
|
|||||||
@ -64,6 +64,23 @@ function math.round(num, places)
|
|||||||
return math.floor(num * mult + 0.5) / mult
|
return math.floor(num * mult + 0.5) / mult
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function math.sum(...)
|
||||||
|
local numbers = nil
|
||||||
|
local sum = 0
|
||||||
|
|
||||||
|
if type(...) == "table" then
|
||||||
|
numbers = ...
|
||||||
|
else
|
||||||
|
numbers = {...}
|
||||||
|
end
|
||||||
|
|
||||||
|
for _, v in ipairs(numbers) do
|
||||||
|
sum = sum + v
|
||||||
|
end
|
||||||
|
|
||||||
|
return sum
|
||||||
|
end
|
||||||
|
|
||||||
----------------------------------------------
|
----------------------------------------------
|
||||||
|
|
||||||
function table.copy(t)
|
function table.copy(t)
|
||||||
@ -113,6 +130,85 @@ function table.shuffle(t)
|
|||||||
return t
|
return t
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function table.merge(t1, t2)
|
||||||
|
for i, v in pairs(t2) do
|
||||||
|
if type(i) == "number" then
|
||||||
|
t1[#t1 + 1] = v
|
||||||
|
elseif t1[i] == nil then
|
||||||
|
t1[i] = v
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return t1
|
||||||
|
end
|
||||||
|
|
||||||
|
function table.map(t, func)
|
||||||
|
for i, v in pairs(t) do
|
||||||
|
t[i] = func(i, v)
|
||||||
|
end
|
||||||
|
|
||||||
|
return t
|
||||||
|
end
|
||||||
|
|
||||||
|
function table.filter(t, func)
|
||||||
|
for i, v in pairs(t) do
|
||||||
|
if not func(i, v) then
|
||||||
|
t[i] = nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return t
|
||||||
|
end
|
||||||
|
|
||||||
|
function table.set_default(t, key, default)
|
||||||
|
if t[key] == nil then
|
||||||
|
t[key] = default
|
||||||
|
return default
|
||||||
|
end
|
||||||
|
|
||||||
|
return t[key]
|
||||||
|
end
|
||||||
|
|
||||||
|
function table.flat(t)
|
||||||
|
local flat = {}
|
||||||
|
|
||||||
|
for _, v in pairs(t) do
|
||||||
|
if type(v) == "table" then
|
||||||
|
table.merge(flat, v)
|
||||||
|
else
|
||||||
|
table.insert(flat, v)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return flat
|
||||||
|
end
|
||||||
|
|
||||||
|
function table.deep_flat(t)
|
||||||
|
local flat = {}
|
||||||
|
|
||||||
|
for _, v in pairs(t) do
|
||||||
|
if type(v) == "table" then
|
||||||
|
table.merge(flat, table.deep_flat(v))
|
||||||
|
else
|
||||||
|
table.insert(flat, v)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return flat
|
||||||
|
end
|
||||||
|
|
||||||
|
function table.sub(arr, start, stop)
|
||||||
|
local res = {}
|
||||||
|
start = start or 1
|
||||||
|
stop = stop or #arr
|
||||||
|
|
||||||
|
for i = start, stop do
|
||||||
|
table.insert(res, arr[i])
|
||||||
|
end
|
||||||
|
|
||||||
|
return res
|
||||||
|
end
|
||||||
|
|
||||||
----------------------------------------------
|
----------------------------------------------
|
||||||
|
|
||||||
local pattern_escape_replacements = {
|
local pattern_escape_replacements = {
|
||||||
@ -196,6 +292,29 @@ function string.trim_left(s, char)
|
|||||||
return string.match(s, "^" .. char .. "*(.+)$") or s
|
return string.match(s, "^" .. char .. "*(.+)$") or s
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function string.pad(str, size, char)
|
||||||
|
char = char == nil and " " or char
|
||||||
|
|
||||||
|
local padding = math.floor((size - #str) / 2)
|
||||||
|
local extra_padding = (size - #str) % 2
|
||||||
|
|
||||||
|
return string.rep(char, padding) .. str .. string.rep(char, padding + extra_padding)
|
||||||
|
end
|
||||||
|
|
||||||
|
function string.left_pad(str, size, char)
|
||||||
|
char = char == nil and " " or char
|
||||||
|
|
||||||
|
local left_padding = size - #str
|
||||||
|
return string.rep(char, left_padding) .. str
|
||||||
|
end
|
||||||
|
|
||||||
|
function string.right_pad(str, size, char)
|
||||||
|
char = char == nil and " " or char
|
||||||
|
|
||||||
|
local right_padding = size - #str
|
||||||
|
return str .. string.rep(char, right_padding)
|
||||||
|
end
|
||||||
|
|
||||||
string.lower = utf8.lower
|
string.lower = utf8.lower
|
||||||
string.upper = utf8.upper
|
string.upper = utf8.upper
|
||||||
string.escape = utf8.escape
|
string.escape = utf8.escape
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user