Page 1 of 1

Печать таблиц lua

Posted: Sat 27 Aug, 2016 13:13
by John Doe
Задачу просмотр lua-значений, в особенности таблиц, отлично решает lua explorer.

Но иногда необходимо сделать это не интерактивно, в диалоге, а просто преобразовать в читаемый текст.
Это используется например в LuaManager и dbedit.

В этой теме предлагаю обсудить различные способы решения этой задачи.

Лично я (предпочитая исользовать готовое, а не наступать на старые грабли), и перебрав несколько вариантов, остановился на модуле inspect.
Использовать так:

Code: Select all

local inspect = require"inspect"
far.Show(inspect(_G))
Кроме того, похожая функция сейчас уже есть из коробке в фаре, в модуле moon.

Code: Select all

local dump = require"moon".dump
far.Show(dump(_G))

Печать таблиц lua

Posted: Sat 27 Aug, 2016 13:38
by Shmuel
Есть такая библиотека, penlight называется. Она содержит много всяческих вкусностей, в том числе и по теме. Так может лучше, чем собирать множество маленьких модулей, использовать penlight?
(У меня даже возникла мысль включить её в поставку LuaMacro... но это только мысль).

Печать таблиц lua

Posted: Sat 27 Aug, 2016 14:23
by John Doe
Shmuel wrote: Есть такая библиотека, penlight называется. Она содержит много всяческих вкусностей, в том числе и по теме.
Кстати или нет, но у того же автора есть модуль Microlight, и я из него вытаскивал функцию по теме:

Ещё одна компактная реализация есть в luainspect: https://github.com/davidm/lua-inspect/b ... t/dump.lua

Вот этот ещё пробовал http://notebook.kulchenko.com/programmi ... ty-printer

В metalua есть: http://repo.or.cz/metalua.git/blob/HEAD ... table2.lua

И много где ещё: http://lua-users.org/wiki/TableSerialization

Update:
https://github.com/leafo/moonscript/wik ... ble-Dumper
https://github.com/leafo/moonscript/wik ... dentation)
https://github.com/mpeterv/vinspect
https://github.com/jagt/pprint.lua
Shmuel wrote: Так может лучше, чем собирать множество маленьких модулей, использовать penlight?
Вероятно. Я как-то не нашёл времени на то чтобы освоить и проникнуться.

Печать таблиц lua

Posted: Sat 27 Aug, 2016 18:31
by John Doe
John Doe wrote: Единственное неудобство: она не преобразует в текст, а выводит на печать используя print.
Обойти можно так:

Code: Select all

local p = require"moon".p
local print = _G.print
_G.print = far.Show
p(_G)
_G.print = print
Здорово я всё усложнил.
На самом деле там же есть функция dump, недокументированная (одна из многих).
Подкорректировал первое сообщение.

Печать таблиц lua

Posted: Sun 28 Aug, 2016 13:01
by gotar
А как пользоваться ml_tstring. Я поробовал lua:local inspect = require"ml_tstring" far.Show(inspect(_G))и получил что то невнятное.

Печать таблиц lua

Posted: Sun 28 Aug, 2016 13:22
by John Doe
gotar wrote: А как пользоваться ml_tstring
http://stevedonovan.github.io/microlight/#tstring

Code: Select all

lua:=require"ml_tstring"(_G,"  ")

Печать таблиц lua

Posted: Sun 28 Aug, 2016 13:31
by gotar
А может Вы еще подскажите как распечатать таблицу с макросами. В частности хотелось бы разобраться как по клавише ищется соответствующий макрос.

Печать таблиц lua

Posted: Sun 28 Aug, 2016 13:37
by John Doe
gotar wrote: А может Вы еще подскажите как распечатать таблицу с макросами.
Не распечатать, а составить, а значит в другой теме: http://forum.farmanager.com/viewtopic.php?f=15&t=7863
gotar wrote: как по клавише ищется соответствующий макрос.
Перебором.

Сохранение и чтение таблиц в файле

Posted: Mon 09 Aug, 2021 16:37
by John Doe
https://github.com/hishamhm/tabular | скачать
Требует https://github.com/kikito/ansicolors.lua | скачать
Опционально: https://github.com/adoxa/ansicon/ | releases



Вот только есть одна сложность: нужен модуль compat53.utf8, который нужно как-то скомпилировать.

Сохранение и чтение таблиц в файле

Posted: Mon 09 Aug, 2021 19:27
by citRiks
John Doe wrote: Mon 09 Aug, 2021 16:37 Вот только есть одна сложность: нужен модуль compat53.utf8, который нужно как-то скомпилировать.
компат53 нужен только для arg, который не является необходимым при использовании как модуль
Bce получилось при запуске в редакторе чуть измененного (изменения видны) example.lua:

а мы точно это пишем в правильной теме?

Печать таблиц lua

Posted: Tue 10 Aug, 2021 10:03
by John Doe
И верно, работает, при наличии модуля https://github.com/kikito/ansicolors.lua