Попытка получить включает в себя работу с 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, и вам будет довольно ясно, как все можно легко адаптировать.