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

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

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

Postby 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: 4903
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 9 times
Been thanked: 118 times

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

Postby Shmuel » Sat 27 Aug, 2016 13:38

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

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

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

Postby John Doe » Sat 27 Aug, 2016 14:23

Shmuel wrote:Source of the post Есть такая библиотека, penlight называется. Она содержит много всяческих вкусностей, в том числе и по теме.
Кстати или нет, но у того же автора есть модуль Microlight, и я из него вытаскивал функцию по теме:

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

Вот этот ещё пробовал http://notebook.kulchenko.com/programming/serpent-lua-serializer-pretty-printer

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

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

Update:
https://github.com/leafo/moonscript/wiki/Pretty-Table-Dumper
https://github.com/leafo/moonscript/wiki/Alternative-Table-Dumper-(with-indentation)
https://github.com/mpeterv/vinspect

Shmuel wrote:Source of the post Так может лучше, чем собирать множество маленьких модулей, использовать penlight?
Вероятно. Я как-то не нашёл времени на то чтобы освоить и проникнуться.
Last edited by John Doe on Sun 28 Aug, 2016 23:38, edited 1 time in total.

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

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

Postby John Doe » Sat 27 Aug, 2016 18:31

John Doe wrote:Source of the post Единственное неудобство: она не преобразует в текст, а выводит на печать используя 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: 286
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 8 times

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

Postby 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: 11023
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 9 times
Been thanked: 61 times

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

Postby John Doe » Sun 28 Aug, 2016 13:22

gotar wrote:Source of the post А как пользоваться ml_tstring

http://stevedonovan.github.io/microlight/#tstring

Code: Select all

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

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

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

Postby gotar » Sun 28 Aug, 2016 13:31

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

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

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

Postby John Doe » Sun 28 Aug, 2016 13:37

gotar wrote:Source of the post А может Вы еще подскажите как распечатать таблицу с макросами.
Не распечатать, а составить, а значит в другой теме: GetMacroCopy

gotar wrote:Source of the post как по клавише ищется соответствующий макрос.
Перебором.


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

Who is online

Users browsing this forum: No registered users and 2 guests