While here correctly link libucl to libm and register the dependency on libm for static building
4.0 KiB
Module ucl
This lua module allows to parse objects from strings and to store data into
ucl objects. It uses libucl
C library to parse and manipulate with ucl objects.
Example:
local ucl = require("ucl")
local parser = ucl.parser()
local res,err = parser:parse_string('{key=value}')
if not res then
print('parser error: ' .. err)
else
local obj = parser:get_object()
local got = ucl.to_format(obj, 'json')
endif
local table = {
str = 'value',
num = 100500,
null = ucl.null,
func = function ()
return 'huh'
end
print(ucl.to_format(table, 'ucl'))
-- Output:
--[[
num = 100500;
str = "value";
null = null;
func = "huh";
--]]
###Brief content:
Functions:
Methods:
Functions
The module ucl
defines the following functions.
Function ucl_object_push_lua(L, obj, allow_array)
This is a C
function to push UCL
object as lua variable. This function
converts obj
to lua representation using the following conversions:
- scalar values are directly presented by lua objects
- userdata values are converted to lua function objects using
LUA_REGISTRYINDEX
, this can be used to pass functions from lua to c and vice-versa - arrays are converted to lua tables with numeric indicies suitable for
ipairs
iterations - objects are converted to lua tables with string indicies
Parameters:
L {lua_State}
: lua state pointerobj {ucl_object_t}
: object to pushallow_array {bool}
: expand implicit arrays (should be true for all but partial arrays)
Returns:
{int}
:1
if an object is pushed to lua
Back to module description.
Function ucl.to_format(var, format)
Converts lua variable var
to the specified format
. Formats supported are:
json
- fine printed jsonjson-compact
- compacted jsonconfig
- fine printed configurationucl
- same asconfig
yaml
- embedded yaml
If var
contains function, they are called during output formatting and if
they return string value, then this value is used for ouptut.
Parameters:
var {variant}
: any sort of lua variable (if userdata then metafield__to_ucl
is searched for output)format {string}
: any available format
Returns:
{string}
: string representation ofvar
in the specificformat
.
Example:
local table = {
str = 'value',
num = 100500,
null = ucl.null,
func = function ()
return 'huh'
end
print(ucl.to_format(table, 'ucl'))
-- Output:
--[[
num = 100500;
str = "value";
null = null;
func = "huh";
--]]
Back to module description.
Methods
The module ucl
defines the following methods.
Method parser:parse_file(name)
Parse UCL object from file.
Parameters:
name {string}
: filename to parse
Returns:
{bool[, string]}
: if res istrue
then file has been parsed successfully, otherwise an error string is also returned
Example:
local parser = ucl.parser()
local res,err = parser:parse_file('/some/file.conf')
if not res then
print('parser error: ' .. err)
else
-- Do something with object
end
Back to module description.
Method parser:parse_string(input)
Parse UCL object from file.
Parameters:
input {string}
: string to parse
Returns:
{bool[, string]}
: if res istrue
then file has been parsed successfully, otherwise an error string is also returned
Back to module description.
Method parser:get_object()
Get top object from parser and export it to lua representation.
Parameters:
nothing
Returns:
{variant or nil}
: ucl object as lua native variable
Back to module description.
Back to top.