jekyll-notion 1.0.0 → 1.1.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: f85b870a3e8c0aa6ea64575b8ef8541f61183fa25ced6f41570384057a3a36dd
4
- data.tar.gz: c66f6d831e8352f029fc1f81608f751aac1ed2b5959b6c2ee19f861eafcdb6f0
3
+ metadata.gz: 043b3ae753a651d756c95dc6372af86589106030dd3d41d8b886ccc95c5d5d7a
4
+ data.tar.gz: 5a6bf3508185e27978836cd1158ef70a080d53be183c642d7948015f6d7de215
5
5
  SHA512:
6
- metadata.gz: 26fda79bcfce19d75fda17e6f3e1a90080089c05132359b50f00ec3a4d54d844e6ef583bb558c961209d5818465c6ada865413a33f22fea15fdf943ecd213d8d
7
- data.tar.gz: 430aa7ef405283f1568eacf4062a90a60fc0e086ae6c7d68cd96cd1eac5f8208d57d8cdebc02b0e98c653d0bff62b119c4ec6ceb4af31777c2a4a28121e0eb55
6
+ metadata.gz: 74e147fe3f6f91a88bafb24f273284bb71d42f39f207c48f85577229aebb6ceb6de6cbe331b48e6f99afb6191466e9f27d436fb45bc710104a0ac3a80e016c6c
7
+ data.tar.gz: 2257337e331db87e4594e5117739ea7e1082739b3f497a4c63bba7f2dc79d2c173a484fc574ea20eb40d8650c14c84a607c9e17cef9f49174ff97bf79edab73e
data/README.md CHANGED
@@ -40,6 +40,8 @@ notion:
40
40
  id: e42383cd-4975-4897-b967-ce453760499f
41
41
  ```
42
42
 
43
+ After running `jekyll build` (or `serve`) command, the `posts` collection is loaded with pages of the notion database specified in the configuration.
44
+
43
45
  ### Mutiple dabatases
44
46
 
45
47
  You can also define multiple databases as follows.
@@ -58,7 +60,20 @@ notion:
58
60
  collection: films
59
61
  ```
60
62
 
61
- When no collection is defined, the `posts` collection is used by default.
63
+ In this example, the notion database `b0e688e1-99af-4295-ae80-b67eb52f2e2f` pages are mapped into the posts collection. `recipes` and `films` will contain the database pages `2190450d-4cb3-4739-a5c8-340c4110fe21` and `e42383cd-4975-4897-b967-ce453760499f`, respectively.
64
+
65
+ ### data
66
+
67
+ Instead of storing notion pages in a collection, you can also map to the data object. Declare the data property as follows.
68
+
69
+ ```yml
70
+ notion:
71
+ database:
72
+ id: e42383cd-4975-4897-b967-ce453760499f
73
+ data: films
74
+ ```
75
+
76
+ Unlike collections, only the properties of the notion page are assigned to the each data item. The body of the notion page is omitted.
62
77
 
63
78
  ### Database options
64
79
 
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JekyllNotion
4
+ class AbstractGenerator
5
+ def initialize(db:, site:, plugin:)
6
+ @db = db
7
+ @site = site
8
+ @plugin = plugin
9
+ end
10
+
11
+ def generate
12
+ raise "Do not use the AbstractGenerator class directly. Implement the generate method in a subclass."
13
+ end
14
+ end
15
+ end
@@ -1,10 +1,7 @@
1
- module JekyllNotion
2
- class CollectionGenerator
3
- def initialize(db:, site:)
4
- @db = db
5
- @site = site
6
- end
1
+ # frozen_string_literal: true
7
2
 
3
+ module JekyllNotion
4
+ class CollectionGenerator < AbstractGenerator
8
5
  def generate
9
6
  @db.pages.each do |page|
10
7
  next if file_exists?(make_path(page))
@@ -12,7 +9,8 @@ module JekyllNotion
12
9
  collection.docs << make_doc(page)
13
10
  log_new_page(page)
14
11
  end
