ternJS - Генериране на файл с дефиниция на тип JSON

ternJS има няколко. JSON файлове defs, които съдържат определението за библиотеки. Може ли някой да ми обясни как най-добре мога да генерирам свои собствени към моите javascript библиотеки / или само дефиниционни обекти?

Не виждам, че няма обща процедура за това?


person eriksv88    schedule 24.09.2013    source източник


Отговори (2)


Има инструмент за това, включен в Tern. Вижте condense на http://ternjs.net/doc/manual.html#utils . Той изпълнява Tern на вашия файл и се опитва да изведе типовете, които намира. Далеч не е безупречен, но за прости програми работи добре. За файлове със сложна структура или интерфейс често ще трябва да пишете на ръка дефинициите.

person Marijn    schedule 24.09.2013
comment
Благодаря много Marijn, ти спаси деня ми;) :D :)! - person eriksv88; 24.09.2013

Има три начина, които съм обмислил да разреша проблема ви:

Използване на анализатор на абстрактно синтактично дърво и посетител

Един от начините да разрешите проблема си е да използвате анализатора на абстрактно синтактично дърво и посетител, за да автоматизирате задачата за сканиране на кода и документирането му.

Ресурсите тук ще бъдат полезни:

-http://ramkulkarni.com/blog/understanding-ast-created-by-mozilla-rhino-parser/ -Какво е JavaScript AST, как да играете с него?

Обикновено използвате анализатор, за да извлечете дърво, а след това използвате посетител, за да посетите всички възли и да свършите работата си там.

По същество ще имате дърво, представляващо конкретната библиотека и след това трябва да напишете кода, за да го съхраните във формата def, към който свързвате.

Получаване на генератор на документация и модифициране

Друга идея е да изтеглите изходния код за генератор на документация, напр. https://github.com/yui/yuidoc/

Чрез модифициране на стила/изходния формат можете да генерирате „документация“ в подходящия json формат.

Преобразуване на съществуваща документация (HTML документ) в JSON

Можете да направите анализатор, който приема стандартен формат на документация (сигурен съм, че тъй като Javadoc е такъв за java, трябва да има такъв за javascript), и да напишете конвертор, който извлича съответната информация и съхранява в JSON дефиниция.

person Menelaos    schedule 24.09.2013
comment
Преброих поне, че не са писали defs ръчно xD хехе - person eriksv88; 24.09.2013
comment
Може би ги попитайте? :) ... Забелязах, че те също така включват URL адреси към документация в дефинициите, което също така показва, че те са бракували/обхождали или ръчно въвеждали данни. Подозирам също, че може би са генерирали defs от обхождане на документите. Актуализирах отговора си с още 2 опции. - person Menelaos; 24.09.2013
comment
Thx, научих много от това тук :)! Благодаря ти. +1. Но мисля да го направя така, както се предполага от tern :) - person eriksv88; 24.09.2013