<?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%3AModularCSS</id>
	<title>Module:ModularCSS - 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%3AModularCSS"/>
	<link rel="alternate" type="text/html" href="https://the.satanic.wiki/index.php?title=Module:ModularCSS&amp;action=history"/>
	<updated>2026-04-20T04:33:50Z</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:ModularCSS&amp;diff=10932&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:ModularCSS&amp;diff=10932&amp;oldid=prev"/>
		<updated>2021-04-30T02:23:59Z</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-10931:rev-10932 --&gt;
&lt;/table&gt;</summary>
		<author><name>WikiGOD</name></author>
	</entry>
	<entry>
		<id>https://the.satanic.wiki/index.php?title=Module:ModularCSS&amp;diff=10931&amp;oldid=prev</id>
		<title>Mediawiki&gt;The JoTS at 04:06, 14 December 2017</title>
		<link rel="alternate" type="text/html" href="https://the.satanic.wiki/index.php?title=Module:ModularCSS&amp;diff=10931&amp;oldid=prev"/>
		<updated>2017-12-14T04:06:08Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--| Module:ModularCSS (v1.5.0)&lt;br /&gt;
--  v1.5.0 - Retrieves MediaWiki messages through mw.message&lt;br /&gt;
--by &amp;quot;The JoTS&amp;quot;&lt;br /&gt;
&lt;br /&gt;
--- Lua module that simplifies clutter on wiki&amp;#039;s CSS pages&lt;br /&gt;
--- by dynamically generating modular CSS code.&lt;br /&gt;
&lt;br /&gt;
-- e.g. CSS that changes the link color of every wiki admin&lt;br /&gt;
-- e.g. Infoboxes that change color on a page by page basis&lt;br /&gt;
&lt;br /&gt;
-- &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [==[ Module Start ]==] ------&lt;br /&gt;
local module  = {}&lt;br /&gt;
local imports = {}&lt;br /&gt;
local configs = {}&lt;br /&gt;
&lt;br /&gt;
local localUrl = mw.uri.localUrl&lt;br /&gt;
&lt;br /&gt;
-- Helper functions&lt;br /&gt;
local function parse(pgName)&lt;br /&gt;
    -- Avoid incrementing expensive function count&lt;br /&gt;
    -- if using a special page, return empty table&lt;br /&gt;
    if pgName:sub(1,8):lower() == &amp;quot;special:&amp;quot; then return {} end&lt;br /&gt;
    &lt;br /&gt;
    -- Find cached parsed results and return&lt;br /&gt;
    if configs[pgName] then return configs[pgName] end&lt;br /&gt;
    &lt;br /&gt;
    -- BEGIN PARSING TASK&lt;br /&gt;
    -- Find page and get content&lt;br /&gt;
    local page&lt;br /&gt;
    if pgName:sub(1,10):lower() == &amp;quot;mediawiki:&amp;quot; then&lt;br /&gt;
        page = mw.message.new(pgName:sub(11))&lt;br /&gt;
        assert(page:exists(),&lt;br /&gt;
            &amp;#039;The config page &amp;quot;&amp;#039; .. pgName .. &amp;#039;&amp;quot; does not exist on this wiki.&amp;#039;)&lt;br /&gt;
        &lt;br /&gt;
        page = tostring(page) .. &amp;#039;\n&amp;#039;&lt;br /&gt;
    else&lt;br /&gt;
        page = mw.title.new(pgName)&lt;br /&gt;
        assert(page, &amp;quot;Invalid page title!&amp;quot;)&lt;br /&gt;
        assert(page.exists,&lt;br /&gt;
            &amp;#039;The config page &amp;quot;&amp;#039; .. pgName .. &amp;#039;&amp;quot; does not exist on this wiki.&amp;#039;)&lt;br /&gt;
        &lt;br /&gt;
        page = (page:getContent() or &amp;quot;&amp;quot;) .. &amp;#039;\n&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    -- Flags... and stuff&lt;br /&gt;
    local parsed = {}&lt;br /&gt;
    local parent_obj = parsed&lt;br /&gt;
    local last_index&lt;br /&gt;
    local curr_lvl = 1&lt;br /&gt;
    &lt;br /&gt;
    -- Parse bulleted list&lt;br /&gt;
    for ast,val in page:gmatch(&amp;quot;(\*+)%s*(.-)\n&amp;quot;) do&lt;br /&gt;
        local lvl = #ast&lt;br /&gt;
        local key, true_self = (val:gsub(&amp;quot; &amp;quot;,&amp;quot;_&amp;quot;)), (val:gsub(&amp;quot;_&amp;quot;,&amp;quot; &amp;quot;))&lt;br /&gt;
&lt;br /&gt;
        if lvl &amp;gt; curr_lvl then&lt;br /&gt;
            parent_obj = parent_obj[last_index]&lt;br /&gt;
        elseif lvl &amp;lt; curr_lvl then&lt;br /&gt;
            parent_obj = parent_obj.parent&lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
        assert(not parent_obj[key], &amp;quot;Duplicate value in the same bullet level!&amp;quot;)&lt;br /&gt;
        &lt;br /&gt;
        parent_obj[key] = setmetatable({},{&lt;br /&gt;
            __index = {&lt;br /&gt;
                parent = parent_obj,&lt;br /&gt;
                self = true_self, -- standardized, unadulterated by underscores; human readable ver.&lt;br /&gt;
                &lt;br /&gt;
                getLocalUrl = function(t, raw)&lt;br /&gt;
                    return tostring(localUrl(t.self))&lt;br /&gt;
                        :gsub(&amp;quot;%%&amp;quot;, {[raw and &amp;#039;&amp;#039; or &amp;quot;%&amp;quot;] = &amp;quot;%%&amp;quot;}) -- this is stupid&lt;br /&gt;
                end,&lt;br /&gt;
                    &lt;br /&gt;
                getValue = function(t)&lt;br /&gt;
                    return next(t) and next(t).self&lt;br /&gt;
                end&lt;br /&gt;
            }&lt;br /&gt;
        })&lt;br /&gt;
        &lt;br /&gt;
        last_index = key&lt;br /&gt;
        curr_lvl = lvl&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    -- cache&lt;br /&gt;
    configs[pgName] = parsed;&lt;br /&gt;
    &lt;br /&gt;
    -- return newly parsed results&lt;br /&gt;
    return parsed&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Invoked wikitext functions&lt;br /&gt;
local function _render()&lt;br /&gt;
    assert(#imports &amp;gt; 0, &amp;quot;No ModularCSS modules were imported!&amp;quot;)&lt;br /&gt;
    &lt;br /&gt;
    local renderedCSS = &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    for modNum,cssMod in pairs(imports) do&lt;br /&gt;
        local err_header = &amp;quot;CSS Module #&amp;quot; .. modNum .. &amp;quot;: &amp;quot;&lt;br /&gt;
        &lt;br /&gt;
        -- CSS module format errors&lt;br /&gt;
        assert(cssMod.page and type(cssMod.page) == &amp;quot;string&amp;quot;,&lt;br /&gt;
            err_header .. &amp;#039;&amp;quot;page&amp;quot; string provided in module is invalid.&amp;#039;)&lt;br /&gt;
        assert(cssMod.main and type(cssMod.main) == &amp;quot;function&amp;quot;,&lt;br /&gt;
            err_header .. &amp;#039;&amp;quot;main&amp;quot; function provided in module is invalid.&amp;#039;)&lt;br /&gt;
        &lt;br /&gt;
        local success,css_vars = pcall(parse, cssMod.page)&lt;br /&gt;
        assert(success, err_header .. tostring(css_vars))&lt;br /&gt;
        &lt;br /&gt;
        local success,modCompiledCSS = pcall(cssMod.main, css_vars)&lt;br /&gt;
        renderedCSS = renderedCSS&lt;br /&gt;
            .. assert(&lt;br /&gt;
                assert(success, modCompiledCSS) and modCompiledCSS,&lt;br /&gt;
                &amp;quot;The CSS module did not return a value.&amp;quot;&lt;br /&gt;
            )&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    return renderedCSS&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local render = function(frame)&lt;br /&gt;
    local success,compiled = pcall(_render)&lt;br /&gt;
    if (not success) then return &amp;quot;/*&amp;quot; .. compiled .. &amp;quot;*/&amp;quot; end&lt;br /&gt;
    &lt;br /&gt;
    return frame:preprocess(&amp;#039;/*&amp;lt;syntaxhighlight lang=&amp;quot;css&amp;quot; enclose=&amp;quot;div&amp;quot; &amp;#039;&lt;br /&gt;
        .. &amp;#039;style=&amp;quot;overflow:auto;&amp;quot;&amp;gt;*/&amp;#039;&lt;br /&gt;
        .. compiled&lt;br /&gt;
        .. &amp;#039;/*&amp;lt;/syntaxhighlight&amp;gt;*/&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Meta-module functions&lt;br /&gt;
local function import_wrap(lax)&lt;br /&gt;
    return function(moduleName)&lt;br /&gt;
        assert(type(moduleName) == &amp;quot;string&amp;quot;, &amp;quot;Invalid module request! Not a string.&amp;quot;)&lt;br /&gt;
        local success,reqModule = pcall(require, moduleName)&lt;br /&gt;
        assert(success, &amp;quot;Non-existent module requested: &amp;quot; .. moduleName)&lt;br /&gt;
        &lt;br /&gt;
        table.insert(imports, reqModule)&lt;br /&gt;
        reqModule.page = lax and reqModule.public_page or reqModule.page&lt;br /&gt;
        &lt;br /&gt;
        return module&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local import    = import_wrap(false)&lt;br /&gt;
local importlax = import_wrap(true)&lt;br /&gt;
&lt;br /&gt;
-- en&lt;br /&gt;
module.import = import&lt;br /&gt;
module.render = render&lt;br /&gt;
module.importlax = importlax&lt;br /&gt;
&lt;br /&gt;
return module&lt;/div&gt;</summary>
		<author><name>Mediawiki&gt;The JoTS</name></author>
	</entry>
</feed>