Warning: this is an htmlized version!
The original is here, and
the conversion rules are here.
-- This file:
--   http://angg.twu.net/LUA/blogme2021.lua.html
--   http://angg.twu.net/LUA/blogme2021.lua
--           (find-angg "LUA/blogme2021.lua")
-- Author: Eduardo Ochs <eduardoochs@gmail.com>

-- (find-angg "LUA/lua50init.lua" "Blogme")
-- (find-blogme3 "brackets.lua")

BlogMe = Class {
  type = "BlogMe",
  new  = function (str)
      local bracks,s = {}, {}
      local push = function (n) table.insert(s, n) end
      local pop = function (pos)
          local n = s[#s]; s[#s] = nil
	  if n == nil then error("Unbalanced ']' at pos="..pos) end
          return n
        end
      for pos,c in str:gmatch("()([%[%]])") do
        if c == "[" then
          push(pos)
        else
          local openpos = pop(pos)
          bracks[openpos],bracks[pos] = pos, openpos
	end
      end
      if #s > 0 then error("Unbalanced '[' at pos="..s[#s]) end
      return BlogMe {str=str, bracks=bracks}
    end,
  __index = {
  },
}


--[==[
* (eepitch-lua51)
* (eepitch-kill)
* (eepitch-lua51)
dofile "blogme2021.lua"

bm = BlogMe.new("[[]] [][")
bm = BlogMe.new("[[]] [] ][")
bm = BlogMe.new("[[]] [] []")
PPV(bm.bracks)

--]==]