Warning: this is an htmlized version!
The original is across this link,
and the conversion rules are here.
Lua 5.1.5  Copyright (C) 1994-2012 Lua.org, PUC-Rio
> dofile "luarects.lua"
> bigstr = [[
>> A = 1/ a \;  B = 2/abcd\;
>>      |b c|        \efgh/   C = 1/o o \
>>      | d |                      | o o|
>>      \  e/                      \o o /
>> ]]
> lwr = LuaWithRects.new(bigstr)
> = lwr
A = 1/ a \;  B = 2/abcd\;
     |b c|        \efgh/   C = 1/o o \
     | d |                      | o o|
     \  e/                      \o o /
> = lwr:extractasciirects()
local aR0 = AsciiRect.new(1, {" a ", "b c", " d ", "  e"})
local aR1 = AsciiRect.new(2, {"abcd", "efgh"})
local aR2 = AsciiRect.new(1, {"o o ", " o o", "o o "})
A = aR0   ;  B = aR1    ;
                           C = aR2    
                                      
                                      
> = lwr:body()
A = aR0   ;  B = aR1    ;
                           C = aR2    
                                      
                                      
> = lwr.defs
local aR0 = AsciiRect.new(1, {" a ", "b c", " d ", "  e"})
local aR1 = AsciiRect.new(2, {"abcd", "efgh"})
local aR2 = AsciiRect.new(1, {"o o ", " o o", "o o "})

> = mytabletostring(lwr.ars)
{ 1={1="aR0", 2={"lines"={1=" a ", 2="b c", 3=" d ", 4="  e"}, "w"=1, "x0"=0}},
  2={1="aR1", 2={"lines"={1="abcd", 2="efgh"}, "w"=2, "x0"=0}},
  3={1="aR2", 2={"lines"={1="o o ", 2=" o o", 3="o o "}, "w"=1, "x0"=0}}
}
> = lwr.ars[1][2]
w=1 x0=0
 a 
b c
 d 
  e
> 
>