{"id":13316259,"url":"https://github.com/uriid1/pimp-lua","last_synced_at":"2025-04-12T01:04:16.442Z","repository":{"id":202796586,"uuid":"708157301","full_name":"uriid1/pimp-lua","owner":"uriid1","description":"Module for Lua pretty print and debugging","archived":false,"fork":false,"pushed_at":"2025-03-06T14:35:31.000Z","size":2937,"stargazers_count":5,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-12T01:04:09.933Z","etag":null,"topics":["debugging","icecream","inspect","library","love2d","lua52","lua53","lua54","luajit","luvit","pretty-print","print","tarantool"],"latest_commit_sha":null,"homepage":"","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/uriid1.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-10-21T17:36:23.000Z","updated_at":"2025-03-06T14:35:34.000Z","dependencies_parsed_at":null,"dependency_job_id":"1c89328b-0450-4bef-af50-f4a75250ee55","html_url":"https://github.com/uriid1/pimp-lua","commit_stats":null,"previous_names":["uriid1/pimpa-lua","uriid1/pimp-lua"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uriid1%2Fpimp-lua","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uriid1%2Fpimp-lua/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uriid1%2Fpimp-lua/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uriid1%2Fpimp-lua/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/uriid1","download_url":"https://codeload.github.com/uriid1/pimp-lua/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248501861,"owners_count":21114683,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["debugging","icecream","inspect","library","love2d","lua52","lua53","lua54","luajit","luvit","pretty-print","print","tarantool"],"created_at":"2024-07-29T18:20:38.003Z","updated_at":"2025-04-12T01:04:16.435Z","avatar_url":"https://github.com/uriid1.png","language":"Lua","readme":"![Screenshot](https://github.com/uriid1/pimp-lua/blob/main/screenshots/pimp_logo.png)\n\nRussian | [English](README_EN.md)\u003c/br\u003e\nНа текущий момент, наиболее полная документация доступна только на русском языке.\u003c/br\u003e\nПоддерживаются версии lua5.4 и luajit\n\n## Pimp\nМодуль предназначен для красивой печати всех lua-типов, в особенности таблиц.\u003c/br\u003e\nА так же служит для простой отладки с использованием встроенной lua библиотеки debug.\u003c/br\u003e\nОсновная цель модуля — заменить print более совершенным инструментом.\u003c/br\u003e\n\n![Screenshot](https://github.com/uriid1/pimp-lua/blob/main/screenshots/screenshot.png)\n\n## Установка\n```bash\nluarocks install pimp\n```\n\n## Особенности lua и скорость работы модуля\n1. В lua нет возможности получить простым путем имя какой-либо переменной из стейта.\nПоэтому имена переменных, приходится буквально искать по значению или адресу.\nВ случае с таблицами, coroutine, функциями и userdata чаще всего нет проблем найти имя переменной, так как у этих типов есть адрес. С локальными переменными всё намного сложнее, получить имя по значению можно, но если будут upvalue или в локальном стеке переменные с таким же значением, нельзя гарантировать, что конкретное имя переменной будет соответствует конкретному значению. Поэтому по умолчанию в модуле отключен поиск имён локальных переменных, но вы можете включить этот режим, используя метод - `pimp:enableFindLocalName()`\n\n2. Модуль предназначен для тестирования и отладки кода, он значительно замедляет вашу программу, поэтому используйте его по назначению. А что бы не пришлось каждый раз удалять методы модуля из кода, существует возможность отключить работу pimp - `pimp:disable()`. И так же включить - `pimp:enable()`. Либо же отключить глобально - `pimp:globalDisable()`.\n\n## Рекомендация по загрузке модуля\n```lua\n-- Где-нибудь в точке входа в проект\n_G.p = require('pimp')\n\n-- При использовании Windows, лучше отключить отображение цветов\np:disableColor()\n```\n\n## Инспектирование lua-типов\n```lua\np('Pimp Module!')\np(\"^([a-z0-9]+)@([%w%d]+)$\")\np(true, false, nil)\np(function() end)\np(io.stderr)\np(10000, math.pi)\np(0/0, -1/0, 1/0)\n\nlocal test = function () end\np(function() end, test)\n\nlocal co = coroutine.create(function() end)\np(co)\n\nif box then\n  p(box.NULL)\nend\n```\n\n## Инспектирование таблиц\n```lua\n-- Таблица будет распечатана\n-- переменной table_name присвоиться ссылка на таблицу\nlocal table_name = p({\n  name = \"John\",\n  age = 30,\n  city = \"New York\"\n})\n```\n\n## Инспектирование функций\n```lua\nlocal function sum(a, b)\n  p(a, b)\n  return a + b\nend\n\n-- В переменной result_sum будет число 15\nlocal result_sum = p(sum(10, 5))\n```\n\n**Включение и отключение вывода*\n```lua\np:disable()\np('Hello')\np:enable()\n\np('World')\n```\n\n**Смена префикса**\n```lua\np:setPrefix({ prefix = 'INFO', sep = '|-\u003e ' })\np('Wow! It\\'s new prefix!')\np:resetPrefix()\n```\n```\nINFO|-\u003e file.lua:2: 'Wow! It's new preffix!': [length 22]\n```\n\n**Логирование**\n```lua\n--- Модуль log работает синхронно\np.log.trace('Trace message')\np.log.debug('Debug message')\np.log.info('Info message')\np.log.warn('Warn message')\np.log.error('Error message')\np.log.fatal('Fatal message')\n```\n\nВсе методы для настройки \u003c/br\u003e\n```lua\n-- Возвращает префикс по умолчанию\np:resetPrefix()\n\n-- Вкл/Выкл работы модуля\n-- при этом pimp возвращает все методы, которые в него попадают\np:disable()\np:enable()\n\n-- Глобальное отключение вывода из pimp\n-- игнорируя методы p:enable() / p:disable()\np:globalDisable()\n\n-- Установка паттерна на захват пути\n-- пример re_str = \"foo%-bar/(.+)\"\np:matchPath(re_str)\n\n-- Вкл/Выкл отображение полных путей\np:disableFullPath()\np:enableFullPath()\n\n-- Вкл/Выкл отображение цветов\np:disableColor()\np:enableColor()\n\n-- Вкл/Выкл отображения local, global, method, upvalue\np:enableVisibility()\np:disableVisibility()\n\n-- Вкл/Выкл отображения типов\np:enableType()\np:disableType()\n\n-- Вкл/Выкл отображения адресов таблиц\np:enableTableAddr()\np:disableTableAddr()\n\n-- Вкл/Выкл отображения всех функций, из которых был вызов pimp-а\np:enableFullCallStack()\np:disableFullCallStack()\n\n-- Вкл/Выкл стека функций в виде лесенки\np:enableCallStackLadder()\np:disableCallStackLadder()\n\n-- (Экспериментально) Вкл/Выкл поиска имени локальной переменной\np:enableFindLocalName()\np:disableFindLocalName()\n\n-- Метод сдампит таблицу, без цветов\n-- и вернет текстом дамп\np.pp(t)\n\n-- Метод вернет таблицей локальные переменные по заданному уровню\np.getLocalEnv(level)\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Furiid1%2Fpimp-lua","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Furiid1%2Fpimp-lua","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Furiid1%2Fpimp-lua/lists"}