notion_ruby_mapping 0.4.0 → 0.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 86b66f1eaec34561d2542a0b460490cc162820c03bb386d75fdb796f7ad89477
4
- data.tar.gz: 2fc5d80b0123377c7dbbfdc59f20ad03596a9fdedbc4cf49d50ca6bdf9d428e1
3
+ metadata.gz: 59ade8b97253e1f77c438f1f337c55d8b642fed859e4434de98d6860610d84e7
4
+ data.tar.gz: 4703b38b13e146d2b7e55bbd1988ee6efc21b5ee65210cfcc8e304920969c538
5
5
  SHA512:
6
- metadata.gz: af591e9e313309fb5028cec7073b28d8e0afa40e47b5f1cd2a5fd3129e7747897c451b45461bd10be40b0619f1e9e61b286feaad7cf23ce38e71b3f90afb3eab
7
- data.tar.gz: 63abcef6e721e96e0219c516abfae21bb6d66d11e78ce67a495be459c9b7eba57112ae1c41b85f9de42a68c3d26aeb678c4423c4440035bed651013241b2f450
6
+ metadata.gz: 360025f3bec7e9d20a33c9183ade2b1695137d818119771d219eb7b6f5e0a00ad2bebd8da7fc147c41ee1445879ab1e51088bbd02abc6e91dd78658c8c5a8f16
7
+ data.tar.gz: c9b917ce45d44cec66c09dd278119ef3ee4848f673c07c65260628250a35a6864c9de4dfccac89e2c2dc31a3df80ec52f32ed7eccd31248b018f6116c86c67b4
@@ -4,7 +4,6 @@ module NotionRubyMapping
4
4
  # Notion Base object (Parent of Page / Database / List)
5
5
  # The Public API method has a link to the API references.
6
6
  class Base
7
-
8
7
  # @param [Hash, nil] json
9
8
  # @param [String, nil] id
10
9
  # @param [Array<Property, Class, String>] assign
@@ -52,7 +51,7 @@ module NotionRubyMapping
52
51
  " -H 'Notion-Version: 2022-02-22'",
53
52
  " -H 'Authorization: Bearer '\"$NOTION_API_KEY\"''",
54
53
  ]
55
- shell << " -H 'Content-Type: application/json'" unless path == :get
54
+ shell << " -H 'Content-Type: application/json'" if %i[post patch].include?(method)
56
55
  shell << " --data '#{JSON.generate json}'" if json
57
56
  shell.join(" \\\n")
58
57
  end
@@ -73,8 +72,8 @@ module NotionRubyMapping
73
72
  end
74
73
  end
75
74
 
76
- # @param [String] url
77
- # @param [RichTextArray, String, Array<String>, RichTextObject, Array<RichTextObject>] caption
75
+ # @param [Array<Block>] blocks
76
+ # @param [Boolean] dry_run
78
77
  # @return [NotionRubyMapping::Block, String]
79
78
  # @see https://www.notion.so/hkob/Page-d359650e3ca94424af8359a24147b9a0#44bbf83d852c419485c5efe9fe1558fb
80
79
  # @see https://www.notion.so/hkob/Block-689ad4cbff50404d8a1baf67b6d6d78d#2c47f7fedae543cf8566389ba1677132
@@ -86,7 +85,7 @@ module NotionRubyMapping
86
85
  "children" => Array(blocks).map do |block|
87
86
  assert_parent_children_pair block
88
87
  block.block_json
89
- end
88
+ end,
90
89
  }
91
90
  if dry_run
92
91
  path = @nc.append_block_children_page_path(id)
@@ -112,7 +111,7 @@ module NotionRubyMapping
112
111
  raise StandardError, "Internal file block can not append." if bt == "file"
113
112
 
114
113
  raise StandardError, "Column block can only append column_list block" unless bt == "column" &&
115
- block? && self.type == "columu_list"
114
+ block? && type == "columu_list"
116
115
  end
117
116
 
118
117
  # @param [NotionRubyMapping::Property] klass
@@ -172,6 +171,11 @@ module NotionRubyMapping
172
171
  self["icon"]
173
172
  end
174
173
 
174
+ # @return [String (frozen)]
175
+ def inspect
176
+ "#{self.class.name}-#{@id}"
177
+ end
178
+
175
179
  # @return [Hash] json properties
176
180
  def json_properties
177
181
  @json && @json["properties"]
@@ -231,6 +235,7 @@ module NotionRubyMapping
231
235
  self
232
236
  end
233
237
 
238
+ # @param [Boolean] dry_run
234
239
  # @return [NotionRubyMapping::Base, String]
235
240
  # @see https://www.notion.so/hkob/Page-d359650e3ca94424af8359a24147b9a0#277085c8439841c798a4b94eae9a7326
236
241
  def save(dry_run: false)
@@ -254,8 +259,9 @@ module NotionRubyMapping
254
259
  self
255
260
  end
256
261
 
257
- def description
258
- "#{self.class.name}-#{@id}"
262
+ # @return [FalseClass] return false except block
263
+ def synced_block_original?
264
+ false
259
265
  end
260
266
 
261
267
  # @param [Hash] json
@@ -13,10 +13,15 @@ module NotionRubyMapping
13
13
  attr_reader :can_have_children, :can_append, :type
14
14
 
15
15
  # @see https://www.notion.so/hkob/Block-689ad4cbff50404d8a1baf67b6d6d78d#298916c7c379424682f39ff09ee38544
