模块:SMWUtils:修订间差异
无编辑摘要 |
无编辑摘要 |
||
| (未显示同一用户的4个中间版本) | |||
| 第28行: | 第28行: | ||
if r.printouts[prop] then | if r.printouts[prop] then | ||
for k, t in ipairs(r.printouts[prop]) do | for k, t in ipairs(r.printouts[prop]) do | ||
table.insert(p_values, t.fulltext) | table.insert(p_values, t.fulltext or t) | ||
end | end | ||
end | end | ||
| 第36行: | 第36行: | ||
end | end | ||
return ret | return ret | ||
end | |||
local QueryBuilder = {content = ""} | |||
function QueryBuilder:new() | |||
local n = {} | |||
setmetatable(n, QueryBuilder) | |||
self.__index = self | |||
return n | |||
end | |||
function QueryBuilder:cat(v) | |||
local n = self:new() | |||
n.content = self.content .. v | |||
return n | |||
end | |||
function QueryBuilder:bracket(t) | |||
return self:cat('[['..t..']] ') | |||
end | |||
function QueryBuilder:or_() | |||
return self:cat(' OR ') | |||
end | |||
function QueryBuilder:done() | |||
return self.content | |||
end | |||
function QueryBuilder:page(name) | |||
return self:bracket(name) | |||
end | |||
function QueryBuilder:category(name) | |||
return self:bracket("Category:"..name) | |||
end | |||
function QueryBuilder:exists(prop) | |||
return self:bracket(prop..'::+') | |||
end | |||
function QueryBuilder:property(prop, value) | |||
return self:bracket(prop..'::'..value) | |||
end | |||
function QueryBuilder:get_pages() | |||
return p.query_pages(self:done()) | |||
end | |||
function QueryBuilder:get_properties(properties) | |||
return p.query_properties(self:done(), properties) | |||
end | |||
p.QueryBuilder = QueryBuilder | |||
function p.query() | |||
return QueryBuilder:new() | |||
end | end | ||
return p | return p | ||