<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" 
  xmlns:content="http://purl.org/rss/1.0/modules/content/" 
  xmlns:dc="http://purl.org/dc/elements/1.1/" 
  xmlns:atom="http://www.w3.org/2005/Atom" 
  xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" 
  xmlns:media="http://search.yahoo.com/mrss/">
  <channel>
    <title>lua on River Writes - A MediaWiki Blog</title>
    <link>https://blog.river.me/tags/lua/</link>
    <description>RheingoldRiver&#39;s blog - MediaWiki development, Leaguepedia stories, and productivity hacks</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <copyright>©2020-2026, All Rights Reserved</copyright>
    <lastBuildDate>Tue, 31 May 2022 10:05:34 +0000</lastBuildDate>
    
        <atom:link href="https://blog.river.me/tags/lua/index.xml" rel="self" type="application/rss+xml" />
    

      
      <item>
        <title>Lua Branches</title>
        <link>https://blog.river.me/lua-branches/</link>
        <pubDate>Tue, 31 May 2022 10:05:34 +0000</pubDate>
        
        <atom:modified>Tue, 31 May 2022 10:05:34 +0000</atom:modified>
        <guid>https://blog.river.me/lua-branches/</guid>
        <description>Lua Branches is a prototype/proof-of-concept MediaWiki extension for making branches of Lua modules &amp;amp; their dependency chains.</description>
        
        <dc:creator>river</dc:creator>
        
        
        
        
          
            
              <category>mediawiki_extensions</category>
            
          
            
              <category>lua</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>Lua table errors</title>
        <link>https://blog.river.me/table-errors/</link>
        <pubDate>Tue, 08 Feb 2022 06:28:24 +0000</pubDate>
        
        <atom:modified>Tue, 08 Feb 2022 06:28:24 +0000</atom:modified>
        <guid>https://blog.river.me/table-errors/</guid>
        <description>A framework for inserting Lua errors into HTML tables using a singleton class</description>
        
        <dc:creator>river</dc:creator>
        
        
        
        
          
            
              <category>lua</category>
            
          
            
              <category>css</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>Toggleable columns</title>
        <link>https://blog.river.me/toggleable-columns/</link>
        <pubDate>Tue, 18 Jan 2022 22:07:12 +0000</pubDate>
        
        <atom:modified>Tue, 18 Jan 2022 22:07:12 +0000</atom:modified>
        <guid>https://blog.river.me/toggleable-columns/</guid>
        <description>A simple interface to automatically let users toggle columns in any data table on the entire wiki.</description>
        
        <dc:creator>river</dc:creator>
        
        
        
        
          
            
              <category>lua</category>
            
          
            
              <category>widgets</category>
            
          
            
              <category>javascript</category>
            
          
            
              <category>css</category>
            
          
            
              <category>leaguepedia</category>
            
          
            
              <category>mediawiki</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>Frame, wtf?</title>
        <link>https://blog.river.me/frame-wtf/</link>
        <pubDate>Tue, 03 Aug 2021 08:46:02 +0000</pubDate>
        
        <atom:modified>Tue, 03 Aug 2021 08:46:02 +0000</atom:modified>
        <guid>https://blog.river.me/frame-wtf/</guid>
        <description>Frame objects in Scribunto can be confusing, and they do a lot of work. Normally I say &amp;ldquo;don&amp;rsquo;t worry, just copy the copyable code,&amp;rdquo; but here&amp;rsquo;s an indepth guide to everything they do.</description>
        
        <dc:creator>river</dc:creator>
        
        
        
        
          
            
              <category>lua</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>Optimizing Cargo - query 3</title>
        <link>https://blog.river.me/optimizing-cargo-3/</link>
        <pubDate>Tue, 25 May 2021 22:07:05 +0000</pubDate>
        
        <atom:modified>Tue, 25 May 2021 22:07:05 +0000</atom:modified>
        <guid>https://blog.river.me/optimizing-cargo-3/</guid>
        <description>The final of three Cargo queries I recently optimized on Leaguepedia</description>
        
        <dc:creator>river</dc:creator>
        
        
        
        
          
            
              <category>Cargo</category>
            
          
            
              <category>Leaguepedia</category>
            
          
            
              <category>Lua</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>Optimizing Cargo - query 1</title>
        <link>https://blog.river.me/optimizing-cargo-1/</link>
        <pubDate>Wed, 28 Apr 2021 02:05:43 +0000</pubDate>
        
        <atom:modified>Wed, 28 Apr 2021 02:05:43 +0000</atom:modified>
        <guid>https://blog.river.me/optimizing-cargo-1/</guid>
        <description>A Cargo query I optimized recently on Leaguepedia</description>
        
        <dc:creator>river</dc:creator>
        
        
        
        
          
            
              <category>cargo</category>
            
          
            
              <category>leaguepedia</category>
            
          
            
              <category>lua</category>
            
          
            
              <category>lua_class_system</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>A Lua module to print all args</title>
        <link>https://blog.river.me/cargo-debug-print-all-args/</link>
        <pubDate>Tue, 13 Apr 2021 11:24:05 +0000</pubDate>
        
        <atom:modified>Tue, 13 Apr 2021 11:24:05 +0000</atom:modified>
        <guid>https://blog.river.me/cargo-debug-print-all-args/</guid>
        <description>How to write a module to print all args to help with debugging Cargo</description>
        
        <dc:creator>river</dc:creator>
        
        
        
        
          
            
              <category>cargo</category>
            
          
            
              <category>lua</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>Tournament brackets (part 1)</title>
        <link>https://blog.river.me/tournament-brackets/</link>
        <pubDate>Tue, 30 Mar 2021 06:36:44 +0000</pubDate>
        
        <atom:modified>Tue, 30 Mar 2021 06:36:44 +0000</atom:modified>
        <guid>https://blog.river.me/tournament-brackets/</guid>
        <description>Our CSS-grid-powered tournament brackets on Leaguepedia</description>
        
        <dc:creator>river</dc:creator>
        
        
        
        
          
            
              <category>css</category>
            
          
            
              <category>html</category>
            
          
            
              <category>leaguepedia</category>
            
          
            
              <category>lua</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>Setting common match &amp; game keys</title>
        <link>https://blog.river.me/common-game-id/</link>
        <pubDate>Tue, 23 Mar 2021 02:33:50 +0000</pubDate>
        
        <atom:modified>Tue, 23 Mar 2021 02:33:50 +0000</atom:modified>
        <guid>https://blog.river.me/common-game-id/</guid>
        <description>How I corrected a mistake in my Cargo database design</description>
        
        <dc:creator>river</dc:creator>
        
        
        
        
          
            
              <category>cargo</category>
            
          
            
              <category>leaguepedia</category>
            
          
            
              <category>lua</category>
            
          
            
              <category>lua_class_system</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>Non-unique item names</title>
        <link>https://blog.river.me/non-unique-item-names/</link>
        <pubDate>Tue, 29 Dec 2020 21:23:05 +0000</pubDate>
        
        <atom:modified>Tue, 29 Dec 2020 21:23:05 +0000</atom:modified>
        <guid>https://blog.river.me/non-unique-item-names/</guid>
        <description>In a recent patch, Riot introduced non-unique item names, and we had to create a system for dealing with this.</description>
        
        <dc:creator>river</dc:creator>
        
        
        
        
          
            
              <category>leaguepedia</category>
            
          
            
              <category>lua</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>Multi-Instance Subtemplates in Lua</title>
        <link>https://blog.river.me/lua-multi-instance-subtemplates/</link>
        <pubDate>Tue, 20 Oct 2020 04:44:14 +0000</pubDate>
        
        <atom:modified>Tue, 20 Oct 2020 04:44:14 +0000</atom:modified>
        <guid>https://blog.river.me/lua-multi-instance-subtemplates/</guid>
        <description>We can serialize arguments from multi-instance subtemplates when working with Lua and retrieve our data in easy-to-work-with arrays using simple wrapper functions.</description>
        
        <dc:creator>river</dc:creator>
        
        
        
        
          
            
              <category>lua</category>
            
          
            
              <category>mediawiki</category>
            
          
            
              <category>leaguepedia</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>CompoundRole</title>
        <link>https://blog.river.me/compound-role/</link>
        <pubDate>Wed, 26 Aug 2020 16:50:18 +0000</pubDate>
        
        <atom:modified>Wed, 26 Aug 2020 16:50:18 +0000</atom:modified>
        <guid>https://blog.river.me/compound-role/</guid>
        <description>A bunch of things I did wrong because learning is fun!</description>
        
        <dc:creator>river</dc:creator>
        
        
        
        
          
            
              <category>leaguepedia</category>
            
          
            
              <category>lua</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>Adventures in caching primary keys</title>
        <link>https://blog.river.me/primary-key-caching-adventures/</link>
        <pubDate>Tue, 16 Jun 2020 20:39:18 +0000</pubDate>
        
        <atom:modified>Tue, 16 Jun 2020 20:39:18 +0000</atom:modified>
        <guid>https://blog.river.me/primary-key-caching-adventures/</guid>
        <description>The pattern of store -&amp;gt; query -&amp;gt; store -&amp;gt; query can lead to caching nightmares when working with Cargo or SMW in MediaWiki. This is the story of how I dealt with one.</description>
        
        <dc:creator>river</dc:creator>
        
        
        
        
          
            
              <category>cargo</category>
            
          
            
              <category>caching</category>
            
          
            
              <category>leaguepedia</category>
            
          
            
              <category>lua</category>
            
          
            
              <category>mediawiki</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>Highlighting disambiguations</title>
        <link>https://blog.river.me/disambig-highlight/</link>
        <pubDate>Tue, 19 May 2020 13:21:48 +0000</pubDate>
        
        <atom:modified>Tue, 19 May 2020 13:21:48 +0000</atom:modified>
        <guid>https://blog.river.me/disambig-highlight/</guid>
        <description>Disambiguations are typically somewhat user-unfriendly, especially when a wiki has a relatively low percentage of pages that are disambiguated and so the presence of one is unexpected. Here I describe my method for improving quality of life when disambiguation links do appear.</description>
        
        <dc:creator>river</dc:creator>
        
        
        
        
          
            
              <category>mediawiki</category>
            
          
            
              <category>javascript</category>
            
          
            
              <category>lua</category>
            
          
            
              <category>cargo</category>
            
          
            
              <category>css</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>CharInsert: Why you should &#34;char&#34;</title>
        <link>https://blog.river.me/charinsert/</link>
        <pubDate>Tue, 05 May 2020 04:46:37 +0000</pubDate>
        
        <atom:modified>Tue, 05 May 2020 04:46:37 +0000</atom:modified>
        <guid>https://blog.river.me/charinsert/</guid>
        <description>CharInsert is one of my favorite extensions. Here&amp;rsquo;s how I made a Lua wrapper for it to create a user-friendly interface for anyone to add snippets they want.</description>
        
        <dc:creator>river</dc:creator>
        
        
        
        
          
            
              <category>mediawiki</category>
            
          
            
              <category>mediawiki_extensions</category>
            
          
            
              <category>javascript</category>
            
          
            
              <category>lua</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>Lua Hooks System</title>
        <link>https://blog.river.me/lua-hooks-system/</link>
        <pubDate>Mon, 09 Mar 2020 10:44:27 +0000</pubDate>
        
        <atom:modified>Mon, 09 Mar 2020 10:44:27 +0000</atom:modified>
        <guid>https://blog.river.me/lua-hooks-system/</guid>
        <description>A system of hooks in Scribunto can be reasonable to use if you have a wikifarm with synced code that occasionally needs to be slightly modified on one or more wikis. I found the system more complicated than it was worth, but I&amp;rsquo;m documenting it here before I remove it.</description>
        
        <dc:creator>river</dc:creator>
        
        
        
        
          
            
              <category>mediawiki</category>
            
          
            
              <category>lua</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>How to add Cargo docstrings on table pages</title>
        <link>https://blog.river.me/cargo-docstrings/</link>
        <pubDate>Mon, 10 Feb 2020 04:16:35 +0000</pubDate>
        
        <atom:modified>Mon, 10 Feb 2020 04:16:35 +0000</atom:modified>
        <guid>https://blog.river.me/cargo-docstrings/</guid>
        <description>This is not a post about how to add Cargo docstrings on table pages. Rather, it&amp;rsquo;s a post about how to create workarounds in MediaWiki in a reasonably well-controlled manner.</description>
        
        <dc:creator>river</dc:creator>
        
        
        
        
          
            
              <category>mediawiki</category>
            
          
            
              <category>cargo</category>
            
          
            
              <category>lua</category>
            
          
            
              <category>javascript</category>
            
          
        
        
        
      </item>
      

    
  </channel>
</rss>