15
- collection
12
+ # Caching current collection
13
+ @plugin.collections[@db.collection] = collection
16
14
  end
17
15
 
18
16
  def collection
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JekyllNotion
4
+ class DataGenerator < AbstractGenerator
5
+ def generate
6
+ @site.data[@db.data] = data
7
+ # Caching current data
8
+ @plugin.data[@db.data] = data
9
+ end
10
+
11
+ private
12
+
13
+ def data
14
+ @data ||= @db.pages.map(&:props)
15
+ end
16
+ end
17
+ end
@@ -16,17 +16,6 @@ module JekyllNotion
16
16
  end
17
17
  end
18
18
 
19
- protected
20
-
21
- def read_notion_database
22
- databases.each do |db_config|
23
- db = NotionDatabase.new(:config => db_config)
24
- new_collection = CollectionGenerator.new(:db => db, :site => @site).generate
25
- # Caching current collection
26
- collections[db.collection] = new_collection
27
- end
28
- end
29
-
30
19
  def databases
31
20
  config["databases"] || [config["database"]]
32
21
  end
@@ -35,6 +24,19 @@ module JekyllNotion
35
24
  @collections ||= {}
36
25
  end
37
26
 
27
+ def data
28
+ @data ||= {}
29
+ end
30
+
31
+ protected
32
+
33
+ def read_notion_database
34
+ databases.each do |db_config|
35
+ db = NotionDatabase.new(:config => db_config)
36
+ GeneratorFactory.for(:db => db, :site => @site, :plugin => self).generate
37
+ end
38
+ end
39
+
38
40
  def config
39
41
  @config ||= @site.config["notion"] || {}
40
42
  end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JekyllNotion
4
+ class GeneratorFactory
5
+ def self.for(db:, site:, plugin:)
6
+ if db.data.nil?
7
+ CollectionGenerator.new(:db => db, :site => site, :plugin => plugin)
8
+ else
9
+ DataGenerator.new(:db => db, :site => site, :plugin => plugin)
10
+ end
11
+ end
12
+ end
13
+ end
@@ -35,6 +35,10 @@ module JekyllNotion
35
35
  config["collection"] || "posts"
36
36
  end
37
37
 
38
+ def data
39
+ config["data"]
40
+ end
41
+
38
42
  private
39
43
 
40
44
  def id?
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module JekyllNotion
4
- VERSION = "1.0.0"
4
+ VERSION = "1.1.0"
5
5
  end
data/lib/jekyll-notion.rb CHANGED
@@ -13,7 +13,10 @@ Notion.configure do |config|
13
13
  end
14
14
 
15
15
  module JekyllNotion
16
+ autoload :GeneratorFactory, "jekyll-notion/generator_factory"
17
+ autoload :AbstractGenerator, "jekyll-notion/abstract_generator"
16
18
  autoload :CollectionGenerator, "jekyll-notion/collection_generator"
19
+ autoload :DataGenerator, "jekyll-notion/data_generator"
17
20
  autoload :DocumentWithoutAFile, "jekyll-notion/document_without_a_file"
18
21
  autoload :NotionDatabase, "jekyll-notion/notion_database"
19
22
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-notion
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.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-02-17 00:00:00.000000000 Z
11
+ date: 2022-02-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll
@@ -110,9 +110,12 @@ extra_rdoc_files:
110
110
  files:
111
111
  - README.md
112
112
  - lib/jekyll-notion.rb
113
+ - lib/jekyll-notion/abstract_generator.rb
113
114
  - lib/jekyll-notion/collection_generator.rb
115
+ - lib/jekyll-notion/data_generator.rb
114
116
  - lib/jekyll-notion/document_without_a_file.rb
115
117
  - lib/jekyll-notion/generator.rb
118
+ - lib/jekyll-notion/generator_factory.rb
116
119
  - lib/jekyll-notion/notion_database.rb
117
120
  - lib/jekyll-notion/version.rb
118
121
  homepage: https://github.com/emoriarty/jekyll-notion