| Line 4: |
Line 4: |
| | -- Remi_Scarlet | | -- Remi_Scarlet |
| | -- I fucking hate lua. | | -- I fucking hate lua. |
| | + | |
| | + | -- 10/24/15 Added colorful blue button thing |
| | + | -- 5/5/16 Added multiple start location support |
| | | | |
| | local remiLib = require("Module:RemiLib") | | local remiLib = require("Module:RemiLib") |
| | | | |
| | function p.renderBranchingTable(graph, collapsed) | | function p.renderBranchingTable(graph, collapsed) |
| | + | |
| | + | local uniqueID = remiLib.timeHash(graph) |
| | + | local classString = "mw-customtoggle-" .. tostring(uniqueID) |
| | + | local idString = "mw-customcollapsible-" .. tostring(uniqueID) |
| | + | |
| | + | local button = mw.html.create('div') |
| | + | button |
| | + | :addClass(classString) |
| | + | :addClass("globalbutton") |
| | + | :wikitext("Show/Hide Branching Rules") |
| | + | |
| | local body = mw.html.create("table") | | local body = mw.html.create("table") |
| | body | | body |
| | + | :addClass("mw-collapsible") |
| | :addClass("wikitable") | | :addClass("wikitable") |
| − | :addClass("mw-collapsible") | + | :addClass("mw-collapsed") |
| | + | :attr("id",idString) |
| | :css("width","300px") | | :css("width","300px") |
| − | if collapsed then
| |
| − | body:addClass("mw-collapsed")
| |
| − | end
| |
| | | | |
| | local titleRow = mw.html.create("tr") | | local titleRow = mw.html.create("tr") |
| Line 57: |
Line 70: |
| | -- toTable is a table of all the to's | | -- toTable is a table of all the to's |
| | -- | | -- |
| − | local possibleStarts = remiLib.mergeArrays({"START"},remiLib.uppercase) | + | local possibleNodes = remiLib.mergeArrays({"START", "START-1", "START-2", |
| − | for _,from in pairs(possibleStarts) do | + | "START-3", "START-4", "START-5"} |
| | + | ,remiLib.uppercase) |
| | + | -- 5/5/16 |
| | + | -- Since multiple start paths are possible (Eg, starting from two different places) |
| | + | -- adding the ability to specify multiple start points. Assuming no more than 5 start points ever lol. |
| | + | -- Yeah yeah I get that it's bad code design. Shut up, I don't care enough to put more than 5 minutes of thought into this. |
| | + | for _,from in pairs(possibleNodes) do |
| | if graph[from] ~= nil then | | if graph[from] ~= nil then |
| | local toTable = graph[from] | | local toTable = graph[from] |
| Line 72: |
Line 91: |
| | -- instance of the "to" node connecting to a "from" node | | -- instance of the "to" node connecting to a "from" node |
| | local isFirstTo = true | | local isFirstTo = true |
| − | for _,toNode in pairs(remiLib.uppercase) do | + | for _,toNode in pairs(possibleNodes) do |
| | if toTable[toNode] ~= nil then | | if toTable[toNode] ~= nil then |
| | if not isFirstTo then | | if not isFirstTo then |
| Line 94: |
Line 113: |
| | end | | end |
| | end | | end |
| − | return tostring(body) | + | return tostring(button) .. "\n" .. tostring(body) |
| | end | | end |
| | | | |
| Line 110: |
Line 129: |
| | -- second val in split is "to" as above | | -- second val in split is "to" as above |
| | -- first and third should be length 1 cuz they should be singular letters | | -- first and third should be length 1 cuz they should be singular letters |
| − | if #split == 3 and string.lower(split[2]) == "to" and (#split[1] == 1 or string.lower(split[1]) == "start") and #split[3] == 1 then | + | if #split == 3 and |
| | + | string.lower(split[2]) == "to" and |
| | + | (#split[1] == 1 or (string.find(string.lower(split[1]),"start") ~= nil)) and |
| | + | (#split[3] == 1 or (string.find(string.lower(split[3]),"start") ~= nil))then |
| | local from = string.upper(split[1]) | | local from = string.upper(split[1]) |
| | local to = string.upper(split[3]) | | local to = string.upper(split[3]) |
| − | if (remiLib.valid(from,remiLib.letters) or string.lower(from) == "start")and remiLib.valid(to,remiLib.letters) then | + | if (remiLib.valid(from,remiLib.letters) or (string.find(string.lower(split[1]),"start") ~= nil)) and |
| | + | (remiLib.valid(to,remiLib.letters) or (string.find(string.lower(split[3]),"start") ~= nil))then |
| | if mapGraph[from] == nil then | | if mapGraph[from] == nil then |
| | mapGraph[from] = {} | | mapGraph[from] = {} |
| Line 121: |
Line 144: |
| | end | | end |
| | end | | end |
| | + | --local html = remiLib.dictConcat(table.getKeys(mapGraph["START-4"]),"|") |
| | local html = p.renderBranchingTable(mapGraph,collapsed) | | local html = p.renderBranchingTable(mapGraph,collapsed) |
| | | | |