5FWVELA5XU72JOLKVJMIIEFUIFPJQD2MEQQZVGLB3PMNVJPJT2PAC
GKEF3WAPO3PU5DFROOJFS6LAJDFLFGX67IY46CR5VVZWRCYCAD2QC
G42A6ELTV6MRSMEOXPSXRDTTN7Q464FKWKBHQLVQ5O6JXS3W4TMAC
4C5277X7DTT6YSUD7QXQJ323CIRU4IERYZGOG43JWCPZ67B4N5AQC
KEFZWDCOCLPTLSZJKRV4VYAHRITV5T33YKG2VGT332YAUCOBS3EAC
JGESC375DNF2CAB7ZOCSC45X5CGZVOXHSVCN643B3YHTRZRG6CIQC
FS2ITYYHBLFT66YUC3ENPFYI2HOYHOVEPQIN7NQR6KF5MEK4NKZAC
MD3W5IRAC6UQALQE4LJC52VQNDO3I3HXF3XE2XHDABXBYJBUVAXQC
D4FEFHQCSILZFQ5VLWNXAIRZNUMCDNGJSM4UJ6T6FDMMIWYRYILQC
ZTMRQZSWUL6FJRI4C4H37MR2IMV22DB6KRGEOUNYRWW5CTAVQFKAC
CZRMAMSBRVX26IXKHNPG6M3YSWMOZTM73X3XHAMBDSNETTFVRCUQC
PNBKVYZ4ANUAZNQN6KEWYNDF7552ROZPNAPRJE7Q6O7ZZJMJ3S3QC
y = Text.draw(State, line_index, y, --[[startpos]] 1)
y = y + State.line_height
if type(line.data) == 'string' then
y = Text.draw(State, line_index, y, --[[startpos]] 1)
y = y + State.line_height
else
--? love.graphics.print('aaa', State.left, y)
--? y = y + State.line_height
line.height = debug_log_render[line.data.name](line.data, State.left, y, State.right-State.left)
y = y + line.height
end
specific domain and program. In combination with [tenonauger.love](), get on
the road to learning to [reinvent wheels](https://handmade.network/jam) for
[bicyles of the mind](https://merveilles.town/@akkartik/108607458977376162).
specific domain and program. Get on the road to learning to [reinvent wheels](https://handmade.network/jam)
for [bicyles of the mind](https://merveilles.town/@akkartik/108607458977376162).
To run from the terminal, [pass this directory to LÖVE](https://love2d.org/wiki/Getting_Started#Running_Games),
Arguments in _tenon auger_ (log browser) mode:
* log file to parse and browse read-only
* (optional) a source file containing lua definitions in namespace
`debug_log_render` that will be used to render log lines. For example:
```
debug_log_render = {}
function debug_log_render.state(obj, x,y, w)
assert(obj.name == 'state')
local h = 30
love.graphics.rectangle('line', x,y, w,h)
return h
end
```
This definition will render log lines of this form:
```
main.lua:50: {"name": "state", ...}
```
as rectangles 30 pixels tall.
Definitions return the height they need to render their argument. Tenon
auger will pass in a non-overlapping `y` to the next line.