Javadoc: розриви рядків без HTML-тегів?


81

Вибачте за ймовірне запитання типу FAQ, але я просто не можу знайти відповідь.

Наскільки я пам’ятаю Eclipse, порожній рядок у коментарі Javadoc відображається (у спливаючих вікнах Javadoc) як розрив рядка (з додатковим вертикальним інтервалом).

Однак у Netbeans це не так.

Чи можу я налаштувати Javadoc на інтерпретацію порожнього рядка як розриву рядка?

Додаткове запитання: Чи можу я замінити поведінку Netbeans за замовчуванням (пов’язану з цим) для спливаючих вікон Javadoc, що входять до джерела?

Я кажу про:

Джерело

/**
 * Paragraph One
 *
 * Paragraph Two
 */
 void someMethod() { }

Інтерпретація затемнення

 Paragraph One

 Paragraph Two

Інтерпретація Netbeans

 Paragraph One Paragraph Two

1
Багато з цих відповідей зараз застаріли (замінено) NetBeans8.2, див. Відповідь від @fujy нижче, вона чудово працює.
Webel IT Australia - голос проти

Відповіді:


80

Це не має нічого спільного з Netbeans. Я підозрюю, що ви дивитесь на вихідний код в одному випадку і вихід Javadoc в іншому випадку. Newlines не є значущими в HTML: Ergo виходу не буде показувати їх. Якщо ви хочете новий рядок, використовуйте a <p>або a <br>.


4
Як я вже згадував у питанні, Eclipse справді розглядає порожні рядки як абзаци. Тож я припускаю, що це має бути можливим за допомогою якоїсь конфігурації javadoc (Netbeans або без).
java.is.for.desktop

Eclipse показує вам вихідний код, проте він відформатований. Netbeans 6.9.1 також показує вам вихідний код, так само, тобто він також не ігнорує розриви рядків. Однак якщо ви дивитесь на вихід Javadoc будь-якими способами, якщо це буде неправильно, це означає не ігнорувати розриви рядків.
user207421

40

Я не впевнений, чи це допомагає справі OP, проте я поклав <pre></pre>свій документ, щоб netbean не заплутував моє форматування. Так це буде виглядати

/**
 * <pre>
 * Paragraph One
 *
 * Paragraph Two
 * </pre>
 */

Це найближче до показу нових рядків у текстовому форматі. Я використовую NetBeans 7.1.2. Таким чином, використання code formatопції не переформатує документ. Показ документа в підказках все ще відформатований.

Оновлення: у Netbeans 8.x у форматуванні коду є можливість вимкнути форматування коментарів.


13

Уже є опція, NetBeansпротестована у версії 8.2, яка дозволяє зберегти нові рядки у коментарях та / або додати <p>тег до вашого, Javadocякщо потрібно

  • Просто з Toolsменю, вибравOptions
  • Перейдіть на Editorвкладку, потім на Formattingвкладку
  • В Languageменю вибрав Java, а в Categoryменю вибравComments
  • Поставте Preserve New Linesпрапорець у Generalрозділі, якщо ви хочете зберегти нові рядки у своїх коментарях. Це збереже нові рядки без додавання <p>тегу
  • Поставте Generate "<p>" on Blank Linesпрапорець у Javadocрозділі, якщо ви також хочете додати <p>тег .

введіть тут опис зображення


2
Безумовно, найкраща відповідь wrt NetBeans 8.2. Легко. Але, будь ласка, відредагуйте його, щоб додати, що він фактично запускається лише тоді, коли ви виконуєте Форматування на коді (з існуючими розривами рядків). Потрібно бути обережним, якщо їх там уже <p>є від руки, це може іноді додати подвійний <p>``<p>перший раз. Після цього він працює, як очікувалося.
Webel IT Australia - голос проти

4

Я згоден з вами, HTML не належить до вихідного коду. На жаль, я не знайшов особливої ​​допомоги, гуглюючи навколо цього. Насправді це досить просто реалізувати.

Ось спеціальний Doclet, який ви можете скомпілювати та використовувати:

import com.sun.javadoc.*;
import com.sun.tools.doclets.standard.*;

/**
 * Formats text-only comments with HTML.
 */
@SuppressWarnings("restriction")
public final class TextDoclet {
    private static final Pattern NEWLINE_REGEX = Pattern.compile("\\n");
    private static final String BR = "<br/>\n";

    public static boolean start(RootDoc rootDoc) {
        for ( ClassDoc classdoc : rootDoc.classes())
            classdoc.setRawCommentText(formatText(classdoc.getRawCommentText()));

        return Standard.start(rootDoc);     
    }

    private static String formatText(String text) {
        return NEWLINE_REGEX.matcher(text).replaceAll(BR);
    }
}

Приклад того, як його викликати за допомогою javadoc:

javadoc -docletpath ~/project/text-doclet/target/text-doclet-1.0.0-SNAPSHOT.jar -doclet com.myorg.textdoclet.TextDoclet -sourcepath ~/project/myapp/src/main/java -subpackages com.myorg.myapp

2

JavaDoc відображає спосіб визначення стилів CSS. Для цього ви можете редагувати стилі CSS, пов’язані з тегами абзаців:

p {
    line-height: 25px;
}

1
Дякую, але я впевнений, що Netbeans взагалі не трактує порожній рядок як абзац (див. "Інтерпретація Netbeans" у моєму запитанні). Я маю на увазі: ви можете визначити інтервал між рядками, лише якщо у вас є рядки.
java.is.for.desktop

Хм Я побачив, що. Але не зовсім впевнений, чи надає Netbeans можливість редагувати це.
adarshr

2

Це псевдорішення
(який , до жаль , впливає тільки на згенерований Javadoc, але робить НЕ впливає на відображення javadoc у джерелі Netbeans).

Вкажіть таблицю стилів, яка містить наступне:

div.block {
    white-space: pre;
}

0

Я поняття не маю , що робить тут затемнення, але якщо ви хочете це поведінка в цілому (не тільки IDE), можливо , доведеться створити новий Doclet (який може бути заснований на за замовчуванням HTML доклет) замість цього, там вставляючи <p>в кожен порожній рядок або подібне.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.