Lua: Difference between revisions
No edit summary |
No edit summary |
||
| (4 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
Template: [[Template:Test Lua]] | There are 2 ways to use Lua. | ||
===1) perform the query directly from Lua, as follows:=== | |||
<pre> | |||
local p = {} | |||
function p.main(frame) | |||
-- local args = frame:getParent().args | |||
-- the VisualData query is called from here | |||
local ret = mw.visualdata.query( 'Book', '[[title::+]]', {'title'}, {} ) | |||
return mw.text.jsonEncode(ret) | |||
end | |||
return p | |||
</pre> | |||
Template: [[Template:Test Lua]] | |||
Module: [[Module:TestLua]] | Module: [[Module:TestLua]] | ||
| Line 5: | Line 25: | ||
{{Template:Test_Lua}} | {{Template:Test_Lua}} | ||
===2) perform the query on a wiki article and then process the result using Lua=== | |||
<pre> | |||
{{#visualdataquery: [[title::+]] | |||
|schema=Book | |||
|?cover | |||
|?title | |||
|?authors/name | |||
|?authors/email | |||
|format=lua | |||
|module=Handle query | |||
}} | |||
</pre> | |||
{{#visualdataquery: [[title::+]] | |||
|schema=Book | |||
|?cover | |||
|?title | |||
|?authors/name | |||
|?authors/email | |||
|format=lua | |||
|module=Handle query | |||
}} | |||
<pre> | |||
local p = {} | |||
function p.main(frame) | |||
-- local args = frame:getParent().args | |||
local origArgs = (type(frame.getParent) == "function") and frame:getParent().args or frame | |||
local success, json = pcall(mw.text.jsonDecode, origArgs[0]) | |||
-- do more processing here | |||
local ret = json | |||
return mw.text.jsonEncode(ret) | |||
end | |||
return p | |||
</pre> | |||
Template: [[Template:Handle query]] | |||
Module: [[Module:Handle query]] | |||
Latest revision as of 14:33, 31 August 2025
There are 2 ways to use Lua.
1) perform the query directly from Lua, as follows:
local p = {}
function p.main(frame)
-- local args = frame:getParent().args
-- the VisualData query is called from here
local ret = mw.visualdata.query( 'Book', '[[title::+]]', {'title'}, {} )
return mw.text.jsonEncode(ret)
end
return p
Template: Template:Test Lua
Module: Module:TestLua
[{"pageid":419,"title":"Demo VisualData","data":{"authors":[{"first_name":"Herbert ","last_name":"Wells","name":"Herbert Wells","email":""},{"first_name":"George","last_name":"Wells","name":"George Wells"}],"title":"The first men in the moon","cover":"File:First_Men_in_the_Moon_(1901)_frontispiece.jpg"}},{"pageid":1806,"title":"Test Book","data":{"authors":[{"first_name":"Test","last_name":"Author","name":"Test Author","email":""}],"title":"Test Book","cover":"File:"}}]
2) perform the query on a wiki article and then process the result using Lua
{{#visualdataquery: [[title::+]]
|schema=Book
|?cover
|?title
|?authors/name
|?authors/email
|format=lua
|module=Handle query
}}
[{"categories":[],"pageid":419,"title":"Demo VisualData","data":{"authors":[{"name":"Herbert Wells","email":""},{"name":"George Wells"}],"title":"The first men in the moon","cover":"File:First_Men_in_the_Moon_(1901)_frontispiece.jpg"}},{"categories":[],"pageid":1806,"title":"Test Book","data":{"authors":[{"name":"Test Author","email":""}],"title":"Test Book","cover":"File:"}}]
local p = {}
function p.main(frame)
-- local args = frame:getParent().args
local origArgs = (type(frame.getParent) == "function") and frame:getParent().args or frame
local success, json = pcall(mw.text.jsonDecode, origArgs[0])
-- do more processing here
local ret = json
return mw.text.jsonEncode(ret)
end
return p
Template: Template:Handle query
Module: Module:Handle query
See also
- Demo VisualData 1.0
- New task
- Page upload
- CRUD
- Result formats
- Dependent values
- Geolocation
- Queries
- Query cities (join queries)
- Dynamic catalogue
- Datatable cards
- Calendar
- Carousel
- Nested schemas
- Table mode
- Lua
- Official docs
support & questions: support at topway.it