第40行:
第40行:
results[t] = true
results[t] = true
end
end
+
end
+
end
+
return results
+
end
+
+
function p.query_children(name, anchor_property, parent_property)
+
local results = {}
+
local anchor_query = "[["..parent_property.."::"..name.."]]"
+
local property_query = "[[" .. anchor_property .. "::+]]"
+
local content_query = "?"..query_property
+
local query = anchor_query .. property_query .. "|" ..content_query .. "|format=plainlist"
+
local res = mw.smw.getQueryResult(query)
+
for j, r in ipairs(res.results) do
+
for k, t in ipairs(r.printouts[query_property]) do
+
results[t] = true
end
end
end
end
第57行:
第72行:
local name = frame.args.name
local name = frame.args.name
local parents = mw.text.split(frame.args.parents, ",")
local parents = mw.text.split(frame.args.parents, ",")
+
local parent_property = frame.args.parent_property
local parent_title = frame.args.parent_title
local parent_title = frame.args.parent_title
local anchor_property = frame.args.anchor_property
local anchor_property = frame.args.anchor_property
local properties = mw.text.split(frame.args.properties, ",")
local properties = mw.text.split(frame.args.properties, ",")
+
local children_title = frame.args.children_title
local root = mw.html.create("div")
local root = mw.html.create("div")
第65行:
第82行:
_create_list(root, parent_title, parents)
_create_list(root, parent_title, parents)
mw.smw.set({[anchor_property]=name})
mw.smw.set({[anchor_property]=name})
+
for i, parent in ipairs(parents) do
+
mw.smw.set({[parent_property]=parent})
+
end
for i, prop in ipairs(properties) do
for i, prop in ipairs(properties) do
第78行:
第98行:
mw.smw.set({[prop]=k})
mw.smw.set({[prop]=k})
end
end
+
end
+
+
if children_title then
+
local children = p.query_children(name, anchor_property, parent_property)
+
local children_list = _keys_to_table(children)
+
_create_list(root, children_title, children_list)
end
end