<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://the.satanic.wiki/index.php?action=history&amp;feed=atom&amp;title=Module%3AHotlinkVignette</id>
	<title>Module:HotlinkVignette - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://the.satanic.wiki/index.php?action=history&amp;feed=atom&amp;title=Module%3AHotlinkVignette"/>
	<link rel="alternate" type="text/html" href="https://the.satanic.wiki/index.php?title=Module:HotlinkVignette&amp;action=history"/>
	<updated>2026-04-20T01:26:03Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://the.satanic.wiki/index.php?title=Module:HotlinkVignette&amp;diff=11073&amp;oldid=prev</id>
		<title>WikiGOD at 05:55, 2 May 2021</title>
		<link rel="alternate" type="text/html" href="https://the.satanic.wiki/index.php?title=Module:HotlinkVignette&amp;diff=11073&amp;oldid=prev"/>
		<updated>2021-05-02T05:55:33Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 05:55, 2 May 2021&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l2&quot;&gt;Line 2:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 2:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;local p = {}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;local p = {}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;local getArgs = require(&quot;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Dev&lt;/del&gt;:Arguments&quot;)[&quot;getArgs&quot;]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;local getArgs = require(&quot;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Module&lt;/ins&gt;:Arguments&quot;)[&quot;getArgs&quot;]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;local hash = require(&quot;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Dev&lt;/del&gt;:Hash&quot;)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;local hash = require(&quot;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Module&lt;/ins&gt;:Hash&quot;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;-- &amp;quot;switch statement&amp;quot; for path based on crop position&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;-- &amp;quot;switch statement&amp;quot; for path based on crop position&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key zzegtzyr_mw19226-mwjf_:diff:1.41:old-10916:rev-11073:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>WikiGOD</name></author>
	</entry>
	<entry>
		<id>https://the.satanic.wiki/index.php?title=Module:HotlinkVignette&amp;diff=10916&amp;oldid=prev</id>
		<title>WikiGOD: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="https://the.satanic.wiki/index.php?title=Module:HotlinkVignette&amp;diff=10916&amp;oldid=prev"/>
		<updated>2021-04-30T02:23:56Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 02:23, 30 April 2021&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key zzegtzyr_mw19226-mwjf_:diff:1.41:old-10915:rev-10916 --&gt;
&lt;/table&gt;</summary>
		<author><name>WikiGOD</name></author>
	</entry>
	<entry>
		<id>https://the.satanic.wiki/index.php?title=Module:HotlinkVignette&amp;diff=10915&amp;oldid=prev</id>
		<title>Mediawiki&gt;ExE Boss: The `vignette` subdomain of `wikia.nocookie.net` is deprecated in favour of `static.wikia.nocookie.net`</title>
		<link rel="alternate" type="text/html" href="https://the.satanic.wiki/index.php?title=Module:HotlinkVignette&amp;diff=10915&amp;oldid=prev"/>
		<updated>2021-04-25T22:42:17Z</updated>

		<summary type="html">&lt;p&gt;The `vignette` subdomain of `wikia.nocookie.net` is deprecated in favour of `static.wikia.nocookie.net`&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- &amp;lt;nowiki&amp;gt;&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local getArgs = require(&amp;quot;Dev:Arguments&amp;quot;)[&amp;quot;getArgs&amp;quot;]&lt;br /&gt;
local hash = require(&amp;quot;Dev:Hash&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;switch statement&amp;quot; for path based on crop position&lt;br /&gt;
&lt;br /&gt;
local positions = {&lt;br /&gt;
    top = function (args)&lt;br /&gt;
            if not args[&amp;quot;width&amp;quot;] or not args[&amp;quot;height&amp;quot;] then&lt;br /&gt;
                return nil&lt;br /&gt;
            end&lt;br /&gt;
            local result = &amp;quot;/top-crop&amp;quot;&lt;br /&gt;
            if not args[&amp;quot;upscale&amp;quot;] then&lt;br /&gt;
                result = result .. &amp;quot;-down&amp;quot;&lt;br /&gt;
            end&lt;br /&gt;
            result = result .. &amp;quot;/width/&amp;quot; .. args[&amp;quot;width&amp;quot;] .. &amp;quot;/height/&amp;quot; ..&lt;br /&gt;
                args[&amp;quot;height&amp;quot;]&lt;br /&gt;
            return result&lt;br /&gt;
        end,&lt;br /&gt;
    center = function (args)&lt;br /&gt;
            if not args[&amp;quot;width&amp;quot;] or not args[&amp;quot;height&amp;quot;] then&lt;br /&gt;
                return nil&lt;br /&gt;
            end&lt;br /&gt;
            local result = &amp;quot;/zoom-crop&amp;quot;&lt;br /&gt;
            if not args[&amp;quot;upscale&amp;quot;] then&lt;br /&gt;
                result = result .. &amp;quot;-down&amp;quot;&lt;br /&gt;
            end&lt;br /&gt;
            result = result .. &amp;quot;/width/&amp;quot; .. args[&amp;quot;width&amp;quot;] .. &amp;quot;/height/&amp;quot; ..&lt;br /&gt;
                args[&amp;quot;height&amp;quot;]&lt;br /&gt;
            return result&lt;br /&gt;
        end,&lt;br /&gt;
    custom = function (args)&lt;br /&gt;
            if not args[&amp;quot;width&amp;quot;] or not args[&amp;quot;window width&amp;quot;] or&lt;br /&gt;
                not args[&amp;quot;window height&amp;quot;] then&lt;br /&gt;
                return nil&lt;br /&gt;
            end&lt;br /&gt;
            local result = &amp;quot;/window-crop&amp;quot;&lt;br /&gt;
            if args[&amp;quot;fixed&amp;quot;] and args[&amp;quot;height&amp;quot;] then&lt;br /&gt;
                result = result .. &amp;quot;-fixed/width/&amp;quot; .. args[&amp;quot;width&amp;quot;] ..&lt;br /&gt;
                    &amp;quot;/height/&amp;quot; .. args[&amp;quot;height&amp;quot;]&lt;br /&gt;
            else&lt;br /&gt;
                result = result .. &amp;quot;/width/&amp;quot; .. args[&amp;quot;width&amp;quot;]&lt;br /&gt;
            end&lt;br /&gt;
            result = result .. &amp;quot;/x-offset/&amp;quot; .. (args[&amp;quot;x offset&amp;quot;] or 0) ..&lt;br /&gt;
                &amp;quot;/y-offset/&amp;quot; .. (args[&amp;quot;y offset&amp;quot;] or 0) .. &amp;quot;/window-width/&amp;quot; ..&lt;br /&gt;
                args[&amp;quot;window width&amp;quot;] .. &amp;quot;/window-height/&amp;quot; ..&lt;br /&gt;
                args[&amp;quot;window height&amp;quot;]&lt;br /&gt;
            return result&lt;br /&gt;
        end&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;switch statement&amp;quot; for path based on mode&lt;br /&gt;
&lt;br /&gt;
local modes = {&lt;br /&gt;
    set = function (args)&lt;br /&gt;
            if not args[&amp;quot;width&amp;quot;] or not args[&amp;quot;height&amp;quot;] then&lt;br /&gt;
                return nil&lt;br /&gt;
            end&lt;br /&gt;
            local result = &amp;quot;/fixed-aspect-ratio&amp;quot;&lt;br /&gt;
            if not args[&amp;quot;upscale&amp;quot;] then&lt;br /&gt;
                result = result .. &amp;quot;-down&amp;quot;&lt;br /&gt;
            end&lt;br /&gt;
            result = result .. &amp;quot;/width/&amp;quot; .. args[&amp;quot;width&amp;quot;] .. &amp;quot;/height/&amp;quot; ..&lt;br /&gt;
                args[&amp;quot;height&amp;quot;]&lt;br /&gt;
            return result&lt;br /&gt;
        end,&lt;br /&gt;
    width = function (args)&lt;br /&gt;
            if not args[&amp;quot;width&amp;quot;] then&lt;br /&gt;
                return nil&lt;br /&gt;
            end&lt;br /&gt;
            local result = &amp;quot;/scale-to-width&amp;quot;&lt;br /&gt;
            if not args[&amp;quot;upscale&amp;quot;] then&lt;br /&gt;
                result = result .. &amp;quot;-down&amp;quot;&lt;br /&gt;
            end&lt;br /&gt;
            result = result .. &amp;quot;/&amp;quot; .. args[&amp;quot;width&amp;quot;]&lt;br /&gt;
            return result&lt;br /&gt;
        end,&lt;br /&gt;
    height = function (args)&lt;br /&gt;
            if not args[&amp;quot;height&amp;quot;] then&lt;br /&gt;
                return nil&lt;br /&gt;
            end&lt;br /&gt;
            return &amp;quot;/scale-to-height-down/&amp;quot; .. args[&amp;quot;height&amp;quot;]&lt;br /&gt;
        end,&lt;br /&gt;
    max = function (args)&lt;br /&gt;
            if not args[&amp;quot;width&amp;quot;] or not args[&amp;quot;height&amp;quot;] then&lt;br /&gt;
                return nil&lt;br /&gt;
            end&lt;br /&gt;
            local result = &amp;quot;/thumbnail&amp;quot;&lt;br /&gt;
            if not args[&amp;quot;upscale&amp;quot;] then&lt;br /&gt;
                result = result .. &amp;quot;-down&amp;quot;&lt;br /&gt;
            end&lt;br /&gt;
            result = result .. &amp;quot;/width/&amp;quot; .. args[&amp;quot;width&amp;quot;] .. &amp;quot;/height/&amp;quot; ..&lt;br /&gt;
                args[&amp;quot;height&amp;quot;]&lt;br /&gt;
            return result&lt;br /&gt;
        end,&lt;br /&gt;
    crop = function (args)&lt;br /&gt;
            return args[&amp;quot;position&amp;quot;] and&lt;br /&gt;
                type(positions[args[&amp;quot;position&amp;quot;]]) == &amp;quot;function&amp;quot; and&lt;br /&gt;
                positions[args[&amp;quot;position&amp;quot;]](args) or nil&lt;br /&gt;
        end&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
    &lt;br /&gt;
-- attempt to determine if provided with valid frame object&lt;br /&gt;
    &lt;br /&gt;
    local no_frame = not (type(frame.preprocess) == &amp;quot;function&amp;quot;)&lt;br /&gt;
    &lt;br /&gt;
--[[&lt;br /&gt;
- retrieve arguments&lt;br /&gt;
- if no valid frame object, assume table of arguments&lt;br /&gt;
--]]&lt;br /&gt;
    &lt;br /&gt;
    local raw_args, args&lt;br /&gt;
    if no_frame then&lt;br /&gt;
        raw_args = frame&lt;br /&gt;
        args = mw.clone(frame)&lt;br /&gt;
        for k, v in pairs(args) do&lt;br /&gt;
            if type(v) == &amp;quot;string&amp;quot; then&lt;br /&gt;
                v = v:match(&amp;quot;^%s*(.-)%s*$&amp;quot;)&lt;br /&gt;
                if v == &amp;quot;&amp;quot; then&lt;br /&gt;
                    v = nil&lt;br /&gt;
                end&lt;br /&gt;
                args[k] = v&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
        raw_args = getArgs(frame, {trim = false, removeBlanks = false})&lt;br /&gt;
        args = getArgs(frame)&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    local image = args[&amp;quot;image&amp;quot;]&lt;br /&gt;
    &lt;br /&gt;
-- output error message if no image was specified&lt;br /&gt;
    &lt;br /&gt;
    if not image then&lt;br /&gt;
        return raw_args[&amp;quot;error&amp;quot;] or (&amp;quot;&amp;lt;strong class=\&amp;quot;error\&amp;quot;&amp;gt;Template error:&amp;quot; ..&lt;br /&gt;
            &amp;quot; An image has not been specified.&amp;lt;/strong&amp;gt;&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
-- determine langauge and domain for image URL&lt;br /&gt;
    &lt;br /&gt;
    local language = args[&amp;quot;language&amp;quot;] or&lt;br /&gt;
        mw.language.getContentLanguage():getCode()&lt;br /&gt;
    if language == &amp;quot;en&amp;quot; then&lt;br /&gt;
        language = nil&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    local domain = args[&amp;quot;domain&amp;quot;] or&lt;br /&gt;
        mw.site.server:match(&amp;quot;^.*/(.*)%.fandom%.com.*$&amp;quot;) or&lt;br /&gt;
        mw.site.server:match(&amp;quot;^.*/(.*)%.wikia%.org.*$&amp;quot;)&lt;br /&gt;
    if not args[&amp;quot;keep subdomains&amp;quot;] then&lt;br /&gt;
        domain = domain:match(&amp;quot;^.-%.?([^%.]*)$&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
    if args[&amp;quot;language subdomains&amp;quot;] and language then&lt;br /&gt;
        domain = language .. &amp;quot;.&amp;quot; .. domain&lt;br /&gt;
        language = nil&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
--[[&lt;br /&gt;
- if possible, assume local wiki and use parser function &amp;quot;filepath&amp;quot; to get&lt;br /&gt;
  base image URL&lt;br /&gt;
- else, contruct base image URL from arguments&lt;br /&gt;
- reassign &amp;quot;image&amp;quot; variable because we can&lt;br /&gt;
--]]&lt;br /&gt;
    &lt;br /&gt;
    if not (args[&amp;quot;domain&amp;quot;] or args[&amp;quot;language&amp;quot;]) and not no_frame then&lt;br /&gt;
        image = frame:preprocess(&amp;quot;{{filepath: &amp;quot; .. image .. &amp;quot;}}&amp;quot;)&lt;br /&gt;
            :match(&amp;quot;^(.*/).-$&amp;quot;)&lt;br /&gt;
    else&lt;br /&gt;
        &lt;br /&gt;
-- determine code for image URL&lt;br /&gt;
        &lt;br /&gt;
        local code = args[&amp;quot;code&amp;quot;]&lt;br /&gt;
        if not code or #code &amp;lt; 2 then&lt;br /&gt;
            code = hash.MD5(image).hexdigest()&lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
-- contruct base image URL from arguments&lt;br /&gt;
        &lt;br /&gt;
        image = &amp;quot;https://static.wikia.nocookie.net/&amp;quot; .. domain ..&lt;br /&gt;
            &amp;quot;/images/&amp;quot; .. mw.ustring.sub(code, 1, 1) .. &amp;quot;/&amp;quot; ..&lt;br /&gt;
            mw.ustring.sub(code, 1, 2) .. &amp;quot;/&amp;quot; .. mw.uri.encode(image, &amp;quot;WIKI&amp;quot;) ..&lt;br /&gt;
            &amp;quot;/revision/&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    image = image .. (args[&amp;quot;replaced&amp;quot;] or &amp;quot;latest&amp;quot;)&lt;br /&gt;
    &lt;br /&gt;
-- create URI object and, if applicable, add language&lt;br /&gt;
    &lt;br /&gt;
    local url = mw.uri.new(image)&lt;br /&gt;
    if language then&lt;br /&gt;
        url:extend({[&amp;quot;path-prefix&amp;quot;] = language})&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    local link = args[&amp;quot;link&amp;quot;]&lt;br /&gt;
    local result = &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
--[[&lt;br /&gt;
- if applicable, construct link open and set as return value&lt;br /&gt;
- if link specified as non-whitespace, use specified target&lt;br /&gt;
--- if internal/interwiki format, retrieve full URL&lt;br /&gt;
- if link not specified, use base image URL&lt;br /&gt;
--]]&lt;br /&gt;
    &lt;br /&gt;
    if link then&lt;br /&gt;
        if link:match(&amp;quot;://&amp;quot;) then&lt;br /&gt;
            result = &amp;quot;[&amp;quot; .. link&lt;br /&gt;
        else&lt;br /&gt;
            result = &amp;quot;&amp;lt;span class=\&amp;quot;plainlinks\&amp;quot;&amp;gt;[&amp;quot; ..&lt;br /&gt;
                tostring(mw.uri.fullUrl(link))&lt;br /&gt;
        end&lt;br /&gt;
    elseif not raw_args[&amp;quot;link&amp;quot;] then&lt;br /&gt;
        result = &amp;quot;&amp;lt;span class=\&amp;quot;plainlinks\&amp;quot;&amp;gt;[&amp;quot; .. tostring(url)&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
-- add to path based on mode and, if applicable, crop position&lt;br /&gt;
    &lt;br /&gt;
    url[&amp;quot;path&amp;quot;] = url[&amp;quot;path&amp;quot;] .. (args[&amp;quot;mode&amp;quot;] and&lt;br /&gt;
        type(modes[args[&amp;quot;mode&amp;quot;]]) == &amp;quot;function&amp;quot; and&lt;br /&gt;
        modes[args[&amp;quot;mode&amp;quot;]](args) or &amp;quot;&amp;quot;)&lt;br /&gt;
    &lt;br /&gt;
-- construct query string&lt;br /&gt;
    &lt;br /&gt;
    if args[&amp;quot;query&amp;quot;] then&lt;br /&gt;
        url:extend(mw.uri.parseQueryString(args[&amp;quot;query&amp;quot;]))&lt;br /&gt;
    end&lt;br /&gt;
    if args[&amp;quot;fill&amp;quot;] then&lt;br /&gt;
        if url[&amp;quot;query&amp;quot;] and url.query.fill then&lt;br /&gt;
            if type(url.query.fill) == &amp;quot;table&amp;quot; then&lt;br /&gt;
                table.insert(url.query.fill, args[&amp;quot;fill&amp;quot;])&lt;br /&gt;
            else&lt;br /&gt;
                url.query.fill = {url.query.fill, args[&amp;quot;fill&amp;quot;]}&lt;br /&gt;
            end&lt;br /&gt;
        else&lt;br /&gt;
            url:extend({fill = args[&amp;quot;fill&amp;quot;]})&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
-- if language is applicable and was overwritten, re-add it to query&lt;br /&gt;
    &lt;br /&gt;
    if language and language ~= url.query[&amp;quot;path-prefix&amp;quot;] then&lt;br /&gt;
        if type(url.query[&amp;quot;path-prefix&amp;quot;]) == &amp;quot;table&amp;quot; then&lt;br /&gt;
            table.insert(url.query[&amp;quot;path-prefix&amp;quot;], language)&lt;br /&gt;
        else&lt;br /&gt;
            url.query[&amp;quot;path-prefix&amp;quot;] = {url.query[&amp;quot;path-prefix&amp;quot;], language}&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
-- concatenate image URL to return value&lt;br /&gt;
    &lt;br /&gt;
    result = result .. &amp;quot; &amp;quot; .. tostring(url)&lt;br /&gt;
    &lt;br /&gt;
-- if applicable, construct link close and concatenate to return value&lt;br /&gt;
    &lt;br /&gt;
    if link then&lt;br /&gt;
        if link:match(&amp;quot;://&amp;quot;) then&lt;br /&gt;
            result = result .. &amp;quot;]&amp;quot;&lt;br /&gt;
        else&lt;br /&gt;
            result = result .. &amp;quot;]&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
        end&lt;br /&gt;
    elseif not raw_args[&amp;quot;link&amp;quot;] then&lt;br /&gt;
        result = result .. &amp;quot;]&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;br /&gt;
-- &amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mediawiki&gt;ExE Boss</name></author>
	</entry>
</feed>