2014-02-10 3 views
1

Я должен признать, что я новичок в AsciiDoc и ASciiDoctor ...Попытка получить включает в себя работу с AsciiDoc Java интерфейс

То, что я пытаюсь сделать это, чтобы сделать данный шаблон AsciiDoc (https://github.com/masch70/arc42-template-asciidoc) с заводной. Моим решением является использование интерфейса 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/#include-directive, так что вопрос в том, что я делаю неправильно?

ответ

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' 
]) 

См. Running AsciiDoctor Securely для получения более подробной информации.

UPDATE
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) 

Посетите этот package from asciidoctor java integration, и это будет в значительной степени ясно, как вещи могут быть легко адаптированы.

+0

большой! это сработало. Может быть, у вас есть еще один намек на точечные номера и номера разделов? Командный вызов 'asciidoc' clie имел параметр' -a toc2' и '-n' - и я не знаю, как правильно перевести. '' section-numbers ': true', похоже, не работает ... – rdmueller

+0

Да, потому что это атрибуты. Посмотрите мое обновление. @Ralf – dmahapatro

+0

Отлично. Это было именно то знание, которое мне не хватало. Thanx! – rdmueller

1

Предлагаю вам попробовать asciidoctor gradle plugin.

+0

плагин asciidoctor gradle отлично, но в этом случае я хотел избежать внешних зависимостей. BTW: плагин является одним из тех плагинов, где я не знаю, какие выгоды я получаю. Размер кода кажется мне равным ... – rdmueller

 Смежные вопросы

  • Нет связанных вопросов^_^