Lua Data Access
This page demonstrates the mw.neowiki Lua API for accessing NeoWiki structured data from templates and modules.
The examples use Module:NeoWikiDemo, a demo module included with NeoWiki.
Reading Property Values
mw.neowiki.getValue() returns a single scalar value. mw.neowiki.getAll() returns all values as a table.
| Property | getValue | getAll |
|---|---|---|
| Founded at | 2005 | 2005 |
| Websites | https://acme.example | https://acme.example |
| Products (relations) | Acme Anvil | Acme Anvil, Acme Rocket, Acme TNT |
Full Subject Data
mw.neowiki.getMainSubject() returns all data for a Subject as a Lua table, enabling templates to render complete data views.
Professional Wiki
| Property | Type | Value(s) |
|---|---|---|
| Websites | url | https://professional.wiki, https://wikibase.consulting |
| Products | relation | NeoWiki, ProWiki |
| Founded at | number | 2019 |
| World domination progress | number | 42 |
| Status | select | o1demo1aaaaaaa1 |
ACME Inc
| Property | Type | Value(s) |
|---|---|---|
| Websites | url | https://acme.example |
| Products | relation | Acme Anvil, Acme Rocket, Acme TNT |
| Is public | boolean | true |
| Offices | relation | ACME Amsterdam HQ, ACME Vienna Office |
| Departments | relation | ACME Engineering, ACME Sales, ACME Operations |
| Headquarters | relation | ACME Amsterdam HQ |
| Status | select | o1demo1aaaaaaa1 |
| World domination progress | number | 42 |
| Founded at | number | 2005 |
Child Subjects
mw.neowiki.getChildSubjects() returns all non-main Subjects on a page.
Child subjects on ACME Inc: No child subjects
Module Source
The demo module uses these mw.neowiki functions:
local nw = require( 'mw.neowiki' )
-- Read a single value (always returns a scalar or nil)
nw.getValue( 'Founded at' ) --> 2005
nw.getValue( 'Products' ) --> "Foo" (first value only)
-- Read all values (always returns a 1-indexed table or nil)
nw.getAll( 'Products' ) --> { "Foo", "Bar", "Baz" }
-- Get full subject data
local s = nw.getMainSubject( 'ACME Inc' )
s.id, s.label, s.schema, s.statements
-- Get child subjects
local children = nw.getChildSubjects( 'ACME Inc' )
See Module:NeoWikiDemo for the full source.