>Yandere-sliver |
|
Line 1: |
Line 1: |
| 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" },
| |
| ["tabakrules"] = { author = "Matt Tabak", title = "Snarkham Asylum" },
| |
| ["wizardsmagic"] = { author = "Wizards of the Coast", title = "The Official Magic: The Gathering Tumblr" },
| |
|
| |
| -- Other notable MtG tumblrs
| |
| ["vorthosjay"] = { author = "Jay Annelli", title = "Archive Trap Mini" },
| |
| ["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
| |