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

Здесь обсуждается всё, что касается макросов.
Post Reply
User avatar
John Doe
Бюрократ
Posts: 11421
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 101 times

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

Post by John Doe » Sat 27 Aug, 2016 13:13

Задачу просмотр 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))
Last edited by John Doe on Sat 27 Aug, 2016 18:33, edited 1 time in total.

Shmuel
Posts: 5234
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 152 times

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

Post by Shmuel » Sat 27 Aug, 2016 13:38

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

User avatar
John Doe
Бюрократ
Posts: 11421
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 101 times

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

Post by John Doe » Sat 27 Aug, 2016 14:23

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

И много где ещё: h[url]ttp://lua-users.org/wiki/TableSerialization[/url]

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

User avatar
John Doe
Бюрократ
Posts: 11421
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 101 times

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

Post by John Doe » Sat 27 Aug, 2016 18:31

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, недокументированная (одна из многих).
Подкорректировал первое сообщение.

gotar
Posts: 296
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 8 times

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

Post by gotar » Sun 28 Aug, 2016 13:01

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

User avatar
John Doe
Бюрократ
Posts: 11421
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 101 times

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

Post by John Doe » Sun 28 Aug, 2016 13:22

gotar wrote: А как пользоваться ml_tstring
http://stevedonovan.github.io/microlight/#tstring

Code: Select all

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

gotar
Posts: 296
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 8 times

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

Post by gotar » Sun 28 Aug, 2016 13:31

А может Вы еще подскажите как распечатать таблицу с макросами. В частности хотелось бы разобраться как по клавише ищется соответствующий макрос.

User avatar
John Doe
Бюрократ
Posts: 11421
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 17 times
Been thanked: 101 times

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

Post by John Doe » Sun 28 Aug, 2016 13:37

gotar wrote: А может Вы еще подскажите как распечатать таблицу с макросами.
Не распечатать, а составить, а значит в другой теме: viewtopic.php?f=15&t=7863
gotar wrote: как по клавише ищется соответствующий макрос.
Перебором.

Post Reply

Return to “Обсуждение макросов”