2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AsciiDocで条件で表示したい内容を変える方法

Posted at

やりたいこと

  • ある条件に基づき、情報の出し分けをしたい

やったこと

  • 出し分けできるようにするには、パッと思いつくこととしてIF文みたいなものが使えないか?になる。
    • そこで、検索キーワードして"Asciidoc IF"で調べたところ
      • Conditionalsのサイトがヒットした
      • ほかのサイトを見たが、コードを表現するための書き方の中にある各言語のIF文だった
    • 上記のことから、Conditionalsのサイトを読んでみた
  • 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::[]
|===
  • 上記のように:MAPDETAIL: を記載したところ、人口の情報を表示することが以下のようにできました。
         

追加で試したこと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ファイルを作り出して出力することができることがわかった

参考情報

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?