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


Фотография

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


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 10

#1 Оффлайн   SergOmarov

SergOmarov
  • Пользователи
  • Сообщений: 564
  • Уровень сигнала: 0,42%
  • В игре: 2 час. 36 мин.

Награды

     

Отправлено 19 Апрель 2016 - 15:36

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


  • Zer0Galaxy, Fingercomp и Asummonster это нравится

#2 Оффлайн   qwertyMAN

qwertyMAN
  • Пользователи
  • Сообщений: 1 397
  • Уровень сигнала: 0,17%
  • В игре: 1 час. 3 мин.
  • ГородCity17

Награды

                             

Отправлено 19 Апрель 2016 - 16:03

...

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

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...programm-i-igr/

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

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


Сообщение отредактировал qwertyMAN: 19 Апрель 2016 - 16:24


#3 Оффлайн   SergOmarov

SergOmarov
  • Автор темы
  • Пользователи
  • Сообщений: 564
  • Уровень сигнала: 0,42%
  • В игре: 2 час. 36 мин.

Награды

     

Отправлено 19 Апрель 2016 - 16:23

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

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



#4 Оффлайн   Alex

Alex
  • Администраторы
  • Сообщений: 3 572
  • Уровень сигнала: 30,09%
  • В игре: 184 час. 25 мин.

Отправлено 19 Апрель 2016 - 16:29

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

 

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

 

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


  • SergOmarov и newbie это нравится

#5 Оффлайн   qwertyMAN

qwertyMAN
  • Пользователи
  • Сообщений: 1 397
  • Уровень сигнала: 0,17%
  • В игре: 1 час. 3 мин.
  • ГородCity17

Награды

                             

Отправлено 19 Апрель 2016 - 16:29

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

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

Пример:

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

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



#6 Оффлайн   Fingercomp

Fingercomp
  • Гуру
  • Сообщений: 1 951
  • Уровень сигнала: 187,35%
  • В игре: 1148 час. 24 мин.

Награды

                                               

Отправлено 19 Апрель 2016 - 16:36

Ааааааа! Нет слова "autors"! Есть "authors"!!

Так, ладно.

 

https://gist.github....3d7a5f6fceed0d1 — подключаешь библиотеку и работаешь:

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())

  • SergOmarov это нравится

#7 Оффлайн   SergOmarov

SergOmarov
  • Автор темы
  • Пользователи
  • Сообщений: 564
  • Уровень сигнала: 0,42%
  • В игре: 2 час. 36 мин.

Награды

     

Отправлено 19 Апрель 2016 - 16:36

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

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

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

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

 

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



#8 Оффлайн   Fingercomp

Fingercomp
  • Гуру
  • Сообщений: 1 951
  • Уровень сигнала: 187,35%
  • В игре: 1148 час. 24 мин.

Награды

                                               

Отправлено 19 Апрель 2016 - 16:42

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

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

 

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


  • SergOmarov это нравится

#9 Оффлайн   qwertyMAN

qwertyMAN
  • Пользователи
  • Сообщений: 1 397
  • Уровень сигнала: 0,17%
  • В игре: 1 час. 3 мин.
  • ГородCity17

Награды

                             

Отправлено 19 Апрель 2016 - 16:47

Есть "authors"!!

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

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



#10 Оффлайн   Totoro

Totoro
  • Хранители Кода
  • Сообщений: 1 679
  • Уровень сигнала: 0,36%
  • В игре: 2 час. 13 мин.

Награды

                                      

Отправлено 19 Апрель 2016 - 17:30

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

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

Г. лоГика.


  • Doob и Ren это нравится

#11 Оффлайн   Zer0Galaxy

Zer0Galaxy
  • Гуру
  • Сообщений: 1 210
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

5                                 

Отправлено 19 Апрель 2016 - 17:38

Срочно в теме Метатаблицы описать метаметод __tostring.

Походу еще один метаметод обнаружился - __pairs






Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных