Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.09.2014, 12:01
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

SDoc и документация на двух языках (Рус, Англ). Как реализовать?
Задал такой же вопрос на тостере, надеюсь и здесь получить ответ.
Есть задача написания двух версий документации для кода: на английском и на русском. Ведение двух версий проекта и их синхронизация затруднительна. Я знаю, что такого нет из коробки в JSDoc, но, возможно, у кого-то есть идеи для хаков. Я представляю себе "язык", как дополнительный кастомный тег:
...
/**
@doclang rus
@method f
@desc Крутой метод 

@doclang eng
@method f
@desc Awesome method
*/
f: function() { /* ... */},
...



Спасибо.
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #2 (permalink)  
Старый 29.09.2014, 12:44
Профессор
Отправить личное сообщение для WorM32 Посмотреть профиль Найти все сообщения от WorM32
 
Регистрация: 11.02.2014
Сообщений: 303

Кому нужны русские доки? Смысла ведь в этом нет никакого.
Ответить с цитированием
  #3 (permalink)  
Старый 29.09.2014, 13:14
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Лучшим решением будет парсить JSDoc и локализовывать комментарии по заданному JSON, а вообще это геморой, т.к. простое поддерженаие комментариев в актуальном виде сложно, а в ещё на разныз языках совсем ад

Цитата:
Кому нужны русские доки? Смысла ведь в этом нет никакого.
Доки нужны для разработчика. Я вот, например, не достаточно знаю инглишь, чтобы писать нормальные доки, а делать "огрызки" смысла нет, поэтому всё делаю на русском.
__________________
kobezzza
code monkey
Ответить с цитированием
  #4 (permalink)  
Старый 29.09.2014, 13:39
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Я не зацикливаюсь на JSDoc, меня волнует только одно: как сделать документацию на двух языках, но не прописывать её в статичных HTML файлах, чтоб можно было легко изменить шаблон вывода: HTML, JSON или в другую форму. Дошло до того, что я задумался написать собственный движок документирования вне JS файлов.

<method name="f" class="ClassName" lang="en">
	<sum>
		This method is very cool
	</sum>
	<desc>
		Big description
	</desc>
	<arguments>
		<argument name="x" optional="optional" default="12">
			Cool argument 1
		</argument>
		<argument name="y" repeatable="repeatable">
			Cool argument 2
		</argument>
	</arguments>
	<examples>
		<example caption="Basic usage">
			alert( new ClassName().f() )
		</example>
	</examples>
</method>

<method name="f" class="ClassName" lang="ru">
	<sum>
		Крутой метод
	</sum>
	<desc>
		Большое описание
	</desc>
	<arguments>
		<argument name="x" optional="optional" default="12">
			Крутой аргумент 1
		</argument>
		<argument name="y" repeatable="repeatable">
			Крутой аргумент 2
		</argument>
	</arguments>
	<examples>
		<example caption="Базовое использование">
			alert( new ClassName().f() )
		</example>
	</examples>
</method>


Но XML очень избыточный язык, а JSON - бедный. Что делать, хз пока.
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #5 (permalink)  
Старый 29.09.2014, 16:45
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

Парсим файлы, создаем линки, выводим в таблицу: слева en справа ru, пишем недостающее. Тыкаем в постинг, по линкам заменяется на нужный язык и складируется в отдельную папку.

В итоге будет создан еще один проект в папке lang, с докой на нужном языке.

Нюансы и вариации додумай сам. Я бы сделал так, как описал выше. Это подобие сборщика (grunt, gulp...)

Таким образом можно хоть на 20 языках написать доку.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.

Последний раз редактировалось Gozar, 29.09.2014 в 16:47.
Ответить с цитированием
  #6 (permalink)  
Старый 30.09.2014, 15:22
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Я склоняюсь к другой мысли: использовать тот же JSDoc, с темплейтом haruki, который экспортирует доки в JSON. Файл publish.js достаточно прост, чтоб его модифицировать и реализовать кастомные теги. После экспорта в JSON, скормить его самописному шаблонизатору-генератору страниц. Сами доки вынести в отдельный JS файл.
/**
@lang en
@function f
@summary cool function
@desc description
@param {integer} x - my X
@param {string} [y] - my Y
*/
Такое решение решит несколько проблем:
- Удобный и неизбыточный синтаксис остаётся, не нужно мудрить с XML и другими форматами описания данных.
- Уйдет бардак в коде. Больше половины кода сейчас занимает документация. С новыми языками будет еще больше бардака.
- Файл с доками можно будет подключать отдельно в IDE, так как, в основном, либа будет использоваться в минифицированном виде. Причем, можно будет подключить доки на любом языке, а написать новую локализацию не составит труда: копируй файл и переводи.

Нерешенные проблемы:
- Нужно постоянно следить за соответствием документаций: поменялся аргумент или пример, нужно изменить доки ко всем языкам.
- Не понятно, в каком месте (в каком файле и строке) описан метод. Со старым способом в сгенерированной HTML документации всегда было понятно, где найти реализацию метода. Возможно, для решения этой проблемы есть какой-то тег.
- Не работают теги @link
- Персер Харуки не обрабатывает определние типов
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности

Последний раз редактировалось FINoM, 30.09.2014 в 17:22.
Ответить с цитированием
  #7 (permalink)  
Старый 30.09.2014, 15:48
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Сообщение от Gozar
Парсим файлы, создаем линки, выводим в таблицу: слева en справа ru, пишем недостающее.
С таблицей крутая идея, спасибо, подумаю. Будет меньше гемора с синхронизацией.
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #8 (permalink)  
Старый 30.09.2014, 17:18
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

Сообщение от FINoM
Нужно постоянно следить за соответствием документаций: поменялся аргумент или пример, нужно изменить доки ко всем языкам.
Это по любому придется делать, т.к. идея обязывает. Можно особо не следить, запускать парсинг по крону или другому планировщику, тот выдает уведомление. Можно даже прикрутить переводчик, но он скорее всего будет кривой.

Чем меньше промежуточных звеньев и конвертаций, тем целостней данные.

Писать доку лучше на одном языке. Почему? Потому, что парсер решит все проблемы. Если есть время и не крутить костыли, то можно накидать парсер, который сделает строение в виде дерева, а затем делать с данными все что захочешь, можно хоть в десять видов в 20 форматах выводить, с кодом, без, переводить в другие форматы и т.д.

По сути тут ничего нового. Код - это тот же текст и поддается разбору и структурированию во что угодно.

Если линковка невозможна, то можно ставить свои линки id-шники. Лучше, конечно привязываться к названию метода, app.method.get, но и id тоже возможно, но их лучше генерить. В общем самое слабое место, это линковка. Если код не структурированный, то его нужно как-то линковать, т.к. методы могут переноситься, переназываться и т.д.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.

Последний раз редактировалось Gozar, 30.09.2014 в 17:23.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как реализовать эффект lazyload sanek.me Events/DOM/Window 21 15.02.2017 12:31
как реализовать передачу функции в функцию?? czp Общие вопросы Javascript 10 29.11.2011 19:21
Как реализовать взаимодействие окон? JSTalker ExtJS 1 29.06.2010 14:29
Как реализовать вывод такого окна nastya Events/DOM/Window 4 04.02.2010 05:41
Как реализовать? Fliand Элементы интерфейса 4 22.08.2009 19:47