やりたいこと
- ある条件に基づき、情報の出し分けをしたい
- 以前にAsciiDocのファイルを結合して表示するで投稿したような感じで、例えば都道府県について纏めたが、情報量を変化させることをしたい。
 
やったこと
- 出し分けできるようにするには、パッと思いつくこととしてIF文みたいなものが使えないか?になる。
- そこで、検索キーワードして"Asciidoc IF"で調べたところ
- Conditionalsのサイトがヒットした
- ほかのサイトを見たが、コードを表現するための書き方の中にある各言語のIF文だった
 
- 上記のことから、Conditionalsのサイトを読んでみた
 
- そこで、検索キーワードして"Asciidoc IF"で調べたところ
- 
ifdefであればやりたいことができそうだったので、トライしてみた- 
ifdefの後に任意の属性を定義して、endif::[]で記載した間にコンテンツを記載するということだったので、書いてみた。- 表に行を追加して、条件を満たした場合に、人口の情報に関する表示ができるようにする
 
 
- 
:imagesdir: ./images
= 北海道・東北地方
北海道・東北地方は、北海道、青森県、秋田県、岩手県、山形県、宮城県、福島県の1道6県を指します。
気象予報などでは、北日本の区分に位置し、日本を東西に分けると東日本に位置する。 +
各県の形と県庁所在地を纏めておく。
== 北海道
[cols="1,2a", width=70%]
|===
^|県庁所在地 ^|札幌市 
^.^|地図 ^|image::hokkaido.png["北海道", 50%]
ifdef::MAPDETAIL[]
^|人口 | 5,224,614人 (8位)
endif::[]
|===
- 
属性を定義したが、この属性はどこからくるのかを考えると、定義されていないことに気づき、2行目に :MAPDETAIL:と定義してみた。
:imagesdir: ./images
:MAPDETAIL:
= 北海道・東北地方
北海道・東北地方は、北海道、青森県、秋田県、岩手県、山形県、宮城県、福島県の1道6県を指します。
気象予報などでは、北日本の区分に位置し、日本を東西に分けると東日本に位置する。 +
各県の形と県庁所在地を纏めておく。
== 北海道
[cols="1,2a", width=70%]
|===
^|県庁所在地 ^|札幌市 
^.^|地図 ^|image::hokkaido.png["北海道", 50%]
ifdef::MAPDETAIL[]
^|人口 | 5,224,614人 (8位)
endif::[]
|===
追加で試したこと1
- 
ifdefは複数の属性を指定することができることがわかった、パターンが異なる場合に指定することでコントロールできることがわかった- 書き方としては、以下のような形で記載すれば、切り替えて使うことができました
 
:imagesdir: ./images
:MAPDETAIL1:
:MAPDETAIL2:
= 北海道・東北地方
北海道・東北地方は、北海道、青森県、秋田県、岩手県、山形県、宮城県、福島県の1道6県を指します。
気象予報などでは、北日本の区分に位置し、日本を東西に分けると東日本に位置する。 +
各県の形と県庁所在地を纏めておく。
== 北海道
[cols="1,2a", width=70%]
|===
^|県庁所在地 ^|札幌市 
^.^|地図 ^|image::hokkaido.png["北海道", 50%]
ifdef::MAPDETAIL1,MAPDETAIL2[]
^|人口 | 5,224,614人 (8位)
endif::[]
|===
追加で試したこと2
- 
ifevalを使うことで、属性の持つ値を演算子を使って評価して、表示をコントロールすることができることも分かった。- 記載の仕方も、ifdefとあまり書き方は変わらなかった。
- 扱う値が文字列か数値かで表現が変わるので注意が必要だった
 
- 記載の仕方も、
数値を条件にした場合
:imagesdir: ./images
:MAPVAL: 4
= 北海道・東北地方
北海道・東北地方は、北海道、青森県、秋田県、岩手県、山形県、宮城県、福島県の1道6県を指します。
気象予報などでは、北日本の区分に位置し、日本を東西に分けると東日本に位置する。 +
各県の形と県庁所在地を纏めておく。
== 北海道
[cols="1,2a", width=70%]
|===
^|県庁所在地 ^|札幌市 
^.^|地図 ^|image::hokkaido.png["北海道", 50%]
ifeval::[{MAPVAL} >3 ]
^|人口 | 5,224,614人 (8位)
endif::[]
|===
文字列を条件にした場合
:imagesdir: ./images
:MAPVAL: "ON"
= 北海道・東北地方
北海道・東北地方は、北海道、青森県、秋田県、岩手県、山形県、宮城県、福島県の1道6県を指します。
気象予報などでは、北日本の区分に位置し、日本を東西に分けると東日本に位置する。 +
各県の形と県庁所在地を纏めておく。
== 北海道
[cols="1,2a", width=70%]
|===
^|県庁所在地 ^|札幌市 
^.^|地図 ^|image::hokkaido.png["北海道", 50%]
ifeval::["{MAPVAL}" == "ON" ]
^|人口 | 5,224,614人 (8位)
endif::[]
|===
まとめ
- 
AsciiDocに書くべき情報の全てを記載しておき、条件をうまく使って、標準版、拡張版、縮小版などのコントロールを上位のAsciiDocファイルから属性を渡せば、目的別にAsciiDocファイルを作り出して出力することができることがわかった




