notion_ruby_mapping 0.4.1 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +16 -14
- data/examples/change_title.md +1 -1
- data/examples/renumbering_pages.md +3 -3
- data/examples/set_icon_to_all_icon_unsettled_pages.md +4 -4
- data/lib/notion_ruby_mapping/blocks/base.rb +11 -13
- data/lib/notion_ruby_mapping/blocks/block.rb +67 -487
- data/lib/notion_ruby_mapping/blocks/bookmark_block.rb +11 -0
- data/lib/notion_ruby_mapping/blocks/breadcrumb_block.rb +19 -0
- data/lib/notion_ruby_mapping/blocks/bulleted_list_item_block.rb +11 -0
- data/lib/notion_ruby_mapping/blocks/callout_block.rb +82 -0
- data/lib/notion_ruby_mapping/blocks/child_base_block.rb +21 -0
- data/lib/notion_ruby_mapping/blocks/child_database_block.rb +11 -0
- data/lib/notion_ruby_mapping/blocks/child_page_block.rb +11 -0
- data/lib/notion_ruby_mapping/blocks/code_block.rb +50 -0
- data/lib/notion_ruby_mapping/blocks/column_block.rb +29 -0
- data/lib/notion_ruby_mapping/blocks/column_list_block.rb +33 -0
- data/lib/notion_ruby_mapping/blocks/database.rb +7 -1
- data/lib/notion_ruby_mapping/blocks/divider_block.rb +19 -0
- data/lib/notion_ruby_mapping/blocks/embed_block.rb +11 -0
- data/lib/notion_ruby_mapping/blocks/equation_block.rb +43 -0
- data/lib/notion_ruby_mapping/blocks/file_base_block.rb +50 -0
- data/lib/notion_ruby_mapping/blocks/file_block.rb +11 -0
- data/lib/notion_ruby_mapping/blocks/heading1_block.rb +18 -0
- data/lib/notion_ruby_mapping/blocks/heading2_block.rb +18 -0
- data/lib/notion_ruby_mapping/blocks/heading3_block.rb +18 -0
- data/lib/notion_ruby_mapping/blocks/image_block.rb +11 -0
- data/lib/notion_ruby_mapping/blocks/link_preview_block.rb +16 -0
- data/lib/notion_ruby_mapping/blocks/link_to_page_block.rb +40 -0
- data/lib/notion_ruby_mapping/blocks/list.rb +2 -3
- data/lib/notion_ruby_mapping/blocks/numbered_list_item_block.rb +11 -0
- data/lib/notion_ruby_mapping/blocks/page.rb +6 -0
- data/lib/notion_ruby_mapping/blocks/paragraph_block.rb +11 -0
- data/lib/notion_ruby_mapping/blocks/pdf_block.rb +11 -0
- data/lib/notion_ruby_mapping/blocks/quote_block.rb +11 -0
- data/lib/notion_ruby_mapping/blocks/synced_block.rb +44 -0
- data/lib/notion_ruby_mapping/blocks/table_block.rb +50 -0
- data/lib/notion_ruby_mapping/blocks/table_of_contents_block.rb +34 -0
- data/lib/notion_ruby_mapping/blocks/table_row_block.rb +34 -0
- data/lib/notion_ruby_mapping/blocks/template_block.rb +34 -0
- data/lib/notion_ruby_mapping/blocks/text_sub_block_color_base_block.rb +45 -0
- data/lib/notion_ruby_mapping/blocks/to_do_block.rb +42 -0
- data/lib/notion_ruby_mapping/blocks/toggle_block.rb +11 -0
- data/lib/notion_ruby_mapping/blocks/toggle_heading1_block.rb +11 -0
- data/lib/notion_ruby_mapping/blocks/toggle_heading2_block.rb +11 -0
- data/lib/notion_ruby_mapping/blocks/toggle_heading3_block.rb +11 -0
- data/lib/notion_ruby_mapping/blocks/url_base_block.rb +34 -0
- data/lib/notion_ruby_mapping/blocks/url_caption_base_block.rb +46 -0
- data/lib/notion_ruby_mapping/blocks/video_block.rb +11 -0
- data/lib/notion_ruby_mapping/controllers/notion_cache.rb +26 -20
- data/lib/notion_ruby_mapping/controllers/payload.rb +32 -18
- data/lib/notion_ruby_mapping/controllers/query.rb +1 -1
- data/lib/notion_ruby_mapping/controllers/rich_text_array.rb +13 -2
- data/lib/notion_ruby_mapping/objects/rich_text_object.rb +2 -5
- data/lib/notion_ruby_mapping/properties/created_by_property.rb +1 -0
- data/lib/notion_ruby_mapping/properties/date_base_property.rb +24 -11
- data/lib/notion_ruby_mapping/properties/email_property.rb +1 -2
- data/lib/notion_ruby_mapping/properties/files_property.rb +1 -1
- data/lib/notion_ruby_mapping/properties/formula_property.rb +1 -1
- data/lib/notion_ruby_mapping/properties/multi_select_property.rb +2 -0
- data/lib/notion_ruby_mapping/properties/phone_number_property.rb +0 -1
- data/lib/notion_ruby_mapping/properties/select_property.rb +2 -1
- data/lib/notion_ruby_mapping/properties/url_property.rb +0 -2
- data/lib/notion_ruby_mapping/version.rb +1 -1
- data/lib/notion_ruby_mapping.rb +8 -1
- metadata +41 -2
@@ -0,0 +1,50 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module NotionRubyMapping
|
4
|
+
# Notion block
|
5
|
+
class TableBlock < Block
|
6
|
+
# @param [Integer] table_width
|
7
|
+
# @param [Boolean] has_column_header
|
8
|
+
# @param [Boolean] has_row_header
|
9
|
+
# @param [Array<Array<Object>>] table_rows
|
10
|
+
# @param [Hash] json
|
11
|
+
# @param [Integer] id
|
12
|
+
# @param [Integer] parent
|
13
|
+
def initialize(table_width: nil, has_column_header: false, has_row_header: false, table_rows: nil, json: nil, id: nil,
|
14
|
+
parent: nil)
|
15
|
+
super json: json, id: id, parent: parent
|
16
|
+
if @json
|
17
|
+
sub_json = @json[type]
|
18
|
+
@has_column_header = sub_json["has_column_header"]
|
19
|
+
@has_row_header = sub_json["has_row_header"]
|
20
|
+
@table_width = sub_json["table_width"]
|
21
|
+
else
|
22
|
+
@table_width = table_width
|
23
|
+
@has_column_header = has_column_header
|
24
|
+
@has_row_header = has_row_header
|
25
|
+
if table_rows
|
26
|
+
@table_rows = table_rows.map do |table_row|
|
27
|
+
TableRowBlock.new table_row, @table_width
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
@can_have_children = true
|
32
|
+
end
|
33
|
+
|
34
|
+
def block_json(not_update: true)
|
35
|
+
ans = super
|
36
|
+
ans[type] = {
|
37
|
+
"has_column_header" => @has_column_header,
|
38
|
+
"has_row_header" => @has_row_header,
|
39
|
+
"table_width" => @table_width,
|
40
|
+
}
|
41
|
+
ans[type]["children"] = @table_rows.map(&:block_json) if @table_rows
|
42
|
+
ans
|
43
|
+
end
|
44
|
+
|
45
|
+
# @return [String (frozen)]
|
46
|
+
def type
|
47
|
+
"table"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module NotionRubyMapping
|
4
|
+
# Notion block
|
5
|
+
# @param [String] color
|
6
|
+
class TableOfContentsBlock < Block
|
7
|
+
def initialize(color = "default", json: nil, id: nil, parent: nil)
|
8
|
+
super(json: json, id: id, parent: parent)
|
9
|
+
if @json
|
10
|
+
decode_color
|
11
|
+
else
|
12
|
+
@color = color
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def color=(new_color)
|
17
|
+
@color = new_color
|
18
|
+
@payload.add_update_block_key "color"
|
19
|
+
end
|
20
|
+
|
21
|
+
# @return [String (frozen)]
|
22
|
+
def type
|
23
|
+
"table_of_contents"
|
24
|
+
end
|
25
|
+
|
26
|
+
# @param [Boolean] not_update false when update
|
27
|
+
# @return [Hash{String (frozen)->Hash}]
|
28
|
+
def block_json(not_update: true)
|
29
|
+
ans = super
|
30
|
+
ans[type] = {"color" => @color}
|
31
|
+
ans
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module NotionRubyMapping
|
4
|
+
# Notion block
|
5
|
+
class TableRowBlock < Block
|
6
|
+
# @param [Array<Array<String, TextObject>>] array_array_of_text_objects
|
7
|
+
# @param [Integer] table_width
|
8
|
+
def initialize(array_array_of_text_objects = [], table_width = 3, json: nil, id: nil, parent: nil)
|
9
|
+
super json: json, id: id, parent: parent
|
10
|
+
if @json
|
11
|
+
@cells = @json[type]["cells"].map { |cell| cell.map { |to| RichTextObject.create_from_json to } }
|
12
|
+
else
|
13
|
+
cc = array_array_of_text_objects.count
|
14
|
+
raise StandardError, "table width must be #{table_width} (given array size is #{cc}" unless table_width == cc
|
15
|
+
|
16
|
+
@cells = array_array_of_text_objects.map do |cell|
|
17
|
+
Array(cell).map { |text_info| TextObject.text_object text_info }
|
18
|
+
end
|
19
|
+
end
|
20
|
+
@can_have_children = false
|
21
|
+
end
|
22
|
+
|
23
|
+
def block_json(not_update: true)
|
24
|
+
ans = super
|
25
|
+
ans[type] = {"cells" => @cells.map { |cell| Array(cell).map(&:property_values_json) }}
|
26
|
+
ans
|
27
|
+
end
|
28
|
+
|
29
|
+
# @return [String (frozen)]
|
30
|
+
def type
|
31
|
+
"table_row"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module NotionRubyMapping
|
4
|
+
# Notion block
|
5
|
+
class TemplateBlock < Block
|
6
|
+
# @param [RichTextArray, String, Array<String>, RichTextObject, Array<RichTextObject>] text_info
|
7
|
+
# @param [NotionRubyMapping::Block, Array<NotionRubyMapping::Block>, nil] sub_blocks
|
8
|
+
def initialize(text_info = nil, sub_blocks: nil, json: nil, id: nil, parent: nil)
|
9
|
+
super(json: json, id: id, parent: parent)
|
10
|
+
if @json
|
11
|
+
decode_block_rich_text_array
|
12
|
+
else
|
13
|
+
rich_text_array_and_color "rich_text", text_info, nil
|
14
|
+
add_sub_blocks sub_blocks
|
15
|
+
end
|
16
|
+
@can_have_children = true
|
17
|
+
end
|
18
|
+
|
19
|
+
attr_reader :rich_text_array
|
20
|
+
|
21
|
+
# @param [Boolean] not_update false when update
|
22
|
+
# @return [Hash{String (frozen)->Hash}]
|
23
|
+
def block_json(not_update: true)
|
24
|
+
ans = super
|
25
|
+
ans[type] = @rich_text_array.update_property_schema_json not_update
|
26
|
+
ans[type]["children"] = @sub_blocks.map(&:block_json) if @sub_blocks
|
27
|
+
ans
|
28
|
+
end
|
29
|
+
|
30
|
+
def type
|
31
|
+
"template"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module NotionRubyMapping
|
4
|
+
# Notion block
|
5
|
+
class TextSubBlockColorBaseBlock < Block
|
6
|
+
# @param [RichTextArray, String, Array<String>, RichTextObject, Array<RichTextObject>, nil] text_info
|
7
|
+
# @param [String] color
|
8
|
+
# @param [NotionRubyMapping::Block, Array<NotionRubyMapping::Block>, nil] sub_blocks
|
9
|
+
def initialize(text_info = nil, sub_blocks: nil, color: "default", json: nil, id: nil, parent: nil)
|
10
|
+
raise StandardError, "TextSubBlockColorBaseBlock is abstract class" if instance_of?(TextSubBlockColorBaseBlock)
|
11
|
+
|
12
|
+
super(json: json, id: id, parent: parent)
|
13
|
+
if @json
|
14
|
+
decode_block_rich_text_array
|
15
|
+
decode_color
|
16
|
+
else
|
17
|
+
rich_text_array_and_color "rich_text", text_info, color
|
18
|
+
add_sub_blocks sub_blocks
|
19
|
+
end
|
20
|
+
@can_have_children = true
|
21
|
+
end
|
22
|
+
|
23
|
+
# @see https://www.notion.so/hkob/BulletedListItemBlock-ac4978f4efbb40109f0fb3bd00f43476#36d044b3db734fc5b0e21c07d829cb81
|
24
|
+
# @see https://www.notion.so/hkob/BulletedListItemBlock-ac4978f4efbb40109f0fb3bd00f43476#cef80016457e46e7bb178f063e4981de
|
25
|
+
attr_reader :color, :rich_text_array
|
26
|
+
|
27
|
+
# @param [String] new_color
|
28
|
+
# @see https://www.notion.so/hkob/BulletedListItemBlock-ac4978f4efbb40109f0fb3bd00f43476#2d59111c9e434dfa99d294cc9a74e468
|
29
|
+
def color=(new_color)
|
30
|
+
@color = new_color
|
31
|
+
@payload.add_update_block_key "color"
|
32
|
+
@rich_text_array.will_update = true
|
33
|
+
end
|
34
|
+
|
35
|
+
# @param [Boolean] not_update false when update
|
36
|
+
# @return [Hash{String (frozen)->Hash}]
|
37
|
+
def block_json(not_update: true)
|
38
|
+
ans = super
|
39
|
+
ans[type] = @rich_text_array.update_property_schema_json not_update
|
40
|
+
ans[type]["color"] = @color
|
41
|
+
ans[type]["children"] = @sub_blocks.map(&:block_json) if @sub_blocks
|
42
|
+
ans
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module NotionRubyMapping
|
4
|
+
# Notion block
|
5
|
+
class ToDoBlock < TextSubBlockColorBaseBlock
|
6
|
+
# @param [RichTextArray, String, Array<String>, RichTextObject, Array<RichTextObject>] text_info
|
7
|
+
# @param [Boolean] checked
|
8
|
+
# @param [NotionRubyMapping::Block, Array<NotionRubyMapping::Block>, nil] sub_blocks
|
9
|
+
# @param [String] color
|
10
|
+
def initialize(text_info = nil, checked = false, sub_blocks: nil, color: "default", json: nil, id: nil, parent: nil)
|
11
|
+
super(text_info, sub_blocks: sub_blocks, color: color, json: json, id: id, parent: parent)
|
12
|
+
@checked = if @json
|
13
|
+
@json[type]["checked"]
|
14
|
+
else
|
15
|
+
checked
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
# @see https://www.notion.so/hkob/ToDoBlock-9e4d863244b541869d91c84620e190d4#a4550dc684de43d2be171d4abbbea7ce
|
20
|
+
attr_reader :checked
|
21
|
+
|
22
|
+
# @param [Boolean] not_update false when update
|
23
|
+
# @return [Hash{String (frozen)->Hash}]
|
24
|
+
def block_json(not_update: true)
|
25
|
+
ans = super
|
26
|
+
ans[type]["checked"] = @checked
|
27
|
+
ans
|
28
|
+
end
|
29
|
+
|
30
|
+
# @param [Boolean] new_checked
|
31
|
+
# @see https://www.notion.so/hkob/ToDoBlock-9e4d863244b541869d91c84620e190d4#8ef8b12721914cccb17790879bdc2fbf
|
32
|
+
def checked=(new_checked)
|
33
|
+
@checked = new_checked
|
34
|
+
@payload.add_update_block_key "checked"
|
35
|
+
end
|
36
|
+
|
37
|
+
# @return [String (frozen)]
|
38
|
+
def type
|
39
|
+
"to_do"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module NotionRubyMapping
|
4
|
+
# Notion block
|
5
|
+
class UrlBaseBlock < Block
|
6
|
+
# @param [Sting] url
|
7
|
+
def initialize(url, json: nil, id: nil, parent: nil)
|
8
|
+
raise StandardError, "UrlBaseBlock is abstract class" if instance_of?(UrlBaseBlock)
|
9
|
+
|
10
|
+
super(json: json, id: id, parent: parent)
|
11
|
+
@url = if @json
|
12
|
+
@json[type]["url"]
|
13
|
+
else
|
14
|
+
url
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
attr_reader :url
|
19
|
+
|
20
|
+
# @param [Boolean] not_update false when update
|
21
|
+
# @return [Hash{String (frozen)->Hash}]
|
22
|
+
def block_json(not_update: true)
|
23
|
+
ans = super
|
24
|
+
ans[type] = {"url" => @url}
|
25
|
+
ans
|
26
|
+
end
|
27
|
+
|
28
|
+
# @param [String] str
|
29
|
+
def url=(str)
|
30
|
+
@url = str
|
31
|
+
@payload.add_update_block_key "url"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module NotionRubyMapping
|
4
|
+
# Notion block
|
5
|
+
class UrlCaptionBaseBlock < Block
|
6
|
+
# @param [Sting] url
|
7
|
+
# @param [RichTextArray, String, Array<String>, RichTextObject, Array<RichTextObject>] caption
|
8
|
+
# @see https://www.notion.so/hkob/BookmarkBlock-f2a8c15ad469436c966f74b58dcacbd4#845a1349bf5a4392b427199d6f327557
|
9
|
+
# @see https://www.notion.so/hkob/EmbedBlock-57c31e7d8e1d41669eb30f27e1c41035#3421ddd6f27f4ebea4c7e4450f81b866
|
10
|
+
def initialize(url = nil, caption: [], json: nil, id: nil, parent: nil)
|
11
|
+
raise StandardError, "UrlCaptionBaseBlock is abstract class" if instance_of?(UrlCaptionBaseBlock)
|
12
|
+
|
13
|
+
super(json: json, id: id, parent: parent)
|
14
|
+
if @json
|
15
|
+
@url = @json[type]["url"]
|
16
|
+
decode_block_caption
|
17
|
+
else
|
18
|
+
@url = url
|
19
|
+
@caption = RichTextArray.rich_text_array "caption", caption
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
# @see https://www.notion.so/hkob/BookmarkBlock-f2a8c15ad469436c966f74b58dcacbd4#bb6ff9f5dbdc4d52bbf8cdea89fc66de
|
24
|
+
# @see https://www.notion.so/hkob/BookmarkBlock-f2a8c15ad469436c966f74b58dcacbd4#eabb5436af464f77865e4a223da72329
|
25
|
+
# @see https://www.notion.so/hkob/EmbedBlock-57c31e7d8e1d41669eb30f27e1c41035#f28b77ca0b634acc8e606f954c516ae9
|
26
|
+
# @see https://www.notion.so/hkob/EmbedBlock-57c31e7d8e1d41669eb30f27e1c41035#3df6808f8eed43c7bc07ced53cbce6ba
|
27
|
+
attr_reader :caption, :url
|
28
|
+
|
29
|
+
# @param [Boolean] not_update false when update
|
30
|
+
# @return [Hash{String (frozen)->Hash}]
|
31
|
+
def block_json(not_update: true)
|
32
|
+
ans = super
|
33
|
+
ans[type] = @caption.update_property_schema_json not_update
|
34
|
+
ans[type]["url"] = @url
|
35
|
+
ans
|
36
|
+
end
|
37
|
+
|
38
|
+
# @param [String] str
|
39
|
+
# @see https://www.notion.so/hkob/BookmarkBlock-f2a8c15ad469436c966f74b58dcacbd4#054829bf342f40aea4fa6bd23820fbcb
|
40
|
+
# @see https://www.notion.so/hkob/EmbedBlock-57c31e7d8e1d41669eb30f27e1c41035#25ece6bfce0749f8b4bbecc6ba7feedc
|
41
|
+
def url=(str)
|
42
|
+
@url = str
|
43
|
+
@payload.add_update_block_key "url"
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -11,7 +11,6 @@ module NotionRubyMapping
|
|
11
11
|
|
12
12
|
### initialize
|
13
13
|
|
14
|
-
|
15
14
|
# @see https://www.notion.so/hkob/NotionCache-65e1599864d6425686d495a5a4b3a623#dca210788f114cf59464090782c073bf
|
16
15
|
def initialize
|
17
16
|
@object_hash = {}
|
@@ -27,7 +26,7 @@ module NotionRubyMapping
|
|
27
26
|
attr_reader :object_hash
|
28
27
|
attr_writer :client # for test only
|
29
28
|
|
30
|
-
# @param [String]
|
29
|
+
# @param [String] block_id
|
31
30
|
# @return [String (frozen)] block_path
|
32
31
|
def append_block_children_block_path(block_id)
|
33
32
|
"v1/blocks/#{block_id}/children"
|
@@ -118,12 +117,14 @@ module NotionRubyMapping
|
|
118
117
|
# @param [String] id page_id / block_id (with or without "-")
|
119
118
|
# @param [NotionRubyMapping::Query] query query object
|
120
119
|
# @return [NotionRubyMapping::Base] List object
|
121
|
-
def database_query(id, query)
|
122
|
-
|
123
|
-
end
|
120
|
+
# def database_query(id, query)
|
121
|
+
# Base.create_from_json database_query_request(id, query.query_json)
|
122
|
+
# end
|
124
123
|
|
125
|
-
|
126
|
-
|
124
|
+
# @param [String] database_id (with or without "-")
|
125
|
+
# @param [NotionRubyMapping::Query] query query object
|
126
|
+
def database_query_request(database_id, query)
|
127
|
+
request :post, "v1/databases/#{database_id}/query", query.query_json
|
127
128
|
end
|
128
129
|
|
129
130
|
# @param [String] database_id
|
@@ -132,32 +133,34 @@ module NotionRubyMapping
|
|
132
133
|
request :get, database_path(database_id)
|
133
134
|
end
|
134
135
|
|
135
|
-
# @param [String] database_id
|
136
136
|
# @return [String (frozen)] page_path
|
137
137
|
def databases_path
|
138
138
|
"v1/databases"
|
139
139
|
end
|
140
140
|
|
141
|
+
# @param [String] id
|
141
142
|
# @return [NotionRubyMapping::Base]
|
142
143
|
def destroy_block(id)
|
143
144
|
Base.create_from_json destroy_block_request(id)
|
144
145
|
end
|
145
146
|
|
146
|
-
# @param [
|
147
|
+
# @param [String] id
|
148
|
+
# @return [Hash]
|
147
149
|
def destroy_block_request(id)
|
148
150
|
request :delete, block_path(id)
|
149
151
|
end
|
150
152
|
|
151
|
-
def inspect
|
152
|
-
"NotionCache"
|
153
|
-
end
|
154
|
-
|
155
153
|
# @param [String] id id string with "-"
|
156
154
|
# @return [String] id without "-"
|
155
|
+
# @see https://www.notion.so/hkob/NotionCache-65e1599864d6425686d495a5a4b3a623#a2d70a2e019c4c17898aaa1a36580f1d
|
157
156
|
def hex_id(id)
|
158
157
|
id&.gsub "-", ""
|
159
158
|
end
|
160
159
|
|
160
|
+
def inspect
|
161
|
+
"NotionCache"
|
162
|
+
end
|
163
|
+
|
161
164
|
# @param [String] id id (with or without "-")
|
162
165
|
# @return [NotionRubyMapping::Base]
|
163
166
|
def object_for_key(id)
|
@@ -224,25 +227,28 @@ module NotionRubyMapping
|
|
224
227
|
response.body
|
225
228
|
end
|
226
229
|
|
230
|
+
def update_block_request(block_id, payload)
|
231
|
+
request :patch, block_path(block_id), payload
|
232
|
+
end
|
233
|
+
|
227
234
|
# @param [String] id page_id (with or without "-")
|
228
235
|
# @param [Hash] payload
|
229
|
-
def update_database(id, payload)
|
230
|
-
|
231
|
-
|
232
|
-
end
|
236
|
+
# def update_database(id, payload)
|
237
|
+
# sleep @wait
|
238
|
+
# @client.update_database payload.merge({database_id: id})
|
239
|
+
# end
|
233
240
|
|
234
241
|
# @param [String] database_id
|
235
242
|
# @return [Hash] response
|
236
243
|
def update_database_request(database_id, payload)
|
237
|
-
request :patch,
|
244
|
+
request :patch, database_path(database_id), payload
|
238
245
|
end
|
239
246
|
|
240
247
|
# @param [String] page_id
|
241
248
|
# @param [Hash] payload
|
242
249
|
# @return [Hash] response
|
243
250
|
def update_page_request(page_id, payload)
|
244
|
-
request :patch,
|
251
|
+
request :patch, page_path(page_id), payload
|
245
252
|
end
|
246
|
-
|
247
253
|
end
|
248
254
|
end
|
@@ -5,21 +5,17 @@ module NotionRubyMapping
|
|
5
5
|
class Payload
|
6
6
|
def initialize(json)
|
7
7
|
@json = json || {}
|
8
|
+
@update_block_key = []
|
8
9
|
end
|
9
10
|
|
10
|
-
# @param [String]
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
else
|
19
|
-
{}
|
20
|
-
end
|
21
|
-
@json["icon"] = payload
|
22
|
-
self
|
11
|
+
# @param [String] key
|
12
|
+
def add_update_block_key(key)
|
13
|
+
@update_block_key << key
|
14
|
+
end
|
15
|
+
|
16
|
+
# @return [Hash] {}
|
17
|
+
def clear
|
18
|
+
@json = {}
|
23
19
|
end
|
24
20
|
|
25
21
|
# @param [Hash] json
|
@@ -40,15 +36,33 @@ module NotionRubyMapping
|
|
40
36
|
others.compact.reduce({}) { |hash, o| hash.merge o.property_schema_json }.merge @json
|
41
37
|
end
|
42
38
|
|
39
|
+
# @param [String] emoji
|
40
|
+
# @param [String] url
|
41
|
+
# @return [NotionRubyMapping::Payload] updated Payload
|
42
|
+
def set_icon(emoji: nil, url: nil)
|
43
|
+
payload = if emoji
|
44
|
+
{"type" => "emoji", "emoji" => emoji}
|
45
|
+
elsif url
|
46
|
+
{"type" => "external", "external" => {"url" => url}}
|
47
|
+
else
|
48
|
+
{}
|
49
|
+
end
|
50
|
+
@json["icon"] = payload
|
51
|
+
self
|
52
|
+
end
|
53
|
+
|
54
|
+
def update_block_json(type, json)
|
55
|
+
sub_json = json[type]
|
56
|
+
ans = {type => sub_json.slice(*@update_block_key)}
|
57
|
+
ans[type]["caption"] = sub_json["caption"] if sub_json["caption"]
|
58
|
+
ans[type]["rich_text"] = sub_json["rich_text"] if sub_json["rich_text"]
|
59
|
+
ans
|
60
|
+
end
|
61
|
+
|
43
62
|
# @return [Hash] created json
|
44
63
|
# @param [Object] others
|
45
64
|
def update_property_schema_json(*others)
|
46
65
|
others.compact.reduce({}) { |hash, o| hash.merge o.update_property_schema_json }.merge @json
|
47
66
|
end
|
48
|
-
|
49
|
-
# @return [Hash] {}
|
50
|
-
def clear
|
51
|
-
@json = {}
|
52
|
-
end
|
53
67
|
end
|
54
68
|
end
|
@@ -12,7 +12,7 @@ module NotionRubyMapping
|
|
12
12
|
attr_reader :filter, :sort, :page_size
|
13
13
|
attr_accessor :start_cursor
|
14
14
|
|
15
|
-
# @param [Query]
|
15
|
+
# @param [Query] another_query other query
|
16
16
|
# @return [NotionRubyMapping::Query] updated self (Query object)
|
17
17
|
def and(another_query)
|
18
18
|
if @filter.key? "and"
|
@@ -72,6 +72,17 @@ module NotionRubyMapping
|
|
72
72
|
map(&:text).join ""
|
73
73
|
end
|
74
74
|
|
75
|
+
def rich_text_objects=(text_info)
|
76
|
+
@will_update = true
|
77
|
+
@rich_text_objects = if text_info.is_a? RichTextArray
|
78
|
+
text_info.filter { true }
|
79
|
+
else
|
80
|
+
Array(text_info).map do |to|
|
81
|
+
RichTextObject.text_object to
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
75
86
|
def property_values_json
|
76
87
|
will_update ? @rich_text_objects.map(&:property_values_json) : []
|
77
88
|
end
|
@@ -80,8 +91,8 @@ module NotionRubyMapping
|
|
80
91
|
will_update ? {@key => @rich_text_objects.map(&:property_values_json)} : {}
|
81
92
|
end
|
82
93
|
|
83
|
-
def update_property_schema_json
|
84
|
-
will_update ? {@key => @rich_text_objects.map(&:property_values_json)} : {}
|
94
|
+
def update_property_schema_json(flag = false)
|
95
|
+
flag || will_update ? {@key => @rich_text_objects.map(&:property_values_json)} : {}
|
85
96
|
end
|
86
97
|
|
87
98
|
# @return [TrueClass, FalseClass] true if it will update
|
@@ -14,7 +14,7 @@ module NotionRubyMapping
|
|
14
14
|
@type = type
|
15
15
|
@options = options
|
16
16
|
end
|
17
|
-
attr_reader :will_update
|
17
|
+
attr_reader :will_update, :options
|
18
18
|
|
19
19
|
def self.create_from_json(json)
|
20
20
|
type = json["type"]
|
@@ -73,7 +73,7 @@ module NotionRubyMapping
|
|
73
73
|
}.merge annotations_json
|
74
74
|
end
|
75
75
|
|
76
|
-
# @param [String
|
76
|
+
# @param [String] url
|
77
77
|
# @return [String] input text
|
78
78
|
def href=(url)
|
79
79
|
@will_update = true
|
@@ -130,9 +130,6 @@ module NotionRubyMapping
|
|
130
130
|
|
131
131
|
protected
|
132
132
|
|
133
|
-
# @return [Hash] options
|
134
|
-
attr_reader :options
|
135
|
-
|
136
133
|
# @return [Hash, Hash{String (frozen)->Hash}]
|
137
134
|
def annotations_json
|
138
135
|
annotations = @options.slice(*%w[bold italic strikethrough underline code color])
|