dimples 5.0.0 → 5.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d7a2db6d510cc724696cd9255569144515c7ad9afd10b4a6da596f50f492d4f9
4
- data.tar.gz: f55f43d79d5137c22ccea11e27c50be6de043ee794f3d3ae3ea212508da6bebb
3
+ metadata.gz: 6b63753932d375ea07672f810b718d628711fcfea4eca7903d4f42816eda0f48
4
+ data.tar.gz: 5ccf23b0581915612adb9b7c4a6d045c2e0316b8d43cb58b764e16a40ffa0413
5
5
  SHA512:
6
- metadata.gz: c86532b5690b9bc411d18357101799fe3e6e9c0a2c33ef9fabc2f3975b3fa9551cb45ae97768dcd96a6b0ec7388ceaba4bcdf0dc5a40b3a800ce10b3878c3085
7
- data.tar.gz: 815be09d293fba723038a6fb0bbc6123434e03b34bdd7aa52438f276b234ea9e52cf661c2efa0c1120d72533c2149a81b2e5f8a87381ba1f666108b9166ed566
6
+ metadata.gz: 3647f33e23be41293053ba18653debd6388b7419011a56462a1aecd448ec1d908e9c66ac893136ed26e1b05630d1c14e0370aba31b0da2285a5056258aa6997e
7
+ data.tar.gz: c183aa6bce34f42eefd0620a4e290ce85893969ddcb30656b3b5443ec29a93e9da1013e9ddcd370f673fee5a00410e94619003a8fb234d0bf7f428ccc78b300e
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Dimples
4
+ # A single post category for a site.
4
5
  class Category
5
6
  attr_accessor :name
6
7
  attr_accessor :slug
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Dimples
4
+ # Default configuration options for a site.
4
5
  module Configuration
5
6
  def self.defaults
6
7
  {
@@ -11,7 +12,7 @@ module Dimples
11
12
  date_formats: default_date_formats,
12
13
  feed_formats: default_feed_formats,
13
14
  category_names: {},
14
- rendering: {},
15
+ rendering: {}
15
16
  }
16
17
  end
17
18
 
@@ -32,7 +33,7 @@ module Dimples
32
33
  day_archives: true,
33
34
  categories: true,
34
35
  main_feed: true,
35
- category_feeds: true,
36
+ category_feeds: true
36
37
  }
37
38
  end
38
39
 
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Dimples
4
+ # Adds the ability to read frontmatter from a file.
4
5
  module Frontable
5
6
  def read_with_front_matter(path)
6
7
  contents = File.read(path)
data/lib/dimples/page.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Dimples
4
+ # A single page on a site.
4
5
  class Page
5
6
  include Frontable
6
7
 
data/lib/dimples/pager.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Dimples
4
+ # A paginated collection of posts that can be walked forward or backwards.
4
5
  class Pager
5
6
  include Enumerable
6
7
 
@@ -1,10 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Dimples
4
+ # A Ruby class that can receive events from Dimples as a site is processed.
4
5
  class Plugin
5
6
  EVENTS = %i[
6
- post_write
7
- page_write
7
+ before_site_generation
8
+ after_site_generation
9
+ before_post_write
10
+ before_page_write
11
+ after_post_write
12
+ after_page_write
8
13
  ].freeze
9
14
 
10
15
  def self.inherited(subclass)
@@ -15,12 +20,10 @@ module Dimples
15
20
  @plugins ||= @subclasses&.map { |subclass| subclass.new(site) }
16
21
  end
17
22
 
18
- def self.process(site, event, item, &block)
23
+ def self.send_event(site, event, item = nil)
19
24
  plugins(site)&.each do |plugin|
20
- plugin.process(event, item, &block) if plugin.supports_event?(event)
25
+ plugin.process(event, item) if plugin.supports_event?(event)
21
26
  end
22
-
23
- yield if block_given?
24
27
  end
25
28
 
26
29
  def initialize(site)
data/lib/dimples/post.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Dimples
4
+ # A single dated post on a site.
4
5
  class Post < Page
