Перейти к содержимому
SergOmarov

Вставка хелпа в библиотеки

Рекомендуемые сообщения

Есть у нас какая-то либа, мы хотим, чтобы из интерпритатора 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

...

Моя версия - создать просто инфу и записать в виде текста:

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/

Но это было сделано для развлечения. Чтобы запускать мои игры все с одной проги.

В реальности же такой подход неприемлем для уважающих себя программистов. Записывать никому ненужную инфу, в любом виде - это бесполезно. Лишний раз память забиваешь и вес проги увеличиваешь.

Изменено пользователем qwertyMAN

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот смотрите: например, библиотека forms содержит много конструкторов, методов, и если не часто ею пользуешься - что-то забываешь аргументы, и приходится лезть на форум. Вот для таких библиотек эту штуку я и написал.

P.S. qwertyMAN, в твоем примере описании функции в виде комментария, который из интерпритатора невиден

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

 

Далее в программе мы запросто можем получить список авторов

 

Вряд ли тут речь шла о разрабе по имени Хеллоу Ворлдович. Тут, видимо, намекалось на то, что либа должна выводить текстовую справку по функциям каким-то, при ошибке вызова подразумевается, что принтится инфа о требуемых аргументах и их типах, текст того, что стало причиной ошибки и т.п. 

 

А Хеллоу Ворлдович и просто где-то в комментариях в шапке либы может быть зашит просто и наверно нет надобности в наличии метода вызова авторов там каких-то средствами либы простым юзверям. Для чего им те разрабы? Где это будет применяться в программе при работе с либой?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот смотрите: например, библиотека forms содержит много конструкторов, методов, и если не часто ею пользуешься - что-то забываешь аргументы, и приходится лезть на форум. Вот для таких библиотек эту штуку я и написал.

P.S. qwertyMAN, в твоем примере описании функции в виде комментария, который из интерпритатора невиден

Пример:

lua> print(require("lib").info)

Выводит на экран описание библиотеки. Другой вопрос, а надо ли это и для каких целей?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ааааааа! Нет слова "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())

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Перед написанием кода было бы полезно потестить функции либы в интерпритаторе:

lua>=forms.run --function:<Address>

А если заюзать мою help-функцию, и написать описание:

lua>=forms.run --function(form:Form):void

 

Ведь это легче, чем читать доки!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Прошу простить и извинить. :facepalm:

Недочитал пост первый, подумал, что это вопрос был задан, а не прога, и потому пошёл писать я на коленке :lol:

 

Ну тогда норм, читаемость поправь только.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

 

Есть "authors"!!

По звучанию больше напоминает out horse

Лучше буду писать транслито-английским

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

По звучанию больше напоминает out horse

Лучше буду писать транслито-английским

Г. лоГика.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...