octopress-hooks 2.4.1 → 2.5.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/CHANGELOG.md +3 -0
- data/README.md +15 -15
- data/lib/octopress-hooks.rb +27 -10
- data/lib/octopress-hooks/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b5489d93d6480735a17b982c3cbe72eaa2ac0158
|
4
|
+
data.tar.gz: 4d845ad77101c20506aa6d0f73a1ce70910d1046
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4b1e7f334b3976066a6050c289d4c3495bac4c7e2d28eedd2d6d0a5ff8d65df5280c5e50a27766881b3e0429e0cb631893ccace3603e092e512b780551b7a111
|
7
|
+
data.tar.gz: 13038c6045c7560470a228ebbe99edf46ad41d117a655bb0d15c286d2cea62eca362e5ff2613225de7f5ffde657d0e2849e5dd579e253c13583a9d7a14143ae4
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
### 2.5.0 - 2015-02-16
|
4
|
+
- New: `deep_merge_payload` hook allows Posts, Pages, and Documents to have control over the way the payload is merged. (Expert level)
|
5
|
+
|
3
6
|
### 2.4.1 - 2015-01-30
|
4
7
|
- Fix: Collection rendering issues for no-output collection items.
|
5
8
|
|
data/README.md
CHANGED
@@ -20,6 +20,21 @@ Or install it yourself as:
|
|
20
20
|
|
21
21
|
$ gem install octopress-hooks
|
22
22
|
|
23
|
+
## Hook timeline
|
24
|
+
|
25
|
+
This is the order in which hooks are triggered.
|
26
|
+
|
27
|
+
1. Site `pre_read`
|
28
|
+
2. Site `post_read`
|
29
|
+
3. Post/Page/Document `post_init`
|
30
|
+
4. Site `pre_render`
|
31
|
+
5. Site `merge_payload`
|
32
|
+
6. Post/Page/Document `pre_render`
|
33
|
+
5. Post/Page/Document `merge_payload`
|
34
|
+
7. Post/Page/Document `post_render`
|
35
|
+
8. Post/Page/Document `post_write`
|
36
|
+
9. Site `post_write`
|
37
|
+
|
23
38
|
## Usage
|
24
39
|
|
25
40
|
First extend the appropriate Hook class.
|
@@ -142,21 +157,6 @@ module Samurai
|
|
142
157
|
end
|
143
158
|
```
|
144
159
|
|
145
|
-
### Hook timeline
|
146
|
-
|
147
|
-
Just to be clear, this is the order in which these hooks are triggered.
|
148
|
-
|
149
|
-
1. Site `pre_read`
|
150
|
-
2. Site `post_read`
|
151
|
-
3. Post/Page/Document `post_init`
|
152
|
-
4. Site `pre_render`
|
153
|
-
5. Site `merge_payload`
|
154
|
-
6. Post/Page/Document `pre_render`
|
155
|
-
5. Post/Page/Document `merge_payload`
|
156
|
-
7. Post/Page/Document `post_render`
|
157
|
-
8. Post/Page/Document `post_write`
|
158
|
-
9. Site `post_write`
|
159
|
-
|
160
160
|
## Contributing
|
161
161
|
|
162
162
|
1. Fork it ( https://github.com/octopress/hooks/fork )
|
data/lib/octopress-hooks.rb
CHANGED
@@ -63,6 +63,17 @@ module Octopress
|
|
63
63
|
payload
|
64
64
|
end
|
65
65
|
|
66
|
+
# Merges payload with original page payload
|
67
|
+
# Allowing merged_payload to return hash fragments, for example:
|
68
|
+
# merge_payload can return { awesome => true } and it will be merged
|
69
|
+
# into the full payload.
|
70
|
+
#
|
71
|
+
# Retuns: a payload that has been deep merged with the original page's payload
|
72
|
+
#
|
73
|
+
def deep_merge_payload(page_payload, hook_payload)
|
74
|
+
Jekyll::Utils.deep_merge_hashes(page_payload, hook_payload)
|
75
|
+
end
|
76
|
+
|
66
77
|
# Called after the post is rendered with the converter.
|
67
78
|
# Use the post object to modify it's contents before the
|
68
79
|
# post is inserted into the template.
|
@@ -81,6 +92,9 @@ module Octopress
|
|
81
92
|
class Post < Jekyll::Plugin
|
82
93
|
def post_init(post); end
|
83
94
|
def merge_payload(payload, post); payload; end
|
95
|
+
def deep_merge_payload(page_payload, hook_payload)
|
96
|
+
Jekyll::Utils.deep_merge_hashes(page_payload, hook_payload)
|
97
|
+
end
|
84
98
|
def pre_render(post); end
|
85
99
|
def post_render(post); end
|
86
100
|
def post_write(post); end
|
@@ -89,6 +103,9 @@ module Octopress
|
|
89
103
|
class Document < Jekyll::Plugin
|
90
104
|
def post_init(doc); end
|
91
105
|
def merge_payload(payload, doc); payload; end
|
106
|
+
def deep_merge_payload(page_payload, hook_payload)
|
107
|
+
Jekyll::Utils.deep_merge_hashes(page_payload, hook_payload)
|
108
|
+
end
|
92
109
|
def pre_render(doc); end
|
93
110
|
def post_render(doc); end
|
94
111
|
def post_write(doc); end
|
@@ -97,6 +114,9 @@ module Octopress
|
|
97
114
|
class All < Jekyll::Plugin
|
98
115
|
def post_init(item); end
|
99
116
|
def merge_payload(payload, item); payload; end
|
117
|
+
def deep_merge_payload(page_payload, hook_payload)
|
118
|
+
Jekyll::Utils.deep_merge_hashes(page_payload, hook_payload)
|
119
|
+
end
|
100
120
|
def pre_render(item); end
|
101
121
|
def post_render(item); end
|
102
122
|
def post_write(item); end
|
@@ -175,10 +195,9 @@ module Jekyll
|
|
175
195
|
payload = old_site_payload
|
176
196
|
|
177
197
|
site_hooks.each do |hook|
|
178
|
-
p = hook.merge_payload(payload, self)
|
179
|
-
|
180
|
-
|
181
|
-
end
|
198
|
+
p = hook.merge_payload(payload, self)
|
199
|
+
next unless p && p.is_a?(Hash)
|
200
|
+
payload = Jekyll::Utils.deep_merge_hashes(payload, p)
|
182
201
|
end
|
183
202
|
payload
|
184
203
|
end
|
@@ -248,9 +267,8 @@ module Jekyll
|
|
248
267
|
def merge_payload(payload)
|
249
268
|
hooks.each do |hook|
|
250
269
|
p = hook.merge_payload(payload, self)
|
251
|
-
|
252
|
-
|
253
|
-
end
|
270
|
+
next unless p && p.is_a?(Hash)
|
271
|
+
payload = hook.deep_merge_payload(payload, p)
|
254
272
|
end
|
255
273
|
payload
|
256
274
|
end
|
@@ -350,9 +368,8 @@ module Jekyll
|
|
350
368
|
def merge_payload(payload)
|
351
369
|
hooks.each do |hook|
|
352
370
|
p = hook.merge_payload(payload, self)
|
353
|
-
|
354
|
-
|
355
|
-
end
|
371
|
+
next unless p && p.is_a?(Hash)
|
372
|
+
payload = hook.deep_merge_payload(payload, p)
|
356
373
|
end
|
357
374
|
payload
|
358
375
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: octopress-hooks
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brandon Mathis
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-02-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|