notion_ruby_mapping 0.7.0 → 0.7.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 378e8aecdacdabc3fd951939783195ed13f2e56665a202a8fe3cf9a2d66e0fab
4
- data.tar.gz: d92c738818763b3d4d49d06e1f7c326ec2fc60e5214162a8185c4f7a8c3f501a
3
+ metadata.gz: 78822f6707fe646abb09c9240dce59ac8adac8c27c300baae8282e16ecd54278
4
+ data.tar.gz: 40aa622383799df9e197bf9eafd829d2e7699a9c66194a42812f750a2bb97b1e
5
5
  SHA512:
6
- metadata.gz: 0dd2673402bbe54ccd135331c3476f4009af7c68411895f2244288eae761c8975e5bb7e9e39d14ba5d2fc58b96cb38c8dd4f401de2a422d0ebfaeff4c29277ed
7
- data.tar.gz: 331fadb7063f5d72c049a7f84907174b3470be179340539796772e31a3ff61dd10222d1638d26688c67fe8470501235c3025c2ebda46ba8942e404cc256aad91
6
+ metadata.gz: ab8f1e29cb52504ea7c1b8877743e99d31cd1dd2b08e790a28038d966ea5319e48d733657eeae936b8c55a0af2ed87b010411568770ef57e023e0f4f3c49a9c6
7
+ data.tar.gz: a625b8e93d57e4ba506f67526a8f5a95bb872a0a879eaa9154bd719b2fa0c5f2374cab20a7fda448dcdaa03bf4f2f4b800725061c9f3bc0bb76ecaf5a67b3e1b
data/.rubocop.yml CHANGED
@@ -1,3 +1,5 @@
1
+ require: rubocop-rspec
2
+
1
3
  AllCops:
2
4
  TargetRubyVersion: 2.6
3
5
 
data/README.md CHANGED
@@ -125,6 +125,8 @@ NotionRubyMapping.configuration { |c| c.notion_token = ENV["NOTION_API_TOKEN"] }
125
125
 
126
126
  ## 3. ChangeLog
127
127
 
128
+ - 2023/1/25 [v0.7.2] bug fix for creating relation property / add erdToNotionRb.rb script
129
+ - 2022/12/16 [v0.7.1] bug fix for query rollup property
128
130
  - 2022/11/28 [v0.7.0] add this_week filter and NotionRubyMapping.configure
129
131
  - 2022/11/13 [v0.6.8] remove error checking for start and end dates, add Users.all, and change Rollup and Formula query specification
130
132
  - 2022/9/2 [v0.6.7] add support for Status property, is_toggleable for headings block, and page property values
@@ -0,0 +1,41 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ require "notion_ruby_mapping"
4
+ include NotionRubyMapping
5
+
6
+ if ARGV.length < 2
7
+ print "Usage: erdToNotion.rb code_block_id target_page_id [--inline]"
8
+ exit
9
+ end
10
+
11
+ mermaid_url, target_page_url, inline_flag = ARGV
12
+ inline = inline_flag == "--inline"
13
+ NotionRubyMapping.configure { |c| c.notion_token = ENV["NOTION_API_KEY"] }
14
+ nc = NotionCache.instance
15
+ mermaid_block = Block.find mermaid_url
16
+ unless mermaid_block.is_a? CodeBlock
17
+ print "#{mermaid_url} is not CodeBlock's id"
18
+ exit
19
+ end
20
+
21
+ # Parse mermaid ER
22
+ mermaid = Mermaid.new mermaid_block.rich_text_array.full_text
23
+
24
+ # Retrieve child databases
25
+ target_page = Page.find target_page_url
26
+ target_page_id = target_page.id
27
+ db_titles = target_page.children.select { |b| b.is_a? ChildDatabaseBlock }.map(&:title)
28
+ exist_dbs = Search.new(query: "(#{db_titles.join('|')})", database_only: true).exec.select do |db|
29
+ nc.hex_id(db.parent_id) == target_page_id
30
+ end
31
+
32
+ # Attach existing databases to mermaid database
33
+ exist_dbs.each do |db|
34
+ mermaid.attach_database db
35
+ end
36
+
37
+ mermaid.create_notion_db target_page, inline
38
+ mermaid.update_databases
39
+ mermaid.rename_reverse_name
40
+ mermaid.update_rollup
41
+
@@ -29,7 +29,7 @@ if ARGV.length < 2
29
29
  exit
30
30
  end
31
31
  database_id, code_block_id = ARGV
32
- NotionCache.instance.create_client ENV["NOTION_API_KEY"]
32
+ NotionRubyMapping.configure { |c| c.notion_token = ENV["NOTION_API_KEY"] }
33
33
  block = Block.find code_block_id
34
34
  unless block.is_a? CodeBlock
35
35
  print "#{code_block_id} is not CodeBlock's id"
@@ -256,6 +256,13 @@ module NotionRubyMapping
256
256
  klass.find parent_json[type], dry_run: dry_run
257
257
  end
258
258
 
259
+ def parent_id
260
+ parent_json = @json && @json["parent"]
261
+ raise StandardError, "Unknown parent" if parent_json.nil?
262
+
263
+ parent_json[parent_json["type"]]
264
+ end
265
+
259
266
  # @return [NotionRubyMapping::PropertyCache] get or created PropertyCache object
260
267
  # @see https://www.notion.so/hkob/Page-d359650e3ca94424af8359a24147b9a0#8f0b28e09dd74e2a9ff06126c48d64d4
261
268
  def properties
@@ -7,5 +7,9 @@ module NotionRubyMapping
7
7
  def type
8
8
  "child_database"
9
9
  end
10
+
11
+ def title
12
+ @json[type]["title"]
13
+ end
10
14
  end
11
15
  end
@@ -7,5 +7,9 @@ module NotionRubyMapping
7
7
  def type
8
8
  "child_page"
9
9
  end
10
+
11
+ def title
12
+ @json[type]["title"]
13
+ end
10
14
  end
11
15
  end
@@ -21,6 +21,8 @@ module NotionRubyMapping
21
21
  @property = value
22
22
  when :user_object
23
23
  @user_object = true
24
+ when :search
25
+ @search = value
24
26
  end
25
27
  @query = query
26
28
  @index = 0
@@ -74,6 +76,11 @@ module NotionRubyMapping
74
76
  query: -> { @nc.users_request @query.query_json },
75
77
  create_object: ->(json) { UserObject.new json: json },
76
78
  &block
79
+ elsif @search
80
+ each_sub base: @search,
81
+ query: -> { @nc.search @search.payload.merge(@query.query_json) },
82
+ create_object: ->(json) { Base.create_from_json json },
83
+ &block
77
84
  end
78
85
  self
79
86
  end
@@ -53,7 +53,10 @@ module NotionRubyMapping
53
53
  # @return [NotionRubyMapping::Database, String]
54
54
  # @see https://www.notion.so/hkob/Page-d359650e3ca94424af8359a24147b9a0#e3f1d21e0f724f589e48431468772eed
55
55
  def create_child_database(title, *assigns, dry_run: false)
56
- build_child_database(title, *assigns).save dry_run: dry_run
56
+ db = Database.new json: {"title" => [TextObject.new(title).property_values_json]},
57
+ assign: assigns, parent: {"type" => "page_id", "page_id" => @id}
58
+ yield db, db.properties if block_given?
59
+ db.save dry_run: dry_run
57
60
  end
58
61
 
59
62
  # @return [String] title
@@ -0,0 +1,72 @@
1
+ # frozen_string_literal: true
2
+
3
+ module NotionRubyMapping
4
+ class Mermaid
5
+ # @param [String] full_text
6
+ def initialize(full_text)
7
+ @lines = full_text.split "\n"
8
+ @databases = Hash.new {}
9
+ parse_text
10
+ end
11
+ attr_reader :lines, :databases
12
+
13
+ def parse_text
14
+ return unless @lines.shift =~ /^erDiagram/
15
+
16
+ until @lines.empty?
17
+ case @lines.shift
18
+ when / *(\w+) *[|}][|o]--[o|][|{] *(\w+) *: *"(.*)" */
19
+ db_or_create(Regexp.last_match(1)).append_relation db_or_create(Regexp.last_match(2)), Regexp.last_match(3)
20
+ when / *(\w+) *{ */
21
+ append_db_with_attributes Regexp.last_match(1)
22
+ else
23
+ nil
24
+ end
25
+ end
26
+ end
27
+
28
+ def db_or_create(db_name)
29
+ @databases[db_name] ||= MermaidDatabase.new db_name
30
+ end
31
+
32
+ def append_db_with_attributes(db_name)
33
+ db = db_or_create db_name
34
+ until @lines.empty?
35
+ case @lines.shift
36
+ when /^ *} *$/
37
+ break
38
+ when /^ *Database +title +"(.*)" *$/
39
+ db.name = Regexp.last_match(1)
40
+ when /^ *([^ ]+) +[^ ]+ +"(.*)" *$/
41
+ db.add_property Regexp.last_match(1), Regexp.last_match(2)
42
+ when /^ *([^ ]+) +([^ ]+) *$/
43
+ db.add_property Regexp.last_match(1), Regexp.last_match(2)
44
+ else
45
+ nil
46
+ end
47
+ end
48
+ end
49
+
50
+ def attach_database(db)
51
+ @databases.values.select { |mdb| mdb.name == db.database_title.full_text }.first&.attach_database(db)
52
+ end
53
+
54
+ def create_notion_db(target_page, inline)
55
+ @databases.values.each do |mdb|
56
+ mdb.create_notion_db(target_page, inline) unless mdb.real_db
57
+ end
58
+ end
59
+
60
+ def update_databases
61
+ @databases.each_value(&:update_database)
62
+ end
63
+
64
+ def rename_reverse_name
65
+ @databases.each_value(&:rename_reverse_name)
66
+ end
67
+
68
+ def update_rollup
69
+ @databases.each_value(&:update_rollup)
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,182 @@
1
+ module NotionRubyMapping
2
+ class MermaidDatabase
3
+
4
+ def initialize(key)
5
+ @key = key
6
+ @name = key
7
+ @title = nil
8
+ @properties = {}
9
+ @relations = {}
10
+ @real_db = nil
11
+ @reverse_name_queue = {}
12
+ end
13
+ attr_reader :properties, :relations, :real_db, :title
14
+ attr_accessor :name
15
+
16
+ def add_property(key, value)
17
+ if key == "title"
18
+ @title = value
19
+ else
20
+ @properties[value] = key
21
+ end
22
+ end
23
+
24
+ def append_relation(other, relation)
25
+ @relations[relation] = other
26
+ end
27
+
28
+ def attach_database(db)
29
+ @real_db = db
30
+ end
31
+
32
+ # @param [NotionRubyMapping::Page] target_page
33
+ def create_notion_db(target_page, inline)
34
+ unless @title
35
+ print "Database must have a title property"
36
+ exit
37
+ end
38
+ @real_db = target_page.create_child_database(@name, TitleProperty, @title) do |d, _|
39
+ d.is_inline = inline
40
+ end
41
+ end
42
+
43
+ def update_properties
44
+ ps = @real_db.properties
45
+ title_property = ps.select { |p| p.is_a? TitleProperty }.first
46
+ title_property.new_name = @title unless title_property.name == @title
47
+ @properties.each do |(value, key)|
48
+ name, *options = value.split("|")
49
+ property = ps.values_at(name).first
50
+ case key
51
+ when /checkbox|created_by|created_time|date|email|files|last_edited_by|last_edited_time|people|phone_number|text|url|status/
52
+ klass = {
53
+ checkbox: CheckboxProperty, created_by: CreatedByProperty, created_time: CreatedTimeProperty,
54
+ date: DateProperty, email: EmailProperty, files: FilesProperty, last_edited_by: LastEditedByProperty,
55
+ last_edited_time: LastEditedTimeProperty, people: PeopleProperty, phone_number: PhoneNumberProperty,
56
+ rich_text: RichTextProperty, url: UrlProperty, status: StatusProperty
57
+ }[key.to_sym]
58
+ @real_db.add_property klass, name unless property
59
+ when "formula"
60
+ f_e = options.first&.gsub "@", '"'
61
+ if property
62
+ property.formula_expression = f_e unless property.formula_expression == f_e
63
+ else
64
+ @real_db.add_property(FormulaProperty, name) { |dp| dp.formula_expression = f_e }
65
+ end
66
+ when "multi_select"
67
+ if property
68
+ (options - (property.multi_select_options.map { |h| h["name"] })).each do |select_name|
69
+ property.add_multi_select_option name: select_name, color: "default"
70
+ end
71
+ else
72
+ @real_db.add_property(MultiSelectProperty, name) do |dp|
73
+ options.each do |select_name|
74
+ dp.add_multi_select_option name: select_name, color: "default"
75
+ end
76
+ end
77
+ end
78
+ when "number"
79
+ format_value = options.empty? ? "number" : options.first
80
+ if property
81
+ property.format = format_value unless property.format == format_value
82
+ else
83
+ @real_db.add_property(NumberProperty, name) { |p| p.format = format_value }
84
+ end
85
+ when "select"
86
+ if property
87
+ (options - (property.select_options.map { |h| h["name"] })).each do |select_name|
88
+ property.add_select_option name: select_name, color: "default"
89
+ end
90
+ else
91
+ @real_db.add_property(SelectProperty, name) do |dp|
92
+ options.each do |select_name|
93
+ dp.add_select_option name: select_name, color: "default"
94
+ end
95
+ end
96
+ end
97
+ else
98
+ nil
99
+ end
100
+ end
101
+ @relations.each do |value, relation_db|
102
+ db_id = relation_db.real_db.id
103
+ forward, reverse = value.split "|"
104
+ property = ps.values_at(forward).first
105
+ if property
106
+ if reverse
107
+ next if property.database_id == db_id && property.synced_property_name == reverse
108
+
109
+ property.replace_relation_database database_id: db_id
110
+ relation_db.append_reverse_name_queue self, forward, reverse
111
+ else
112
+ next if property.database_id == db_id
113
+
114
+ property.replace_relation_database database_id: db_id, type: "single_property"
115
+ end
116
+ else
117
+ @real_db.add_property(RelationProperty, forward) do |p|
118
+ if reverse
119
+ p.replace_relation_database database_id: relation_db.real_db.id
120
+ relation_db.append_reverse_name_queue self, forward, reverse
121
+ else
122
+ p.replace_relation_database database_id: relation_db.real_db.id, type: "single_property"
123
+ end
124
+ end
125
+ end
126
+ end
127
+ @real_db.property_schema_json
128
+ end
129
+
130
+ def append_reverse_name_queue(other_db, forward, reverse)
131
+ @reverse_name_queue[reverse] = [other_db, forward]
132
+ end
133
+
134
+ def update_database
135
+ update_properties
136
+ @real_db.save
137
+ end
138
+
139
+ def rename_reverse_name
140
+ save = false
141
+ @reverse_name_queue.each do |reverse, (other_db, forward)|
142
+ frp = other_db.real_db.properties[forward]
143
+ rp_id = frp.synced_property_id
144
+ rrp = @real_db.properties.filter { |pp| pp.property_id == rp_id }.first
145
+ if rrp && rrp.name != reverse
146
+ rrp.new_name = reverse
147
+ save = true
148
+ end
149
+ end
150
+ @real_db.save if save
151
+ end
152
+
153
+ def update_rollup_schema
154
+ ps = @real_db.properties
155
+ @properties.each do |(value, key)|
156
+ next unless key == "rollup"
157
+
158
+ name, *options = value.split("|")
159
+ property = ps.values_at(name).first
160
+
161
+ relation_name, rollup_name, function = options
162
+ if property
163
+ property.function = function unless property.function == function
164
+ property.relation_property_name = relation_name unless property.relation_property_name == relation_name
165
+ property.rollup_property_name = rollup_name unless property.rollup_property_name == rollup_name
166
+ else
167
+ @real_db.add_property(RollupProperty, name) do |dp|
168
+ dp.function = function
169
+ dp.relation_property_name = relation_name
170
+ dp.rollup_property_name = rollup_name
171
+ end
172
+ end
173
+ end
174
+ @real_db.property_schema_json
175
+ end
176
+
177
+ def update_rollup
178
+ update_rollup_schema
179
+ @real_db.save
180
+ end
181
+ end
182
+ end
@@ -262,6 +262,14 @@ module NotionRubyMapping
262
262
  response.body
263
263
  end
264
264
 
265
+ def search(query)
266
+ request(:post, search_path, options = query)
267
+ end
268
+
269
+ def search_path
270
+ "v1/search"
271
+ end
272
+
265
273
  def update_block_request(block_id, payload)
266
274
  request :patch, block_path(block_id), payload
267
275
  end
@@ -0,0 +1,29 @@
1
+ module NotionRubyMapping
2
+ class Search
3
+
4
+ def initialize(ascending: false, database_only: false, page_only: false, query: nil)
5
+ @ascending = ascending
6
+ @database_only = database_only
7
+ @page_only = page_only
8
+ @query = query
9
+ end
10
+
11
+ def exec(dry_run: false)
12
+ if dry_run
13
+ Base.dry_run_script :post, NotionCache.instance.search_path, payload
14
+ else
15
+ response = NotionCache.instance.search payload
16
+ List.new json: response, type: :search, value: self, query: Query.new
17
+ end
18
+ end
19
+
20
+ def payload
21
+ ans = {}
22
+ ans["sort"] = {"direction" => "ascending", "timestamp" => "last_edited_time"} if @ascending
23
+ ans["filter"] = {"value" => "database", "property" => "object" } if @database_only
24
+ ans["filter"] = {"value" => "page", "property" => "object" } if @page_only
25
+ ans["query"] = @query if @query
26
+ ans
27
+ end
28
+ end
29
+ end
@@ -143,12 +143,10 @@ module NotionRubyMapping
143
143
  # @param [Object] value query value
144
144
  # @return [NotionRubyMapping::Query] generated Query object
145
145
  def make_filter_query(key, value, condition: nil, another_type: nil)
146
- if is_a? FormulaProperty
147
- Query.new filter: {"property" => @name, "formula" => {another_type => {key => value}}}
148
- elsif condition
149
- Query.new filter: {"property" => @name, condition => {another_type => {key => value}}}
146
+ if condition
147
+ Query.new filter: {"property" => @name, type => {condition => {another_type => {key => value}}}}
150
148
  elsif another_type
151
- Query.new filter: {"property" => @name, another_type => {key => value}}
149
+ Query.new filter: {"property" => @name, type => {another_type => {key => value}}}
152
150
  elsif @name == "__timestamp__"
153
151
  Query.new filter: {"timestamp" => type, type => {key => value}}
154
152
  else
@@ -54,12 +54,13 @@ module NotionRubyMapping
54
54
  # @param [String] database_id
55
55
  # @param [String] synced_property_name
56
56
  # @see https://www.notion.so/hkob/RelationProperty-f608ab41a1f0476b98456620346fba03#7f5029fb7f6e4c009f22888b233e6f64
57
- def replace_relation_database(database_id: nil, type: "dual_property", synced_property_name: nil)
57
+ def replace_relation_database(database_id: nil, type: "dual_property")
58
58
  assert_database_property __method__
59
59
  @will_update = true
60
60
  @json["database_id"] = database_id if database_id
61
61
  @json["type"] = type
62
- @json["synced_property_name"] = synced_property_name if synced_property_name
62
+ @json[type] = {}
63
+ @json.delete type == "dual_property" ? "single_property" : "dual_property"
63
64
  @json
64
65
  end
65
66
 
@@ -96,6 +97,18 @@ module NotionRubyMapping
96
97
  ans
97
98
  end
98
99
 
100
+ def database_id
101
+ @json["database_id"]
102
+ end
103
+
104
+ def synced_property_id
105
+ @json["type"] == "dual_property" ? @json["dual_property"]["synced_property_id"] : nil
106
+ end
107
+
108
+ def synced_property_name
109
+ @json["type"] == "dual_property" ? @json["dual_property"]["synced_property_name"] : nil
110
+ end
111
+
99
112
  # @return [Hash] created json
100
113
  def property_values_json
101
114
  assert_page_property __method__
@@ -113,7 +126,7 @@ module NotionRubyMapping
113
126
 
114
127
  # @return [Hash]
115
128
  def property_schema_json_sub
116
- {"database_id" => relation_database_id}
129
+ @json
117
130
  end
118
131
  end
119
132
  end
@@ -43,13 +43,13 @@ module NotionRubyMapping
43
43
  # @return [FalseClass]
44
44
  def clear_will_update
45
45
  super
46
- @text_objects.clear_will_update
46
+ @text_objects.clear_will_update if page?
47
47
  false
48
48
  end
49
49
 
50
50
  # @return [TrueClass, FalseClass] will update?
51
51
  def will_update
52
- @will_update || page? && @text_objects.will_update
52
+ @will_update || (page? && @text_objects.will_update)
53
53
  end
54
54
  end
55
55
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module NotionRubyMapping
4
- VERSION = "0.7.0"
4
+ VERSION = "0.7.2"
5
5
  NOTION_VERSION = "2022-06-28"
6
6
  end
@@ -12,7 +12,8 @@ require_relative "notion_ruby_mapping/version"
12
12
  link_preview_block link_to_page_block numbered_list_item_block paragraph_block pdf_block quote_block
13
13
  synced_block table_block table_row_block table_of_contents_block template_block to_do_block
14
14
  toggle_block video_block],
15
- controllers: %w[notion_cache payload property_cache query rich_text_array discussion_thread],
15
+ controllers: %w[notion_cache payload property_cache query rich_text_array discussion_thread search mermaid
16
+ mermaid_database],
16
17
  objects: %w[rich_text_object emoji_object equation_object file_object mention_object text_object user_object
17
18
  comment_object],
18
19
  properties: %w[property checkbox_property multi_property created_by_property date_base_property created_time_property
@@ -32,4 +33,3 @@ module NotionRubyMapping
32
33
  end
33
34
  module_function :configure
34
35
  end
35
-
@@ -42,6 +42,7 @@ Gem::Specification.new do |spec|
42
42
  spec.add_development_dependency "rake"
43
43
  spec.add_development_dependency "rspec"
44
44
  spec.add_development_dependency "rubocop"
45
+ spec.add_development_dependency "rubocop-rspec"
45
46
  spec.add_development_dependency "webmock"
46
47
 
47
48
  # For more information and examples about making a new gem, check out our
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.7.0
4
+ version: 0.7.2
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-11-30 00:00:00.000000000 Z
11
+ date: 2023-01-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -108,6 +108,20 @@ dependencies:
108
108
  - - ">="
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rubocop-rspec
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
111
125
  - !ruby/object:Gem::Dependency
112
126
  name: webmock
113
127
  requirement: !ruby/object:Gem::Requirement
@@ -126,6 +140,7 @@ description: Mapping tool from Notion Database/Page/Block to Ruby Objects.
126
140
  email:
127
141
  - hkob@metro-cit.ac.jp
128
142
  executables:
143
+ - erdToNotionDb.rb
129
144
  - notionErDiagram.rb
130
145
  - notionSitemap.rb
131
146
  extensions: []
@@ -146,6 +161,7 @@ files:
146
161
  - examples/change_title.md
147
162
  - examples/renumbering_pages.md
148
163
  - examples/set_icon_to_all_icon_unsettled_pages.md
164
+ - exe/erdToNotionDb.rb
149
165
  - exe/notionErDiagram.rb
150
166
  - exe/notionSitemap.rb
151
167
  - images/post_set_icon.png
@@ -197,11 +213,14 @@ files:
197
213
  - lib/notion_ruby_mapping/blocks/url_caption_base_block.rb
198
214
  - lib/notion_ruby_mapping/blocks/video_block.rb
199
215
  - lib/notion_ruby_mapping/controllers/discussion_thread.rb
216
+ - lib/notion_ruby_mapping/controllers/mermaid.rb
217
+ - lib/notion_ruby_mapping/controllers/mermaid_database.rb
200
218
  - lib/notion_ruby_mapping/controllers/notion_cache.rb
201
219
  - lib/notion_ruby_mapping/controllers/payload.rb
202
220
  - lib/notion_ruby_mapping/controllers/property_cache.rb
203
221
  - lib/notion_ruby_mapping/controllers/query.rb
204
222
  - lib/notion_ruby_mapping/controllers/rich_text_array.rb
223
+ - lib/notion_ruby_mapping/controllers/search.rb
205
224
  - lib/notion_ruby_mapping/objects/comment_object.rb
206
225
  - lib/notion_ruby_mapping/objects/emoji_object.rb
207
226
  - lib/notion_ruby_mapping/objects/equation_object.rb
@@ -257,7 +276,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
257
276
  - !ruby/object:Gem::Version
258
277
  version: '0'
259
278
  requirements: []
260
- rubygems_version: 3.3.7
279
+ rubygems_version: 3.4.5
261
280
  signing_key:
262
281
  specification_version: 4
263
282
  summary: Notion Ruby mapping tool