ToggleBlock: NotionRubyMapping 解説 (16)

はじめに

NotionRubyMapping 解説の第16回目です。今日もほぼこれまでと同様の形式を持つ ToggleBlock を解説します。今日紹介する ToggleBlock も TextSubBlockColorBaseBlock というクラスの子クラスです。今日の作業ページはこちらです。

hkob.notion.site

あらかじめページを取得しておきます。

irb(main):002> page = Page.find "https://hkob.notion.site/ToggleBlock-16-1e25b2cf9a5148ddb720c3dcf9e89875?pvs=4"
=> NotionRubyMapping::Page-1e25b2cf9a5148ddb720c3dcf9e89875

ToggleBlock

ToggleBlock は開閉できるトグルを持つテキストブロックです。 text_infocolor が設定できるのは ParagraphBlock と同様です。

irb(main):003> t_a = page.append_block_children ToggleBlock.new("A", color: "blue")
=> NotionRubyMapping::ToggleBlock-28b299e0926544c384bcd43c1eefdd29

実行した結果以下のようなトグルブロックが用意されました。

A

ToggleBlock は子ブロックとして、下位のブロックを持つことができます。今作ったトグルの下に A-1 というトグルを追加してみます。

irb(main):004> t_a.append_block_children ToggleBlock.new("A-1")
=> NotionRubyMapping::ToggleBlock-53a93639f6414b2e87750c74c4bc7636

結果は以下のようになりました。BulletedListItemBlock と同様に色を指定しないと親と同じ色になるのですね。

A-1

ToggleBlock も作成時に sub_blocks を指定できます。

irb(main):005> t_b = page.append_block_children ToggleBlock.new("B", sub_blocks:
[ToggleBlock.new("B-1"), ToggleBlock.new("B-2")])
=> NotionRubyMapping::ToggleBlock-233eadbf92bf47739ecefecfbf47e29a

結果は以下のようになりました。最初から階層的なトグルブロックが記述できました。

B

ParagraphBlock と同様に color = で色を変更できます。

irb(main):006> t_b.color = "green"
=> "green"
irb(main):007> t_b.save
=> NotionRubyMapping::ToggleBlock-233eadbf92bf47739ecefecfbf47e29a

結果はこんな感じになりました。

BC1

トグルの記号は色が変わっていますが、テキストは色が変わっていませんでした。rich_text_array で色を変更してみます。

irb(main):008> t_b.rich_text_array
=>
#<NotionRubyMapping::RichTextArray:0x0000000126c153f0
 @key="rich_text",
 @rich_text_objects=
  [#<NotionRubyMapping::TextObject:0x00000001279701f8
    @options=
     {"plain_text"=>"B",
      "bold"=>false,
      "italic"=>false,
      "strikethrough"=>false,
      "underline"=>false,
      "code"=>false,
      "color"=>"default",
      "href"=>nil},
    @text="B",
    @type="text",
    @will_update=false>],
 @will_update=true>
irb(main):009> t_b.rich_text_array.first.color = "green"
=> "green"
irb(main):010> t_b.save
=> NotionRubyMapping::ToggleBlock-233eadbf92bf47739ecefecfbf47e29a

これでテキストも色が変わりました。

BC2

おわりに

今回は ToggleBlock を解説してみました。TextSubBlockColorBaseBlock の子クラスなので、これまで解説していたものと同じ機能があることがわかります。

ToggleBlock のマニュアルはこちら。

hkob.notion.site

NotionRubyMapping解説