class NotionRb::Utils::Parser
Public Class Methods
new(value, position)
click to toggle source
# File lib/notion_rb/utils/parser.rb, line 8 def initialize(value, position) unless valid_block_type?(value['type']) raise ArgumentError, 'Invalid block type' end @value = value @position = position @parser = select_parser @value['type'] end
Public Instance Methods
parse()
click to toggle source
# File lib/notion_rb/utils/parser.rb, line 18 def parse @parser == :null ? null : base end
Private Instance Methods
base()
click to toggle source
# File lib/notion_rb/utils/parser.rb, line 28 def base { notion_id: @value['id'], block_type: @value['type'], title: @value.dig('properties', 'title', 0, 0), parent_id: @value['parent_id'], position: @position, children: (@value['content'] || []), metadata: send("metadata_#{@parser}".to_sym) } end
metadata_base()
click to toggle source
# File lib/notion_rb/utils/parser.rb, line 40 def metadata_base { properties: (@value.dig('properties') || {}), color: (@value.dig('properties', 'title', 0, 1, 0, 1) || 'black'), block_color: (@value.dig('format', 'block_color') || 'white') } end
metadata_bookmark()
click to toggle source
# File lib/notion_rb/utils/parser.rb, line 66 def metadata_bookmark metadata_base.merge( source: @value.dig('properties', 'link', 0, 0) ) end
metadata_callout()
click to toggle source
# File lib/notion_rb/utils/parser.rb, line 72 def metadata_callout metadata_base.merge( page_icon: @value.dig('format', 'page_icon') ) end
metadata_code()
click to toggle source
# File lib/notion_rb/utils/parser.rb, line 54 def metadata_code metadata_base.merge( language: @value.dig('properties', 'language', 0, 0)&.downcase ) end
metadata_collection()
click to toggle source
# File lib/notion_rb/utils/parser.rb, line 93 def metadata_collection { schema: @value.dig('schema') } end
metadata_collection_view()
click to toggle source
# File lib/notion_rb/utils/parser.rb, line 86 def metadata_collection_view { collection_id: @value.dig('collection_id'), view_ids: @value.dig('view_ids') } end
metadata_embed()
click to toggle source
# File lib/notion_rb/utils/parser.rb, line 60 def metadata_embed metadata_base.merge( source: @value.dig('properties', 'source', 0, 0) ) end
metadata_image()
click to toggle source
# File lib/notion_rb/utils/parser.rb, line 78 def metadata_image metadata_base.merge( source: @value.dig('properties', 'source', 0, 0), caption: @value.dig('properties', 'caption', 0, 0), format: @value.dig('format') ) end
metadata_todo()
click to toggle source
# File lib/notion_rb/utils/parser.rb, line 48 def metadata_todo metadata_base.merge( checked: @value.dig('properties', 'checked', 0, 0) == 'Yes' ) end
null()
click to toggle source
# File lib/notion_rb/utils/parser.rb, line 24 def null {} end