Попытка получить включает в себя работу с AsciiDoc Java Interface

Я должен признать, что я новичок в AsciiDoc и ASciiDoctor...

То, что я пытаюсь сделать, это сделать данный шаблон AsciiDoc ( https://github.com/masch70/arc42-template-asciidoc) с помощью groovy. Мое решение состоит в том, чтобы использовать Java-интерфейс AsciiDoctor, который, кажется, переписывает AsciiDoc, работающий с jRuby. Пока код работает нормально:

@Grab('org.asciidoctor:asciidoctor-java-integration:0.1.4')
import org.asciidoctor.*
def asciidoctor = Asciidoctor.Factory.create()
def output = asciidoctor.renderFile(new File('index.ad'),[
'in_place':true,
'section-numbers':true,
'header_footer':true,
])

но кажется, что он игнорирует включаемые разделы, которые выглядят довольно хорошо для меня:

include::sections/02_architecture_constraints.ad[]

Вместо включения файла ссылка на файл отображается.

В руководстве AsciiDoctor сказано, что поддерживаются: http://asciidoctor.org/docs/user-manual/, поэтому вопрос в том, что я делаю не так?

2 ответа

Решение

Добавить safe вариант также. По умолчанию safe опция для API есть SECURE или 20 (целочисленное значение), которое отключает include директивы должны быть предоставлены. Вы можете использовать любую из следующих пар ключ-значение:

'safe':'SAFE'
'safe': 1

'safe':'SERVER'
'safe': 10

'safe':'UNSAFE' //If you want
'safe': 0

Ниже должно работать.

def output = asciidoctor.renderFile(new File('index.ad'),[
'in_place':true,
'header_footer':true,
'safe':'SAFE'
])

Обратитесь к разделу Запуск AsciiDoctor безопасно для получения более подробной информации.

ОБНОВИТЬ
toc а также section numbers являются атрибутами в CLI, поэтому нам просто нужно добавить обязательные атрибуты в опции.

Самый простой способ:

def output = asciidoctor.renderFile(new File('index.ad'),[
'in_place':true,
'header_footer':true,
'safe':'SAFE',
'attributes': [toc: true, numbered: true] //I suppose
])

Но вышесказанное тесно связано с базовыми реализациями ascii doc, которые мы хотели в первую очередь абстрагировать. Asciidoctor предоставляет полезные шаблоны Builder для преодоления этого беспорядка.

import static org.asciidoctor.AttributesBuilder.attributes
import static org.asciidoctor.OptionsBuilder.options
import org.asciidoctor.Placement

Attributes attributes = attributes().tableOfContents(true)
                                    .tableOfContents2(Placement.LEFT)
                                    .sectionNumbers(true)
                                    .get()

Options options = options().inPlace(true)
                           .headerFooter(true)
                           .attributes(attributes)
                           .get()

def output = asciidoctor.renderFile(new File('index.ad'), options)

Посетите этот пакет из интеграции asciidoctor с Java, и вам будет довольно ясно, как все можно легко адаптировать.

Я советую вам попробовать плагин graci от asciidoctor.

Другие вопросы по тегам