Как включить фрагменты кода с помощью тегов в asciidoc?

Я могу включить полный Greet.java файл

public class Greet {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

из файла asciidoc

== Hello Java
This is how one greets in Java:

[source,java]
.Greet.java
----
include::Greet.java
----

подготовка документации

adocked-greet-java1.png

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

Я не вижу символических тегов в документации, но эта страница предполагает, что достаточно написать

public class Greet {
    // tag::helloMethod[]
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
    // end::helloMethod[]
}

а также

== Hello Java
This is how one greets in Java:

[source,java]
.Greet.java
----
include::Greet.java[tags=helloMethod]
----

Это просто производит:

adocked-greet-java2.png

Можете ли вы предложить метод, который включал бы только отрывок? Я использую asciidoc 8.6.9.


person Calaf    schedule 17.02.2015    source источник


Ответы (2)


То, что вы делаете, должно нормально работать в Asciidoctor (Реализация AsciiDoc на Ruby), но не AsciiDoc (реализация Python).

Обратите внимание на другой механизм подсветки синтаксиса.

Чтобы получить подсветку синтаксиса с помощью asciidoc, используется переключатель командной строки asciidoc -a source-highlighter=pygments file.adoc.

Переключатель командной строки не требуется (или невозможен) с Asciidoctor. Подсветка синтаксиса AsciiDoctor достигается следующим образом:

  1. Вставка :source-highlighter: pygments вверху каждого исходного файла и
  2. Запуск sudo gem install pygments.rb для установки pygments.
person LightGuard    schedule 19.02.2015

Параметр Asciidoctor tags также может включать несколько тегов;

[tags="tag 1, tag 2, …"]

Добавление большего количества фрагментов кода за один раз…

person Mikael Andersson Wigander    schedule 30.07.2021