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

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

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

Post 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))
Last edited by John Doe on Sat 27 Aug, 2016 18:33, edited 1 time in total.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

Есть такая библиотека, penlight называется. Она содержит много всяческих вкусностей, в том числе и по теме. Так может лучше, чем собирать множество маленьких модулей, использовать penlight?
(У меня даже возникла мысль включить её в поставку LuaMacro... но это только мысль).
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post 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?
Вероятно. Я как-то не нашёл времени на то чтобы освоить и проникнуться.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post 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, недокументированная (одна из многих).
Подкорректировал первое сообщение.
gotar
Posts: 412
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 17 times
Been thanked: 3 times

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

Post by gotar »

А как пользоваться 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: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

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

Code: Select all

lua:=require"ml_tstring"(_G,"  ")
gotar
Posts: 412
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 17 times
Been thanked: 3 times

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

Post by gotar »

А может Вы еще подскажите как распечатать таблицу с макросами. В частности хотелось бы разобраться как по клавише ищется соответствующий макрос.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

gotar wrote: А может Вы еще подскажите как распечатать таблицу с макросами.
Не распечатать, а составить, а значит в другой теме: http://forum.farmanager.com/viewtopic.php?f=15&t=7863
gotar wrote: как по клавише ищется соответствующий макрос.
Перебором.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

https://github.com/hishamhm/tabular | скачать
Требует https://github.com/kikito/ansicolors.lua | скачать
Опционально: https://github.com/adoxa/ansicon/ | releases



Вот только есть одна сложность: нужен модуль compat53.utf8, который нужно как-то скомпилировать.
Last edited by John Doe on Tue 10 Aug, 2021 10:01, edited 1 time in total.
https://t.me/FarManager — Telegram чат
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post by citRiks »

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

а мы точно это пишем в правильной теме?
Last edited by citRiks on Mon 09 Aug, 2021 19:28, edited 1 time in total.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

И верно, работает, при наличии модуля https://github.com/kikito/ansicolors.lua
https://t.me/FarManager — Telegram чат
Post Reply

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