Class: Notion::Blocks::Chunker

Inherits:
Object
  • Object
show all
Defined in:
lib/notion/blocks/chunker.rb

Constant Summary collapse

MAX_CHILDREN =
100
MAX_BYTES =
500_000
MAX_BLOCKS =
1000

Instance Method Summary collapse

Constructor Details

#initialize(children, on_oversize: :split) ⇒ Chunker

Returns a new instance of Chunker.

Raises:

  • (ArgumentError)


12
13
14
15
16
17
# File 'lib/notion/blocks/chunker.rb', line 12

def initialize(children, on_oversize: :split)
  raise ArgumentError, "on_oversize must be :split or :raise" unless %i[split raise].include?(on_oversize)

  @on_oversize = on_oversize
  @children = transform(children)
end

Instance Method Details

#chunksObject



19
20
21
22
23
24
25
26
27
# File 'lib/notion/blocks/chunker.rb', line 19

def chunks
  @children.each_with_object([[]]) do |child, groups|
    raise ValidationError, "a block exceeds the 500KB request limit" if bytes([child]) > MAX_BYTES
    raise ValidationError, "a block tree exceeds the 1000 block limit" if block_count(child) > MAX_BLOCKS

    groups << [] if full?(groups.last, child)
    groups.last << child
  end.reject(&:empty?)
end