Module:Sandbox/BrandonXLF/4

-- Sandbox, do not delete local p = {}

-- Close  and  enclosing deeper depths local function closePending(toClose, depth) local out = '' while #toClose > 0 and toClose[#toClose][1] >= depth do out = out .. toClose[#toClose][2] table.remove(toClose, #toClose) end return out end

function p.main(frame) local wikitext = frame:preprocess(frame.args[1]) local items = {} local out = '' for indent, item in wikitext:gmatch("(**) *([^\n]+)") do 	    items[#items + 1] = {#indent + 1, item} end -- List of { depth, closing tag [, rest block-level (for s) ] } local toClose = {}

for i, item in pairs(items) do out = out .. closePending(toClose, item[1]) -- Create a new list if needed if #toClose == 0 or toClose[#toClose][2] ~= '' then out = out .. '' toClose[#toClose + 1] = { item[1] - 1, '', false } end -- Added by 		local keepInline = item[2]:match('KEEP%-INLINE$') ~= nil if keepInline then out = out .. '' .. item[2]:gsub(' *KEEP%-INLINE$', '') .. ' '		elseif i < #items and items[i + 1][1] > item[1] then -- Remove ":" if first item is block-level out = out:gsub("&#58; $", "") -- Treat remaining items in this last as block-level toClose[#toClose][3] = true out = out .. '' .. "'" .. item[2] .. "&#58; '"		elseif toClose[#toClose][3] then out = out .. '' .. "'" .. item[2] .. "'"		else out = out .. '' .. item[2] end toClose[#toClose + 1] = { item[1], '' } end out = out .. closePending(toClose, 0) return ' \n' .. out .. ' ' .. frame:extensionTag{ name = 'templatestyles', args = { src = 'User:BrandonXLF/styles2.css' } } end

return p