notion_to_md 2.3.0 → 2.4.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 +4 -0
- data/lib/notion_to_md/blocks/normalizer.rb +8 -13
- data/lib/notion_to_md/blocks/types.rb +2 -2
- data/lib/notion_to_md/page.rb +24 -4
- data/lib/notion_to_md/page_property.rb +13 -3
- data/lib/notion_to_md/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fb94bccdf9dca4374bfaeb42164cce77f3a1963048a96b83a53e238ff9768163
|
4
|
+
data.tar.gz: '039b7d197fc03a6a04ffaf1cb90f3f758dd597a7381a2002da677065d48f2d76'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ce0dd31c6a1eb871468b151e2374311799b802b0f58e6e450bcc24aaa76f586f9755ad63953f3b61b45e0102d1440fa3d8f66538c014dbc921fc8ecf01a69a6f
|
7
|
+
data.tar.gz: 1a008da641c3c449b401ede3e2d65608a47192cae908888bcebd96eba7162e70f7640e549a881c459e9010cd1703248c49fa8d65d3a516489601a80c48e0e87d
|
data/README.md
CHANGED
@@ -102,6 +102,10 @@ created_time: 2022-01-23T12:31:00.000Z
|
|
102
102
|
last_edited_time: 2022-01-23T12:31:00.000Z
|
103
103
|
icon: 💥
|
104
104
|
archived: false
|
105
|
+
created_by_id: db313571-0280-411f-a6de-70e826421d16
|
106
|
+
created_by_object: user
|
107
|
+
last_edited_by_id: db313571-0280-411f-a6de-70e826421d16
|
108
|
+
last_edited_by_object: user
|
105
109
|
---
|
106
110
|
```
|
107
111
|
|
@@ -11,11 +11,10 @@ module NotionToMd
|
|
11
11
|
new(blocks: blocks).normalize
|
12
12
|
end
|
13
13
|
|
14
|
-
attr_reader :
|
14
|
+
attr_reader :normalized_blocks
|
15
15
|
|
16
16
|
def initialize(blocks:)
|
17
|
-
@
|
18
|
-
@normalized_blocks = blocks
|
17
|
+
@normalized_blocks = blocks.dup
|
19
18
|
end
|
20
19
|
|
21
20
|
def normalize
|
@@ -35,23 +34,23 @@ module NotionToMd
|
|
35
34
|
# we need to normalize the blocks we've collected so far.
|
36
35
|
# Then we add the current block to the new blocks array.
|
37
36
|
# This is because we want to keep the order of the blocks.
|
38
|
-
new_blocks <<
|
37
|
+
new_blocks << new_block_and_reset_blocks_to_normalize(type) unless blocks_to_normalize.empty?
|
39
38
|
new_blocks << block
|
40
39
|
end
|
41
40
|
end
|
42
41
|
|
43
|
-
# If the last block is
|
42
|
+
# If the last block is the provided type, it won't be added to the new blocks array.
|
44
43
|
# So, we need to normalize the blocks we've collected so far.
|
45
|
-
new_blocks <<
|
44
|
+
new_blocks << new_block_and_reset_blocks_to_normalize(type) unless blocks_to_normalize.empty?
|
46
45
|
|
47
46
|
normalized_blocks.replace(new_blocks)
|
48
47
|
end
|
49
48
|
|
50
49
|
private
|
51
50
|
|
52
|
-
def
|
53
|
-
new_block = new_block_for(type,
|
54
|
-
|
51
|
+
def new_block_and_reset_blocks_to_normalize(type)
|
52
|
+
new_block = new_block_for(type, blocks_to_normalize)
|
53
|
+
@blocks_to_normalize = []
|
55
54
|
new_block
|
56
55
|
end
|
57
56
|
|
@@ -59,10 +58,6 @@ module NotionToMd
|
|
59
58
|
@blocks_to_normalize ||= []
|
60
59
|
end
|
61
60
|
|
62
|
-
def reset_blocks_to_normalize
|
63
|
-
@blocks_to_normalize = []
|
64
|
-
end
|
65
|
-
|
66
61
|
def new_block_for(type, children)
|
67
62
|
case type
|
68
63
|
when :bulleted_list_item
|
@@ -5,7 +5,7 @@ module NotionToMd
|
|
5
5
|
class Types
|
6
6
|
class << self
|
7
7
|
def paragraph(block)
|
8
|
-
return blank if block
|
8
|
+
return blank if block[:rich_text].empty?
|
9
9
|
|
10
10
|
convert_text(block)
|
11
11
|
end
|
@@ -124,7 +124,7 @@ module NotionToMd
|
|
124
124
|
href = text[:href]
|
125
125
|
return content if href.nil?
|
126
126
|
|
127
|
-
"[#{content}](#{href})"
|
127
|
+
"[#{content}](#{CGI.unescape(href)})"
|
128
128
|
end
|
129
129
|
|
130
130
|
def add_annotations(text, content)
|
data/lib/notion_to_md/page.rb
CHANGED
@@ -29,11 +29,27 @@ module NotionToMd
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def created_time
|
32
|
-
|
32
|
+
page['created_time']
|
33
|
+
end
|
34
|
+
|
35
|
+
def created_by_object
|
36
|
+
page.dig(:created_by, :object)
|
37
|
+
end
|
38
|
+
|
39
|
+
def created_by_id
|
40
|
+
page.dig(:created_by, :id)
|
33
41
|
end
|
34
42
|
|
35
43
|
def last_edited_time
|
36
|
-
|
44
|
+
page['last_edited_time']
|
45
|
+
end
|
46
|
+
|
47
|
+
def last_edited_by_object
|
48
|
+
page.dig(:last_edited_by, :object)
|
49
|
+
end
|
50
|
+
|
51
|
+
def last_edited_by_id
|
52
|
+
page.dig(:last_edited_by, :id)
|
37
53
|
end
|
38
54
|
|
39
55
|
def url
|
@@ -77,12 +93,16 @@ module NotionToMd
|
|
77
93
|
def default_props
|
78
94
|
@default_props ||= {
|
79
95
|
'id' => id,
|
80
|
-
'title' => title,
|
96
|
+
'title' => title.dump,
|
81
97
|
'created_time' => created_time,
|
82
98
|
'cover' => cover,
|
83
99
|
'icon' => icon,
|
84
100
|
'last_edited_time' => last_edited_time,
|
85
|
-
'archived' => archived
|
101
|
+
'archived' => archived,
|
102
|
+
'created_by_object' => created_by_object,
|
103
|
+
'created_by_id' => created_by_id,
|
104
|
+
'last_edited_by_object' => last_edited_by_object,
|
105
|
+
'last_edited_by_id' => last_edited_by_id
|
86
106
|
}
|
87
107
|
end
|
88
108
|
|
@@ -28,7 +28,7 @@ module NotionToMd
|
|
28
28
|
end
|
29
29
|
|
30
30
|
def select(prop)
|
31
|
-
prop.dig(:select, :name)
|
31
|
+
prop.dig(:select, :name).dump
|
32
32
|
rescue NoMethodError
|
33
33
|
nil
|
34
34
|
end
|
@@ -73,7 +73,16 @@ module NotionToMd
|
|
73
73
|
# - end
|
74
74
|
# - time_zone
|
75
75
|
def date(prop)
|
76
|
-
prop.dig(:date, :start)
|
76
|
+
date = prop.dig(:date, :start)
|
77
|
+
|
78
|
+
case date
|
79
|
+
when Date
|
80
|
+
date.to_time
|
81
|
+
when String
|
82
|
+
Time.parse(date)
|
83
|
+
else
|
84
|
+
date # Time or nil
|
85
|
+
end
|
77
86
|
rescue NoMethodError
|
78
87
|
nil
|
79
88
|
end
|
@@ -85,7 +94,8 @@ module NotionToMd
|
|
85
94
|
end
|
86
95
|
|
87
96
|
def rich_text(prop)
|
88
|
-
prop[:rich_text].map { |text| text[:plain_text] }.join
|
97
|
+
text = prop[:rich_text].map { |text| text[:plain_text] }.join
|
98
|
+
text.blank? ? nil : text.dump
|
89
99
|
rescue NoMethodError
|
90
100
|
nil
|
91
101
|
end
|
data/lib/notion_to_md/version.rb
CHANGED
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: 2.
|
4
|
+
version: 2.4.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: 2023-
|
11
|
+
date: 2023-12-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|