Как да включите кодови извадки с помощта на тагове в 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 (Реализация на Ruby на AsciiDoc), но не и 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