更改

添加680字节 、 2020年12月31日 (四) 19:12
无编辑摘要
第45行: 第45行:  
     end
 
     end
 
     return results
 
     return results
 +
end
 +
 +
function p.query_reversed_inherited_property(name, anchor_property, query_property)
 +
    return p.query_inherited_property(query_property, anchor_property, parent_list, {name})
 
end
 
end
   第57行: 第61行:  
     for k, v in ipairs(list) do
 
     for k, v in ipairs(list) do
 
         ul:tag("li"):wikitext("[["..v.."]]")
 
         ul:tag("li"):wikitext("[["..v.."]]")
 +
    end
 +
end
 +
 +
function _split_or_empty(value)
 +
    if value and #value > 0 then
 +
        return mw.text.split(value, ",")
 +
    else
 +
        return {}
 
     end
 
     end
 
end
 
end
第62行: 第74行:  
function p.inherited_lists(frame)
 
function p.inherited_lists(frame)
 
     local name = frame.args.name
 
     local name = frame.args.name
     local parents = (frame.args.parents and #frame.args.parents > 0) and mw.text.split(frame.args.parents, ",") or {}
+
     local parents = _split_or_empty(frame.args.parents)
 
     local parent_property = frame.args.parent_property
 
     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 reversed_properties = mw.text.split(frame.args.reversed_properties, ",")
 
     local children_title = frame.args.children_title
 
     local children_title = frame.args.children_title
   第79行: 第92行:  
     for i, prop in ipairs(properties) do
 
     for i, prop in ipairs(properties) do
 
         local title = frame.args[prop.."_title"]
 
         local title = frame.args[prop.."_title"]
         local values_str = frame.args[prop.."_values"]
+
         local values = _split_or_empty(frame.args[prop.."_values"])
        local values = (values_str and #values_str > 0) and mw.text.split(values_str, ",") or {}
   
         local values_set = _table_to_keys(values)
 
         local values_set = _table_to_keys(values)
 
         local inherited_values = p.query_inherited_property(anchor_property, prop, parents)
 
         local inherited_values = p.query_inherited_property(anchor_property, prop, parents)
        mw.logObject(inherited_values)
   
         local final_values = _merge_keys(values_set, inherited_values)
 
         local final_values = _merge_keys(values_set, inherited_values)
 +
        local final_list = _keys_to_table(final_values)
 +
        _create_list(root, title, final_list)
 +
        for i, k in ipairs(final_list) do
 +
            mw.smw.set({[prop]=k})
 +
        end
 +
    end
 +
 +
    for i, prop in ipairs(reversed_properties) do
 +
        local title = frame.args[prop.."_reversed"]
 +
        local rev_prop = frame.args[prop.."_property"]
 +
        local final_values = p.query_reversed_inherited_property(name, anchor_property, rev_prop)
 
         local final_list = _keys_to_table(final_values)
 
         local final_list = _keys_to_table(final_values)
 
         _create_list(root, title, final_list)
 
         _create_list(root, title, final_list)