dimples 5.0.0 → 5.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: 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