notion_ruby_mapping 0.4.0 → 0.5.1
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 +17 -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 +25 -21
- data/lib/notion_ruby_mapping/blocks/block.rb +82 -484
- 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 +49 -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 +34 -18
- 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,82 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module NotionRubyMapping
|
4
|
+
# Notion block
|
5
|
+
class CalloutBlock < Block
|
6
|
+
# @param [RichTextArray, String, Array<String>, RichTextObject, Array<RichTextObject>] text_info
|
7
|
+
# @param [String] emoji
|
8
|
+
# @param [String] file_url
|
9
|
+
# @param [String] color
|
10
|
+
# @param [NotionRubyMapping::Block, Array<NotionRubyMapping::Block>, nil] sub_blocks
|
11
|
+
def initialize(text_info = nil, emoji: nil, file_url: nil, sub_blocks: nil, color: "default", json: nil, id: nil,
|
12
|
+
parent: nil)
|
13
|
+
super(json: json, id: id, parent: parent)
|
14
|
+
if @json
|
15
|
+
decode_block_rich_text_array
|
16
|
+
decode_color
|
17
|
+
else
|
18
|
+
rich_text_array_and_color "rich_text", text_info, color
|
19
|
+
@emoji = EmojiObject.emoji_object emoji if emoji
|
20
|
+
@file_object = FileObject.file_object file_url if file_url
|
21
|
+
add_sub_blocks sub_blocks
|
22
|
+
end
|
23
|
+
@can_have_children = true
|
24
|
+
end
|
25
|
+
|
26
|
+
# @see https://www.notion.so/hkob/CalloutBlock-0eb8b64bea664bc89fad706a866a6e26#db689d47cbcc44359a5ade17ca754cdd
|
27
|
+
# @see https://www.notion.so/hkob/CalloutBlock-0eb8b64bea664bc89fad706a866a6e26#4314e4d50617485f8d0fc3505c5b3e9b
|
28
|
+
attr_reader :color, :rich_text_array
|
29
|
+
|
30
|
+
# @param [Boolean] not_update false when update
|
31
|
+
# @return [Hash{String (frozen)->Hash}]
|
32
|
+
def block_json(not_update: true)
|
33
|
+
ans = super
|
34
|
+
ans[type] = @rich_text_array.update_property_schema_json not_update
|
35
|
+
ans[type]["color"] = @color
|
36
|
+
ans[type]["icon"] = @emoji.property_values_json if @emoji
|
37
|
+
ans[type]["icon"] = @file_object.property_values_json if @file_object
|
38
|
+
ans[type]["children"] = @sub_blocks.map(&:block_json) if @sub_blocks
|
39
|
+
ans
|
40
|
+
end
|
41
|
+
|
42
|
+
# @param [String] new_color
|
43
|
+
# @see https://www.notion.so/hkob/CalloutBlock-0eb8b64bea664bc89fad706a866a6e26#b3598e385c2d4a23ada506441a7f0f32
|
44
|
+
def color=(new_color)
|
45
|
+
@color = new_color
|
46
|
+
@payload.add_update_block_key "color"
|
47
|
+
end
|
48
|
+
|
49
|
+
# @return [String, nil]
|
50
|
+
# @see https://www.notion.so/hkob/CalloutBlock-0eb8b64bea664bc89fad706a866a6e26#611496b7fd96499882fad138ef248b04
|
51
|
+
def emoji
|
52
|
+
@emoji&.emoji
|
53
|
+
end
|
54
|
+
|
55
|
+
# @param [String] emoji
|
56
|
+
# @see https://www.notion.so/hkob/CalloutBlock-0eb8b64bea664bc89fad706a866a6e26#0bd030c398184f94b819358830c2e26d
|
57
|
+
def emoji=(emoji)
|
58
|
+
@emoji = EmojiObject.emoji_object emoji
|
59
|
+
@file_object = nil
|
60
|
+
@payload.add_update_block_key "icon"
|
61
|
+
end
|
62
|
+
|
63
|
+
# @return [String]
|
64
|
+
# @see https://www.notion.so/hkob/CalloutBlock-0eb8b64bea664bc89fad706a866a6e26#57a8fc88f2ee49f7963942ad30cbca04
|
65
|
+
def file_url
|
66
|
+
@file_object&.url
|
67
|
+
end
|
68
|
+
|
69
|
+
# @param [String] url
|
70
|
+
# @see https://www.notion.so/hkob/CalloutBlock-0eb8b64bea664bc89fad706a866a6e26#041dd676bbfb442699229486fd30370a
|
71
|
+
def file_url=(url)
|
72
|
+
@file_object = FileObject.file_object url
|
73
|
+
@emoji = nil
|
74
|
+
@payload.add_update_block_key "icon"
|
75
|
+
end
|
76
|
+
|
77
|
+
# @return [String (frozen)]
|
78
|
+
def type
|
79
|
+
"callout"
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module NotionRubyMapping
|
4
|
+
# Notion block
|
5
|
+
class ChildBaseBlock < Block
|
6
|
+
def initialize(json: nil, id: nil, parent: nil)
|
7
|
+
super
|
8
|
+
@title = @json[type]["title"]
|
9
|
+
@can_append = false
|
10
|
+
@can_append = false
|
11
|
+
end
|
12
|
+
|
13
|
+
# @param [Boolean] not_update false when update
|
14
|
+
# @return [Hash{String (frozen)->Hash}]
|
15
|
+
def block_json(not_update: true)
|
16
|
+
ans = super
|
17
|
+
ans[type] = {"title" => @title}
|
18
|
+
ans
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module NotionRubyMapping
|
4
|
+
# Notion block
|
5
|
+
class CodeBlock < Block
|
6
|
+
# @param [RichTextArray, String, Array<String>, RichTextObject, Array<RichTextObject>] text_info
|
7
|
+
# @param [RichTextArray, String, Array<String>, RichTextObject, Array<RichTextObject>] caption
|
8
|
+
# @param [String] language
|
9
|
+
# @see https://www.notion.so/hkob/CodeBlock-3a25869f60394b3f902c1ed0bf5ce1c9#7777d9b785234278876d7bf6842dd8a2
|
10
|
+
def initialize(text_info = nil, caption: [], language: "shell", json: nil, id: nil, parent: nil)
|
11
|
+
super(json: json, id: id, parent: parent)
|
12
|
+
if @json
|
13
|
+
decode_block_rich_text_array
|
14
|
+
decode_block_caption
|
15
|
+
@language = json[type]["language"] || "shell"
|
16
|
+
else
|
17
|
+
rich_text_array_and_color "rich_text", text_info
|
18
|
+
@caption = RichTextArray.rich_text_array "caption", caption
|
19
|
+
@language = language
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
# @see https://www.notion.so/hkob/CodeBlock-3a25869f60394b3f902c1ed0bf5ce1c9#282b6ca100a14841b849ab24519647f3
|
24
|
+
# @see https://www.notion.so/hkob/CodeBlock-3a25869f60394b3f902c1ed0bf5ce1c9#6321da9df4f04ccdbddddcd93b1afbe2
|
25
|
+
# @see https://www.notion.so/hkob/CodeBlock-3a25869f60394b3f902c1ed0bf5ce1c9#9de0cd82fb594a3a8d12095d9e21ea8d
|
26
|
+
attr_reader :caption, :language, :rich_text_array
|
27
|
+
|
28
|
+
# @param [Boolean] not_update false when update
|
29
|
+
# @return [Hash{String (frozen)->Hash}]
|
30
|
+
def block_json(not_update: true)
|
31
|
+
ans = super
|
32
|
+
ans[type] = @rich_text_array.update_property_schema_json(not_update).merge(
|
33
|
+
@caption.update_property_schema_json(not_update),
|
34
|
+
)
|
35
|
+
ans[type]["language"] = @language
|
36
|
+
ans
|
37
|
+
end
|
38
|
+
|
39
|
+
# @param [String] new_language
|
40
|
+
def language=(new_language)
|
41
|
+
@language = new_language
|
42
|
+
@payload.add_update_block_key "language"
|
43
|
+
end
|
44
|
+
|
45
|
+
# @return [String (frozen)]
|
46
|
+
def type
|
47
|
+
"code"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module NotionRubyMapping
|
4
|
+
# Notion block
|
5
|
+
class ColumnBlock < Block
|
6
|
+
# @param [NotionRubyMapping::Block, Array<NotionRubyMapping::Block>, nil] sub_blocks
|
7
|
+
# @see https://www.notion.so/hkob/ColumnBlock-91cb314fc6594ff6b0c77c1eae6c7fab#4b4486cdf26a474eab1c92f9c6ea8a91
|
8
|
+
def initialize(sub_blocks = [], json: nil, id: nil, parent: nil)
|
9
|
+
super(json: json, id: id, parent: parent)
|
10
|
+
add_sub_blocks sub_blocks unless json
|
11
|
+
@can_have_children = true
|
12
|
+
@can_append = false
|
13
|
+
end
|
14
|
+
|
15
|
+
# @return [String (frozen)]
|
16
|
+
def type
|
17
|
+
"column"
|
18
|
+
end
|
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] = {}
|
25
|
+
ans[type]["children"] = @sub_blocks.map(&:block_json) if @sub_blocks
|
26
|
+
ans
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module NotionRubyMapping
|
4
|
+
# Notion block
|
5
|
+
class ColumnListBlock < Block
|
6
|
+
# @param [Array<Array<NotionRubyMapping::Block, Array<NotionRubyMapping::Block>>>] array_of_sub_blocks
|
7
|
+
# @return [NotionRubyMapping::Block]
|
8
|
+
# @see https://www.notion.so/hkob/ColumnListBlock-78d12860099f4e7d89b65c446bd314ba#6e1c97e1b5da45038232f43994e4d7e5
|
9
|
+
def initialize(array_of_sub_blocks = [], json: nil, id: nil, parent: nil)
|
10
|
+
super(json: json, id: id, parent: parent)
|
11
|
+
unless json
|
12
|
+
raise StandardError, "The column_list must have at least 2 columns." if array_of_sub_blocks.count < 2
|
13
|
+
|
14
|
+
@columns = array_of_sub_blocks.map { |sub_blocks| ColumnBlock.new(sub_blocks) }
|
15
|
+
end
|
16
|
+
@can_have_children = true
|
17
|
+
end
|
18
|
+
|
19
|
+
# @return [String (frozen)]
|
20
|
+
def type
|
21
|
+
"column_list"
|
22
|
+
end
|
23
|
+
|
24
|
+
# @param [Boolean] not_update false when update
|
25
|
+
# @return [Hash{String (frozen)->Hash}]
|
26
|
+
def block_json(not_update: true)
|
27
|
+
ans = super
|
28
|
+
ans[type] = {}
|
29
|
+
ans[type]["children"] = @columns.map(&:block_json) if @columns
|
30
|
+
ans
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -17,6 +17,12 @@ module NotionRubyMapping
|
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
|
+
# @param [String] key
|
21
|
+
# @return [NotionRubyMapping::PropertyCache, Hash] obtained Page value or PropertyCache
|
22
|
+
def [](key)
|
23
|
+
get key
|
24
|
+
end
|
25
|
+
|
20
26
|
# @param [Class] klass
|
21
27
|
# @param [String] title
|
22
28
|
# @return [NotionRubyMapping::Property]
|
@@ -76,7 +82,7 @@ module NotionRubyMapping
|
|
76
82
|
if dry_run
|
77
83
|
Base.dry_run_script :post, @nc.query_database_path(@id), query.query_json
|
78
84
|
else
|
79
|
-
response = @nc.
|
85
|
+
response = @nc.database_query_request @id, query
|
80
86
|
List.new json: response, database: self, query: query
|
81
87
|
end
|
82
88
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module NotionRubyMapping
|
4
|
+
# Notion block
|
5
|
+
class DividerBlock < Block
|
6
|
+
# @param [Boolean] not_update false when update
|
7
|
+
# @return [Hash{String (frozen)->Hash}]
|
8
|
+
def block_json(not_update: true)
|
9
|
+
ans = super
|
10
|
+
ans[type] = {}
|
11
|
+
ans
|
12
|
+
end
|
13
|
+
|
14
|
+
# @return [String (frozen)]
|
15
|
+
def type
|
16
|
+
"divider"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module NotionRubyMapping
|
4
|
+
# Notion block
|
5
|
+
class EquationBlock < Block
|
6
|
+
# @param [String, NotionRubyMapping::EquationObject] expression
|
7
|
+
# @see https://www.notion.so/hkob/EquationBlock-df0f823dc5ac41b798052f161dd6540c#cfcd2ceb77194c0e915500b429e8b91b
|
8
|
+
def initialize(expression = nil, json: nil, id: nil, parent: nil)
|
9
|
+
super(json: json, id: id, parent: parent)
|
10
|
+
@equation_object = if @json
|
11
|
+
EquationObject.equation_object @json[type]["expression"]
|
12
|
+
else
|
13
|
+
EquationObject.equation_object expression
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
# @param [Boolean] not_update false when update
|
18
|
+
# @return [Hash{String (frozen)->Hash}]
|
19
|
+
def block_json(not_update: true)
|
20
|
+
ans = super
|
21
|
+
ans[type] = {"expression" => @equation_object.expression}
|
22
|
+
ans
|
23
|
+
end
|
24
|
+
|
25
|
+
# @return [String]
|
26
|
+
# @see https://www.notion.so/hkob/EquationBlock-df0f823dc5ac41b798052f161dd6540c#da3e9d93ffac4d84854be3342b4bf3fe
|
27
|
+
def expression
|
28
|
+
@equation_object&.expression
|
29
|
+
end
|
30
|
+
|
31
|
+
# @param [String] new_expression
|
32
|
+
# @see https://www.notion.so/hkob/EquationBlock-df0f823dc5ac41b798052f161dd6540c#f05e3b2c82914cea9f05e9e6644647e1
|
33
|
+
def expression=(new_expression)
|
34
|
+
@equation_object = EquationObject.equation_object new_expression
|
35
|
+
@payload.add_update_block_key "expression"
|
36
|
+
end
|
37
|
+
|
38
|
+
# @return [String (frozen)]
|
39
|
+
def type
|
40
|
+
"equation"
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module NotionRubyMapping
|
4
|
+
# Notion block
|
5
|
+
class FileBaseBlock < Block
|
6
|
+
# @param [String, nil] url
|
7
|
+
# @param [RichTextArray, String, Array<String>, RichTextObject, Array<RichTextObject>, nil] caption
|
8
|
+
# @see https://www.notion.so/hkob/FileBlock-08f2aa6948364d00b92beacaac9a619c#ace53d2e6ff2404f937179ae1e966e98
|
9
|
+
# @see https://www.notion.so/hkob/ImageBlock-806b3d2a9a2c4bf5a5aca6e3fbc8a7e2#4cb790b8b5c847acab4341d55e4fa66a
|
10
|
+
def initialize(url = nil, caption: [], json: nil, id: nil, parent: nil)
|
11
|
+
super(json: json, id: id, parent: parent)
|
12
|
+
if @json
|
13
|
+
@file_object = FileObject.new json: @json[type]
|
14
|
+
decode_block_caption
|
15
|
+
@can_append = @file_object.external?
|
16
|
+
else
|
17
|
+
@file_object = FileObject.file_object url
|
18
|
+
@caption = RichTextArray.rich_text_array "caption", caption
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
# @see https://www.notion.so/hkob/FileBlock-08f2aa6948364d00b92beacaac9a619c#158487a7e1644fae8778dcff59869356
|
23
|
+
# @see https://www.notion.so/hkob/ImageBlock-806b3d2a9a2c4bf5a5aca6e3fbc8a7e2#19a4aa3e06514bbe84be9d3b8a45a20f
|
24
|
+
attr_reader :caption
|
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] = @file_object.property_values_json
|
31
|
+
ans[type].merge! @caption.update_property_schema_json(not_update) if @caption
|
32
|
+
ans
|
33
|
+
end
|
34
|
+
|
35
|
+
# @return [String]
|
36
|
+
# @see https://www.notion.so/hkob/FileBlock-08f2aa6948364d00b92beacaac9a619c#d3e7d31b7b274955aa7603163867fa57
|
37
|
+
# @see https://www.notion.so/hkob/ImageBlock-806b3d2a9a2c4bf5a5aca6e3fbc8a7e2#01e1883119f14c5f9f7f6823793e72ec
|
38
|
+
def url
|
39
|
+
@file_object&.url
|
40
|
+
end
|
41
|
+
|
42
|
+
# @param [String] url
|
43
|
+
# @see https://www.notion.so/hkob/FileBlock-08f2aa6948364d00b92beacaac9a619c#23497b8eb2214c45b3d5881796f984cb
|
44
|
+
# @see https://www.notion.so/hkob/ImageBlock-806b3d2a9a2c4bf5a5aca6e3fbc8a7e2#61598d260b6140f2a359f7d22ea2548a
|
45
|
+
def url=(url)
|
46
|
+
@file_object.url = url
|
47
|
+
@payload.add_update_block_key "external"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module NotionRubyMapping
|
4
|
+
# Notion block
|
5
|
+
class Heading1Block < TextSubBlockColorBaseBlock
|
6
|
+
# @param [RichTextArray, String, Array<String>, RichTextObject, Array<RichTextObject>, nil] text_info
|
7
|
+
# @param [String] color
|
8
|
+
def initialize(text_info = nil, color: nil, json: nil, id: nil, parent: nil)
|
9
|
+
super(text_info, color: color, json: json, id: id, parent: parent)
|
10
|
+
@can_have_children = false
|
11
|
+
end
|
12
|
+
|
13
|
+
# @return [String (frozen)]
|
14
|
+
def type
|
15
|
+
"heading_1"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module NotionRubyMapping
|
4
|
+
# Notion block
|
5
|
+
class Heading2Block < TextSubBlockColorBaseBlock
|
6
|
+
# @param [RichTextArray, String, Array<String>, RichTextObject, Array<RichTextObject>] text_info
|
7
|
+
# @param [String] color
|
8
|
+
def initialize(text_info = nil, color: nil, json: nil, id: nil, parent: nil)
|
9
|
+
super(text_info, color: color, json: json, id: id, parent: parent)
|
10
|
+
@can_have_children = false
|
11
|
+
end
|
12
|
+
|
13
|
+
# @return [String (frozen)]
|
14
|
+
def type
|
15
|
+
"heading_2"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module NotionRubyMapping
|
4
|
+
# Notion block
|
5
|
+
class Heading3Block < TextSubBlockColorBaseBlock
|
6
|
+
# @param [RichTextArray, String, Array<String>, RichTextObject, Array<RichTextObject>] text_info
|
7
|
+
# @param [String] color
|
8
|
+
def initialize(text_info = nil, color: nil, json: nil, id: nil, parent: nil)
|
9
|
+
super(text_info, color: color, json: json, id: id, parent: parent)
|
10
|
+
@can_have_children = false
|
11
|
+
end
|
12
|
+
|
13
|
+
# @return [String (frozen)]
|
14
|
+
def type
|
15
|
+
"heading_3"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module NotionRubyMapping
|
4
|
+
# Notion block
|
5
|
+
class LinkPreviewBlock < UrlBaseBlock
|
6
|
+
def initialize(url = nil, json: nil, id: nil, parent: nil)
|
7
|
+
super
|
8
|
+
@can_append = false
|
9
|
+
end
|
10
|
+
|
11
|
+
# @return [String (frozen)]
|
12
|
+
def type
|
13
|
+
"link_preview"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module NotionRubyMapping
|
4
|
+
# Notion block
|
5
|
+
class LinkToPageBlock < Block
|
6
|
+
# @param [String] page_id
|
7
|
+
# @param [String] database_id
|
8
|
+
# @see https://www.notion.so/hkob/LinkToPageBlock-e6d09d4742a24fb6bf1101b14a288ff5#d46a2f4288b04cbdbd1b4679f70b7642
|
9
|
+
def initialize(page_id: nil, database_id: nil, json: nil, id: nil, parent: nil)
|
10
|
+
super(json: json, id: id, parent: parent)
|
11
|
+
if @json
|
12
|
+
@page_id, @database_id = @json[type].values_at(*%w[page_id database_id])
|
13
|
+
else
|
14
|
+
@page_id = page_id
|
15
|
+
@database_id = database_id
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
# @see https://www.notion.so/hkob/LinkToPageBlock-e6d09d4742a24fb6bf1101b14a288ff5#f0ccbad5a94248baa658efc26d9c0ca3
|
20
|
+
# @see https://www.notion.so/hkob/LinkToPageBlock-e6d09d4742a24fb6bf1101b14a288ff5#1444263ecc7d402c8a18f4dd32a14956
|
21
|
+
attr_reader :database_id, :page_id
|
22
|
+
|
23
|
+
# @param [Boolean] not_update false when update
|
24
|
+
# @return [Hash{String (frozen)->Hash}]
|
25
|
+
def block_json(not_update: true)
|
26
|
+
ans = super
|
27
|
+
ans[type] = if @page_id
|
28
|
+
{"type" => "page_id", "page_id" => @page_id}
|
29
|
+
else
|
30
|
+
{"type" => "database_id", "database_id" => @database_id}
|
31
|
+
end
|
32
|
+
ans
|
33
|
+
end
|
34
|
+
|
35
|
+
# @return [String (frozen)]
|
36
|
+
def type
|
37
|
+
"link_to_page"
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -17,7 +17,6 @@ module NotionRubyMapping
|
|
17
17
|
end
|
18
18
|
attr_reader :has_more
|
19
19
|
|
20
|
-
|
21
20
|
# @return [NotionRubyMapping::List, Enumerator]
|
22
21
|
# @see https://www.notion.so/hkob/List-9a0b32335e0d48849a785ce5e162c760#12e1c261a0944a4095776b7515bef4a1
|
23
22
|
def each
|
@@ -56,7 +55,7 @@ module NotionRubyMapping
|
|
56
55
|
unless @has_content # re-exec
|
57
56
|
unless @load_all_contents
|
58
57
|
@query.start_cursor = nil
|
59
|
-
@json = @database.
|
58
|
+
@json = @nc.database_query_request @database.id, @query
|
60
59
|
@has_more = @json["has_more"]
|
61
60
|
end
|
62
61
|
@index = 0
|
@@ -71,7 +70,7 @@ module NotionRubyMapping
|
|
71
70
|
elsif @has_more
|
72
71
|
if @database
|
73
72
|
@query.start_cursor = @json["next_cursor"]
|
74
|
-
@json = @database.
|
73
|
+
@json = @nc.database_query_request @database.id, @query
|
75
74
|
@index = 0
|
76
75
|
@has_more = @json["has_more"]
|
77
76
|
else
|
@@ -17,6 +17,12 @@ module NotionRubyMapping
|
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
|
+
# @param [String] key
|
21
|
+
# @return [NotionRubyMapping::PropertyCache, Hash] obtained Page value or PropertyCache
|
22
|
+
def [](key)
|
23
|
+
get key
|
24
|
+
end
|
25
|
+
|
20
26
|
# @param [String] title
|
21
27
|
# @param [Array<String, Property>] assigns
|
22
28
|
# @return [NotionRubyMapping::Database]
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module NotionRubyMapping
|
4
|
+
# Notion block
|
5
|
+
class SyncedBlock < Block
|
6
|
+
# @param [String] block_id
|
7
|
+
# @param [NotionRubyMapping::Block, Array<NotionRubyMapping::Block>, nil] sub_blocks
|
8
|
+
def initialize(block_id: nil, sub_blocks: nil, json: nil, id: nil, parent: nil)
|
9
|
+
super json: json, id: id, parent: parent
|
10
|
+
if @json
|
11
|
+
synced_from = @json[type]["synced_from"]
|
12
|
+
@block_id = synced_from && @nc.hex_id(synced_from["block_id"])
|
13
|
+
else
|
14
|
+
@block_id = block_id
|
15
|
+
add_sub_blocks sub_blocks
|
16
|
+
end
|
17
|
+
@can_have_children = @block_id.nil?
|
18
|
+
end
|
19
|
+
|
20
|
+
attr_reader :block_id
|
21
|
+
|
22
|
+
def block_json(not_update: true)
|
23
|
+
ans = super
|
24
|
+
ans[type] = {"synced_from" => @block_id ? {"type" => "block_id", "block_id" => @nc.hex_id(@block_id)} : nil}
|
25
|
+
ans[type]["children"] = @sub_blocks.map(&:block_json) if @sub_blocks
|
26
|
+
ans
|
27
|
+
end
|
28
|
+
|
29
|
+
# @return [Boolean] true if synced_block & block_id is nil
|
30
|
+
def synced_block_original?
|
31
|
+
@block_id.nil?
|
32
|
+
end
|
33
|
+
|
34
|
+
# @return [NotionRubyMapping::SyncedBlock]
|
35
|
+
def synced_block_original
|
36
|
+
@block_id && Block.find(@block_id)
|
37
|
+
end
|
38
|
+
|
39
|
+
# @return [String, nil]
|
40
|
+
def synced_block_original_id
|
41
|
+
@block_id
|
42
|
+
end
|
43
|
+
|
44
|
+
# @return [String (frozen)]
|
45
|
+
def type
|
46
|
+
"synced_block"
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|