1

私は AsciiDoc と ASciiDoctor を初めて使用することを認めなければなりません...

私が達成しようとしているのは、特定の AsciiDoc テンプレート ( https://github.com/masch70/arc42-template-asciidoc ) を groovy でレンダリングすることです。私の解決策は、jRuby で動作する AsciiDoc を書き直したように見える AsciiDoctor Java Interface を利用することです。これまでのところ、コードは正常に実行されます。

@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

4

2 に答える 2

2

safeオプションも追加。デフォルトではsafe、API のオプションはSECUREor 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 を安全に実行するを参照してください。

UPDATE
tocsection numbersCLI の属性は、必要な属性をオプションに追加するだけです。

最も簡単な方法:

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 統合からこのパッケージにアクセスすると、どのように簡単に調整できるかがかなり明確になります。

于 2014-02-10T23:26:47.357 に答える