Module:Library of Congress Classification

require('strict')

local p = {}

local getArgs = require('Module:Arguments').getArgs

local class_data = mw.loadData('Module:Library of Congress Classification/data')

function p._classification(args) local class = args['class'] local subclass1 = args['subclass1'] local subclass2 = args['subclass2'] if not class then return class_data['default'] end class = string.lower(class) if not class_data[class] then return class_data['default'] elseif type(class_data[class]) == 'string' then return class_data[class] elseif not subclass1 then return class_data[class]['nosubclass'] or class_data['default'] end subclass1 = string.lower(subclass1) if not class_data[class][subclass1] then subclass1 = 'default' end if not class_data[class][subclass1] then return class_data['default'] elseif type(class_data[class][subclass1]) == 'string' then return class_data[class][subclass1] end if not subclass2 then subclass2 = class_data[class]['subclass2_default'] or 'default' end subclass2 = string.lower(subclass2) return class_data[class][subclass1][subclass2] or class_data[class][subclass1]['default'] or class_data['default'] end

function p.classification(frame) return p._classification(getArgs(frame)) end

return p