Module:EzTumblr
Jump to navigation
Jump to search
Documentation for this module may be created at Module:EzTumblr/doc
local Ez = {} -- Editors: make sure to carefully copy syntax, including the comma at the end of any new entry Ez.tumblrs = { -- WotC staff ["markrosewater"] = { author = "Mark Rosewater", title = "Blogatog" }, ["dougbeyermtg"] = { author = "Doug Beyer", title = "A Voice for Vorthos" }, ["wizardsmagic"] = { author = "Wizards of the Coast", title = "The Official Magic: The Gathering Tumblr" }, -- Other notable MtG tumblrs ["vorthosjay"] = { author = "Jay Annelli", title = "Ask Jay" }, -- Former MtG tumblrs ["tabakrules"] = { author = "Matt Tabak", title = "Snarkham Asylum" }, ["multiverseinreview"] = { author = "Squirle", title = "Multiverse in Review" }, } local ERR_MALFORMED = "Malformed URL" local ERR_UNKNOWN = "Unknown tumblr (use [[Template:TumblrRef]] or add to [[Module:EzTumblr]]?)" local ERR_NOTITLE = "No title in template or URL (missing slug?)" function Ez.getSupportedBlogs() local sorted = {} local out = "" for url, data in pairs(Ez.tumblrs) do table.insert(sorted, url) end table.sort(sorted) for _, url in ipairs(sorted) do out = out .. string.format("* %s.tumblr.com\n", url) end return out end -- Match the bit between the double-slash and the first period in the given URL function Ez.getAuthor(frame) local tumblrAddress = frame.args[1] local subdomain = tumblrAddress:match("^%w+://([^%.]+)") assert(subdomain, ERR_MALFORMED) assert(Ez.tumblrs[subdomain], ERR_UNKNOWN) return Ez.tumblrs[subdomain].author end function Ez.getTitle(frame) local tumblrAddress = frame.args[1] local subdomain = tumblrAddress:match("^%w+://([^%.]+)") assert(subdomain, ERR_MALFORMED) assert(Ez.tumblrs[subdomain], ERR_UNKNOWN) return Ez.tumblrs[subdomain].title end -- Generates a title for the post if not provided and the editor left the human-readable slug on the URL function Ez.createPostTitle(frame) local tumblrAddress = frame.args[1] local slug = tumblrAddress:match("/([%w%-]+)$") assert(slug, ERR_NOTITLE) slug = slug:gsub("^%l", string.upper) slug = slug:gsub("%-", " ") .. "..." return slug end return Ez