5
6
  POST_FILENAME = /(\d{4})-(\d{2})-(\d{2})-(.+)/
6
7
 
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Dimples
4
+ # A wrapper around Tilt, tied to a single post, page or template.
4
5
  class Renderer
5
6
  def initialize(site, source)
6
7
  @site = site
@@ -14,7 +15,10 @@ module Dimples
14
15
  output = engine.render(scope, context) { body }.strip
15
16
  @source.metadata[:rendered_contents] = output
16
17
 
17
- template = @site.templates[@source.metadata[:layout]]
18
+ if @source.metadata[:layout]
19
+ template = @site.templates[@source.metadata[:layout]]
20
+ end
21
+
18
22
  return output if template.nil?
19
23
 
20
24
  template.render(context, output)
data/lib/dimples/site.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Dimples
4
+ # A collection of pages, posts and templates that can generate a website.
4
5
  class Site
5
6
  attr_reader :config
6
7
  attr_reader :categories
@@ -28,6 +29,8 @@ module Dimples
28
29
  end
29
30
 
30
31
  def generate
32
+ trigger_event(:before_site_generation)
33
+
31
34
  prepare
32
35
 
33
36
  read_templates
@@ -41,6 +44,8 @@ module Dimples
41
44
  publish_pages
42
45
  publish_archives
43
46
  publish_categories if @config.generation.categories
47
+
48
+ trigger_event(:after_site_generation)
44
49
  rescue PublishingError, RenderingError, GenerationError => error
45
50
  @errors << error
46
51
  end
@@ -128,15 +133,17 @@ module Dimples
128
133
 
129
134
  def publish_posts
130
135
  @posts.each do |post|
131
- Plugin.process(self, :post_write, post) do
132
- path = File.join(
133
- @paths[:output],
134
- post.date.strftime(@config.paths.posts),
135
- post.slug
136
- )
137
-
138
- post.write(path)
139
- end
136
+ trigger_event(:before_post_write, post)
137
+
138
+ path = File.join(
139
+ @paths[:output],
140
+ post.date.strftime(@config.paths.posts),
141
+ post.slug
142
+ )
143
+
144
+ post.write(path)
145
+
146
+ trigger_event(:after_post_write, post)
140
147
  end
141
148
 
142
149
  publish_feeds(@posts, @paths[:output]) if @config.generation.main_feed
@@ -144,18 +151,20 @@ module Dimples
144
151
 
145
152
  def publish_pages
146
153
  @pages.each do |page|
147
- Plugin.process(self, :page_write, page) do
148
- path = if page.path
149
- File.dirname(page.path).sub(
150
- @paths[:sources][:pages],
151
- @paths[:output]
152
- )
153
- else
154
+ trigger_event(:before_page_write, page)
155
+
156
+ path = if page.path
157
+ File.dirname(page.path).sub(
158
+ @paths[:sources][:pages],
154
159
  @paths[:output]
155
- end
160
+ )
161
+ else
162
+ @paths[:output]
163
+ end
156
164
 
157
- page.write(path)
158
- end
165
+ page.write(path)
166
+
167
+ trigger_event(:after_page_write, page)
159
168
  end
160
169
  end
161
170
 
@@ -270,5 +279,9 @@ module Dimples
270
279
  def archive_day(year, month, day)
271
280
  @archives[:day]["#{year}-#{month}-#{day}"] ||= []
272
281
  end
282
+
283
+ def trigger_event(event, item = nil)
284
+ Plugin.send_event(self, event, item)
285
+ end
273
286
  end
274
287
  end
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Dimples
4
+ # A single template used when rendering pages, posts and other templates.
4
5
  class Template
5
6
  include Frontable
6
7
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Dimples
4
- VERSION = '5.0.0'
4
+ VERSION = '5.1.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dimples
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.0.0
4
+ version: 5.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Bogan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-02-20 00:00:00.000000000 Z
11
+ date: 2018-03-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: hashie