Mô đun:CIA World Factbook
Giao diện
local p = {}local getArgs = require('Module:Arguments').getArgs-- prefix of all World Factbook pageslocal factbookPrefix = 'https://www.cia.gov/the-world-factbook/'-- Format of archive link. Both %d represent the year of the archivelocal archiveFormat = ' [https://www.cia.gov/the-world-factbook/about/archives/download/factbook-%d.zip (Archived %d edition.)]'-- Function to turn a string into a URL fragment appropriate for CIA websitelocal function parseFragment(s) if not s then return '' end s = mw.ustring.lower(s) s = mw.ustring.gsub(s,' ','-') s = mw.ustring.gsub(s,',','') return send-- Function to fill in factbook link:-- Arguments:-- args.country: topic of page (optional)-- args.section: section of page (optional)-- Returns:-- link to World Factbook page about country, with section anchorfunction p._country(args) if not args.country then return factbookPrefix end local result = factbookPrefix..'countries/'..parseFragment(args.country) if args.section then return result..'/#'..parseFragment(args.section) end return resultend-- Function to fill in archive link:-- Arguments:-- args.archive: if non-empty, return nil-- args.year: else if this is non-empty, use it for year-- args.date: else if this is non-empty, parse it for a year-- Returns:-- the link, above, filled in with the year, or nilfunction p._archive(args) if args.archive then return nil end local year = nil if args.year then year = tonumber(args.year) elseif args.date then i, j = mw.ustring.find(args.date,'20%d%d') if i and j then year = tonumber(mw.ustring.sub(args.date,i,j)) end end if not year then return year end if year >= tonumber(os.date('%Y'))-1 then return false end return mw.ustring.format(archiveFormat, year, year)endfunction p.country(frame) local args = getArgs(frame) return p._country(args)endfunction p.archive(frame) local args = getArgs(frame) return p._archive(args) or ''endreturn p