SergOmarov 34 Опубликовано: 19 апреля, 2016 Есть у нас какая-то либа, мы хотим, чтобы из интерпритатора lua можно было увидеть описание функции. Можно воспользоваться моей библиотекой, состоящей из единственной функции. Пример использования: local somelib={} somelib.somefunction=function(a) print(a) end local help=require("help.lua") return help("<имя файла, содержащего таблицу описаний>",somelib)--Возвращается либа с описаниями А в файл описаний: return {somefunction="Это описание somefunction"} При тесте: lua>somelib=require("somelib") lua>=somelib.somefunction--Это описание somefunction lua>somelib.somefunction("Test")--Test Исходники: http://pastebin.com/57Q7M1dK 3 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
qwertyMAN 1 722 Опубликовано: 19 апреля, 2016 (изменено) ... Моя версия - создать просто инфу и записать в виде текста: local lib={} function lib.abc(x,y) --типичные функции новичков return x+y end function lib.my_first_program() print("Adventure time!") end --здесь записываем всякую инфу о библиотеке, которая нахрен никому не нужна, но вдруг кому понадобится. lib.versions="0.1 beta" lib.autors={"Балаболькин Аркадий","Абкарла Олеговна","Дмитрий Гомункилович","Хеллоу Ворлдович"} lib.info="Эта библиотека написана программистом Балаболькиным. Представляет из себя комплекс суперкрутых функций. А главное я это написал сам" --а вот далее идёт человеческое описание, не хранящее в оперативной памяти ненужную инфу как в примере выше. Вот это уже намного лучше. --[[ Авторы: Паскаль, Ньютон, Платон Версия: 0.1 Описание: Это такая крутая библиотека, что в рот мне ноги! ]] return lib Далее в программе мы запросто можем получить список авторов например так: local autors_lib = require("lib").autors --загружаем список авторов из библиотеки lib for i=1, #autors_lib do print(autors[i]) --выводим на экран список авторов библиотеки end Вот и всё. P.S. Я использовал такую схему когда делал свой лаунчер программ. Вот этот http://computercraft.ru/blog/37/entry-484-prostoi-launcher-dlia-programm-i-igr/ Но это было сделано для развлечения. Чтобы запускать мои игры все с одной проги. В реальности же такой подход неприемлем для уважающих себя программистов. Записывать никому ненужную инфу, в любом виде - это бесполезно. Лишний раз память забиваешь и вес проги увеличиваешь. Изменено 19 апреля, 2016 пользователем qwertyMAN Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
SergOmarov Автор темы 34 Опубликовано: 19 апреля, 2016 Вот смотрите: например, библиотека forms содержит много конструкторов, методов, и если не часто ею пользуешься - что-то забываешь аргументы, и приходится лезть на форум. Вот для таких библиотек эту штуку я и написал. P.S. qwertyMAN, в твоем примере описании функции в виде комментария, который из интерпритатора невиден Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Alex 4 683 Опубликовано: 19 апреля, 2016 Далее в программе мы запросто можем получить список авторов Вряд ли тут речь шла о разрабе по имени Хеллоу Ворлдович. Тут, видимо, намекалось на то, что либа должна выводить текстовую справку по функциям каким-то, при ошибке вызова подразумевается, что принтится инфа о требуемых аргументах и их типах, текст того, что стало причиной ошибки и т.п. А Хеллоу Ворлдович и просто где-то в комментариях в шапке либы может быть зашит просто и наверно нет надобности в наличии метода вызова авторов там каких-то средствами либы простым юзверям. Для чего им те разрабы? Где это будет применяться в программе при работе с либой? 2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
qwertyMAN 1 722 Опубликовано: 19 апреля, 2016 Вот смотрите: например, библиотека forms содержит много конструкторов, методов, и если не часто ею пользуешься - что-то забываешь аргументы, и приходится лезть на форум. Вот для таких библиотек эту штуку я и написал. P.S. qwertyMAN, в твоем примере описании функции в виде комментария, который из интерпритатора невиден Пример: lua> print(require("lib").info) Выводит на экран описание библиотеки. Другой вопрос, а надо ли это и для каких целей? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Fingercomp 4 409 Опубликовано: 19 апреля, 2016 Ааааааа! Нет слова "autors"! Есть "authors"!! Так, ладно. https://gist.github.com/Fingercomp/3975221042e4e16c83d7a5f6fceed0d1 — подключаешь библиотеку и работаешь: local addMethod = require("addmethod") local a = {} addMethod(a, "hello", function() return "Hello, world!" end, "function():string -- Returns \"Hello, world!\"") print(a.hello) print(a.hello()) 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
SergOmarov Автор темы 34 Опубликовано: 19 апреля, 2016 Перед написанием кода было бы полезно потестить функции либы в интерпритаторе: lua>=forms.run --function:<Address> А если заюзать мою help-функцию, и написать описание: lua>=forms.run --function(form:Form):void Ведь это легче, чем читать доки! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Fingercomp 4 409 Опубликовано: 19 апреля, 2016 Прошу простить и извинить. Недочитал пост первый, подумал, что это вопрос был задан, а не прога, и потому пошёл писать я на коленке Ну тогда норм, читаемость поправь только. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
qwertyMAN 1 722 Опубликовано: 19 апреля, 2016 Есть "authors"!! По звучанию больше напоминает out horse Лучше буду писать транслито-английским Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro 3 563 Опубликовано: 19 апреля, 2016 По звучанию больше напоминает out horse Лучше буду писать транслито-английским Г. лоГика. 2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Zer0Galaxy 2 187 Опубликовано: 19 апреля, 2016 Срочно в теме Метатаблицы описать метаметод __tostring. Походу еще один метаметод обнаружился - __pairs Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах