notion_to_md 1.0.0 → 1.2.0

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: 924eafad078f99447e1a9d88403d48448e5011c87a9d2ae32b527a9e4a201f85
4
- data.tar.gz: 791bf46ea8cfbb49958cc80862fe63047e1158f4845f21665ce21d20b37628ad
3
+ metadata.gz: 4e623e752d6bbe53643139220d1f47f17ca411298a985bb2889a69d6dc9070d3
4
+ data.tar.gz: 03631f5fb4b9d8a5e3faa4cce66d14bd89e65bc42bf62b22b90f267456b40f14
5
5
  SHA512:
6
- metadata.gz: e50e6688db3930ecca7c808d357fe07799465dfa5274a6b0141d97de5adb204f361782240c35152c21165eb8e68cdbf44a04e696006cd345293948825a2a74da
7
- data.tar.gz: 349e89d00109d05b7dfe24499a80dc0318cf6895524e527b025ef02325bc27f06775544f20a995166cef1229b62aacd6344c1331c2c7549eb01f3be5181198cb
6
+ metadata.gz: cd44a229e6e53a802008bde4e7791087c9fe92172d7ce30f575e1cc31d3a268c1f2b17ffb2502a2436ec815eea5e55bfecebb8dcf25dc9d03d783818a899e411
7
+ data.tar.gz: a7e89786e1e35a23d946c5ae877051259f9496997fd6ea8fe8b1bf32b6cefe0ce10e197c38d5dabc21951d6b3a54b249eeac63c9223c484939290dcde950736c
data/README.md CHANGED
@@ -40,8 +40,24 @@ md = notion_converter.convert
40
40
 
41
41
  And that's all. The `md` is a string variable containing the notion page formatted in markdown.
42
42
 
43
+ ## Blocks
43
44
 
44
- ### Front matter
45
+ Everything in a notion page body is a [block object](https://developers.notion.com/reference/block#block-object-keys). Therefore, not every type can be mapped to Markdown. Below there's a list of current supported blocks types.
46
+
47
+ * `paragraph`
48
+ * `heading_1`
49
+ * `heading_2`
50
+ * `heading_3`
51
+ * `bulleted_list_item`
52
+ * `numbered_list_item` as `bulleted_list_item`
53
+ * `to_do`
54
+ * `image`
55
+ * `bookmark`
56
+ * `callout`
57
+ * `quote`
58
+ * `divider`
59
+
60
+ ## Front matter
45
61
 
46
62
  From version 0.2.0, notion_to_md supports front matter in markdown files.
47
63
 
@@ -51,7 +67,7 @@ By default, the front matter section is not included to the document. To do so,
51
67
  NotionToMd::Converter.new(page_id: 'b91d5...').convert(frontmatter: tue)
52
68
  ```
53
69
 
54
- Default notion properties are page `id`, `title`, `created_time`, `last_edited_time`, `icon`, `archived` and `cover`.
70
+ Default notion [properties](https://developers.notion.com/reference/page#all-pages) are page `id`, `title`, `created_time`, `last_edited_time`, `icon`, `archived` and `cover`.
55
71
 
56
72
  ```yml
57
73
  ---
@@ -88,8 +104,9 @@ The supported property types are:
88
104
  * `url`
89
105
  * `email`
90
106
  * `phone_number`
107
+ * `rich_text`, supported but in plain text
91
108
 
92
- `rich_text` as advanced types like `formula`, `relation` and `rollup` are not supported.
109
+ Advanced types like `formula`, `relation` and `rollup` are not supported.
93
110
 
94
111
  Check notion documentation about [property values](https://developers.notion.com/reference/property-value-object#all-property-values) to know more.
95
112
 
@@ -33,7 +33,6 @@ module NotionToMd
33
33
  "- #{convert_text(block)}"
34
34
  end
35
35
 
36
- # TODO: numbered_list_item
37
36
  def numbered_list_item(block)
38
37
  Logger.info('numbered_list_item type not supported. Shown as bulleted_list_item.')
39
38
  bulleted_list_item(block)
@@ -50,7 +49,7 @@ module NotionToMd
50
49
  language = block[:language]
51
50
  text = convert_text(block)
52
51
 
53
- "```#{language}\n\t#{text}\n```"
52
+ "```#{language}\n#{text}\n```"
54
53
  end
55
54
 
56
55
  def embed(block)
@@ -81,14 +80,14 @@ module NotionToMd
81
80
  end
82
81
 
83
82
  def convert_text(block)
84
- block[:text].map do |text|
83
+ block[:rich_text].map do |text|
85
84
  content = Text.send(text[:type], text)
86
85
  enrich_text_content(text, content)
87
86
  end.join
88
87
  end
89
88
 
90
89
  def convert_caption(block)
91
- convert_text(text: block[:caption])
90
+ convert_text(rich_text: block[:caption])
92
91
  end
93
92
 
94
93
  def get_icon(block)
@@ -20,11 +20,11 @@ module NotionToMd
20
20
  private
21
21
 
22
22
  def page
23
- @page ||= @notion.page(id: page_id)
23
+ @page ||= @notion.page(page_id: page_id)
24
24
  end
25
25
 
26
26
  def page_blocks
27
- @page_blocks ||= @notion.block_children(id: page_id)
27
+ @page_blocks ||= @notion.block_children(block_id: page_id)
28
28
  end
29
29
  end
30
30
  end
@@ -45,7 +45,7 @@ module NotionToMd
45
45
 
46
46
  def body
47
47
  @body ||= blocks[:results].map do |block|
48
- next Block.blank if block[:type] == 'paragraph' && block.dig(:paragraph, :text).empty?
48
+ next Block.blank if block[:type] == 'paragraph' && block.dig(:paragraph, :rich_text).empty?
49
49
 
50
50
  block_type = block[:type].to_sym
51
51
 
@@ -140,6 +140,10 @@ module NotionToMd
140
140
  def url(prop)
141
141
  prop.url
142
142
  end
143
+
144
+ def rich_text(prop)
145
+ prop.rich_text.map(&:plain_text).join
146
+ end
143
147
  end
144
148
  end
145
149
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module NotionToMd
4
- VERSION = '1.0.0'
4
+ VERSION = '1.2.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: notion_to_md
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Enrique Arias
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-03-06 00:00:00.000000000 Z
11
+ date: 2022-04-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '6'
19
+ version: '7'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '6'
26
+ version: '7'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: notion-ruby-client
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.0.8
33
+ version: '1'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.0.8
40
+ version: '1'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: hashie
43
43
  requirement: !ruby/object:Gem::Requirement