16
- # @param [String] key
16
+ # @param [String] id
17
17
  # @return [NotionRubyMapping::Block]
18
- def self.find(key)
19
- NotionCache.instance.block key
18
+ def self.find(id, dry_run: false)
19
+ nc = NotionCache.instance
20
+ if dry_run
21
+ Base.dry_run_script :get, nc.block_path(id)
22
+ else
23
+ nc.block id
24
+ end
20
25
  end
21
26
 
22
27
  # @return [Hash{String (frozen)->String (frozen) | Array}, nil]
@@ -68,9 +73,11 @@ module NotionRubyMapping
68
73
  when "link_preview"
69
74
  ans[@type] = {"url" => @url}
70
75
  when "link_to_page"
71
- ans[@type] = @page_id ?
72
- {"type" => "page_id", "page_id" => @page_id} :
76
+ ans[@type] = if @page_id
77
+ {"type" => "page_id", "page_id" => @page_id}
78
+ else
73
79
  {"type" => "database_id", "database_id" => @database_id}
80
+ end
74
81
  when "synced_block"
75
82
  ans[@type] = {"synced_from" => @block_id ? {"type" => "block_id", "block_id" => @block_id} : nil}
76
83
  ans[@type]["children"] = @sub_blocks.map(&:block_json) if @sub_blocks
@@ -80,13 +87,11 @@ module NotionRubyMapping
80
87
  "has_row_header" => @has_row_header,
81
88
  "table_width" => @table_width,
82
89
  }
83
- if @table_rows
84
- ans[@type]["children"] = @table_rows.map(&:block_json)
85
- end
90
+ ans[@type]["children"] = @table_rows.map(&:block_json) if @table_rows
86
91
  when "table_of_contents"
87
92
  ans[@type] = {"color" => @color}
88
93
  when "table_row"
89
- ans[@type] = {"cells" => @cells.map { |cell| Array(cell).map { |to| to.property_values_json } } }
94
+ ans[@type] = {"cells" => @cells.map { |cell| Array(cell).map(&:property_values_json) }}
90
95
  when "template"
91
96
  @rich_text_array.will_update = true
92
97
  ans[@type] = @rich_text_array.update_property_schema_json
@@ -269,6 +274,16 @@ module NotionRubyMapping
269
274
  @rich_text_array = RichTextArray.new "rich_text", json: @json[@type]["rich_text"]
270
275
  end
271
276
 
277
+ # @param [Boolean] dry_run
278
+ # @return [NotionRubyMapping::Base, String]
279
+ def destroy(dry_run: false)
280
+ if dry_run
281
+ Base.dry_run_script :delete, @nc.block_path(@id)
282
+ else
283
+ @nc.destroy_block id
284
+ end
285
+ end
286
+
272
287
  # @return [NotionRubyMapping::Block]
273
288
  # @see https://www.notion.so/hkob/Block-689ad4cbff50404d8a1baf67b6d6d78d#fe58d26468e04b38b8ae730e4f0c74ae
274
289
  def divider
@@ -415,6 +430,11 @@ module NotionRubyMapping
415
430
  self
416
431
  end
417
432
 
433
+ # @return [Boolean] true if synced_block & block_id is nil
434
+ def synced_block_original?
435
+ @type == "synced_block" && @block_id.nil?
436
+ end
437
+
418
438
  def table(table_width:, has_column_header: false, has_row_header: false, table_rows: nil)
419
439
  @type = __method__.to_s
420
440
  @table_width = table_width
@@ -520,7 +540,6 @@ module NotionRubyMapping
520
540
  end
521
541
 
522
542
  # @param [String] url
523
- # @param [RichTextArray, String, Array<String>, RichTextObject, Array<RichTextObject>] caption
524
543
  # @see https://www.notion.so/hkob/Block-689ad4cbff50404d8a1baf67b6d6d78d#7aad77515ce14e3bbc7e0a7a5427820b
525
544
  def video(url)
526
545
  @type = __method__.to_s
@@ -536,7 +555,6 @@ module NotionRubyMapping
536
555
  end
537
556
 
538
557
  # @param [String] type
539
- # @param [RichTextArray, String, Array<String>, RichTextObject, Array<RichTextObject>] caption
540
558
  # @param [String] color
541
559
  def rich_text_array_and_color(type, text_info, color = "default")
542
560
  @rich_text_array = RichTextArray.rich_text_array type, text_info
@@ -38,7 +38,7 @@ module NotionRubyMapping
38
38
  def append_block_children_page_path(page_id)
39
39
  "v1/blocks/#{page_id}/children"
40
40
  end
41
-
41
+
42
42
  # @param [String] id
43
43
  # @param [Hash] payload
44
44
  # @return [Hash]
@@ -138,6 +138,16 @@ module NotionRubyMapping
138
138
  "v1/databases"
139
139
  end
140
140
 
141
+ # @return [NotionRubyMapping::Base]
142
+ def destroy_block(id)
143
+ Base.create_from_json destroy_block_request(id)
144
+ end
145
+
146
+ # @param [Hash] response
147
+ def destroy_block_request(id)
148
+ request :delete, block_path(id)
149
+ end
150
+
141
151
  def inspect
142
152
  "NotionCache"
143
153
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module NotionRubyMapping
4
- VERSION = "0.4.0"
4
+ VERSION = "0.4.1"
5
5
  NOTION_VERSION = "2022-02-22"
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: notion_ruby_mapping
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hiroyuki KOBAYASHI
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-05-14 00:00:00.000000000 Z
11
+ date: 2022-05-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday