Lua: Difference between revisions
Jump to navigation
Jump to search
No edit summary Tag: 2017 source edit |
No edit summary Tag: 2017 source edit |
||
Line 9: | Line 9: | ||
-- local args = frame:getParent().args | -- local args = frame:getParent().args | ||
-- the VisualData query is called from here | |||
local ret = mw.visualdata.query( 'Book', '[[title::+]]', {'title'}, {} ) | local ret = mw.visualdata.query( 'Book', '[[title::+]]', {'title'}, {} ) | ||
Line 27: | Line 28: | ||
===2) perform the query on a wiki article and then process the result using Lua=== | ===2) perform the query on a wiki article and then process the result using Lua=== | ||
<pre> | |||
{{#visualdataquery_: [[title::+]] | {{#visualdataquery_: [[title::+]] | ||
|schema=Book | |schema=Book | ||
Line 36: | Line 39: | ||
|module=Handle query | |module=Handle query | ||
}} | }} | ||
</pre> | |||
<pre> | <pre> | ||
Line 66: | Line 63: | ||
Template: [[Template:Handle query]] | |||
Module: [[Module:Handle query]] | |||
Revision as of 14:32, 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 }}
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