/usr/share/lua/5.1/lyaml/functional.lua is in lua-yaml 6.1-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | -- Minimal functional programming utilities.
-- Written by Gary V. Vaughan, 2015
--
-- Copyright (C) 2015-2016 Gary V. Vaughan
--
-- Permission is hereby granted, free of charge, to any person obtaining
-- a copy of this software and associated documentation files (the
-- "Software"), to deal in the Software without restriction, including
-- without limitation the rights to use, copy, modify, merge, publish,
-- distribute, sublicense, and/or sell copies of the Software, and to
-- permit persons to whom the Software is furnished to do so, subject to
-- the following conditions:
--
-- The above copyright notice and this permission notice shall be
-- included in all copies or substantial portions of the Software.
--
-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-- CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-- TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-- SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--- @module lyaml.functional
--- `lyaml.null` value.
-- @table NULL
local NULL = setmetatable ({}, { _type = "LYAML null" })
--- `lyaml.null` predicate.
-- @param x operand
-- @treturn bool `true` if *x* is `lyaml.null`.
local function isnull (x)
return (getmetatable (x) or {})._type == "LYAML null"
end
--- Callable predicate.
-- @param x operand
-- @treturn bool `true` if *x* is a function has a __call metamethod
-- @usage r = iscallable (x) and x (...)
local function iscallable (x)
if type (x) ~= "function" then
x = (getmetatable (x) or {}).__call
end
if type (x) == "function" then return x end
end
--- Compose a function to try each callable with supplied args.
-- @tparam table fns list of functions to try
-- @treturn function a new function to call *...* functions, stopping
-- and returning the first non-nil result, if any
local function anyof (fns)
return function (...)
for _, fn in ipairs (fns) do
if iscallable (fn) then
local r = fn (...)
if r ~= nil then return r end
end
end
end
end
--- Return arguments unchanged.
-- @param ... arguments
-- @return *...*
local function id (...)
return ...
end
--- @export
return {
NULL = NULL,
anyof = anyof,
id = id,
iscallable = iscallable,
isnull = isnull,
}
|