jekyll 3.1.5 → 3.1.6

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of jekyll might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e9bb463108a912141ea62519f0bdc81fae3a6d13
4
- data.tar.gz: 23d8dd8e5debaa25629fa60f66abc5a4cc45a71c
3
+ metadata.gz: 94f9cf84e2e166318a010d9830c88946ae04deec
4
+ data.tar.gz: c004941e48a5ac91b1a1d4621d4d5b46fae3ae5a
5
5
  SHA512:
6
- metadata.gz: 25338fa1d266b0d40e8ad9588e9dbd082dbd1f43b173546849556cd70880c7a13610a3adca57565b04607469580b298690f34b6ed58ef5de24dc1ec9fa11862b
7
- data.tar.gz: af318e2939e059fc1dde55b12d9b5c9713ec284760ecd642b9e74b225e95a6ef8a863c02653ee8ffd993e20b851f765b3399354c6c73b45ca807703c24a52528
6
+ metadata.gz: 416cf930d756be71e48285d54fc35a6baa54033d9589c2cdecd7e3372d82f1d67c81051a267768ffb3ebdd18735db8514ad9df88272d78d4824fb56f681934f5
7
+ data.tar.gz: e19b78a77f2b60f5f212811b5f461a94d2f8149d18c1267b01544a88f2c7e1b4122a6e698f228d9f482fda6aa4c49944e3eea483a3fc5c176ae4943c9fe236ba
@@ -5,10 +5,12 @@ module Jekyll
5
5
  class DocumentDrop < Drop
6
6
  extend Forwardable
7
7
 
8
+ NESTED_OBJECT_FIELD_BLACKLIST = %w{
9
+ content output excerpt next previous
10
+ }.freeze
11
+
8
12
  mutable false
9
13
 
10
- def_delegator :@obj, :next_doc, :next
11
- def_delegator :@obj, :previous_doc, :previous
12
14
  def_delegator :@obj, :relative_path, :path
13
15
  def_delegators :@obj, :id, :output, :content, :to_s, :relative_path, :url
14
16
 
@@ -20,6 +22,37 @@ module Jekyll
20
22
  fallback_data['excerpt'].to_s
21
23
  end
22
24
 
25
+ def previous
26
+ @obj.previous_doc.to_liquid
27
+ end
28
+
29
+ def next
30
+ @obj.next_doc.to_liquid
31
+ end
32
+
33
+ # Generate a Hash for use in generating JSON.
34
+ # This is useful if fields need to be cleared before the JSON can generate.
35
+ #
36
+ # Returns a Hash ready for JSON generation.
37
+ def hash_for_json(state = nil)
38
+ to_h.tap do |hash|
39
+ if state && state.depth >= 2
40
+ hash["previous"] = collapse_document(hash["previous"]) if hash["previous"]
41
+ hash["next"] = collapse_document(hash["next"]) if hash["next"]
42
+ end
43
+ end
44
+ end
45
+
46
+ # Generate a Hash which breaks the recursive chain.
47
+ # Certain fields which are normally available are omitted.
48
+ #
49
+ # Returns a Hash with only non-recursive fields present.
50
+ def collapse_document(doc)
51
+ doc.keys.each_with_object({}) do |(key, _), result|
52
+ result[key] = doc[key] unless NESTED_OBJECT_FIELD_BLACKLIST.include?(key)
53
+ end
54
+ end
55
+
23
56
  private
24
57
  def_delegator :@obj, :data, :fallback_data
25
58
  end
@@ -3,7 +3,9 @@
3
3
  module Jekyll
4
4
  module Drops
5
5
  class Drop < Liquid::Drop
6
- NON_CONTENT_METHODS = [:fallback_data].freeze
6
+ include Enumerable
7
+
8
+ NON_CONTENT_METHODS = [:fallback_data, :collapse_document].freeze
7
9
 
8
10
  # Get or set whether the drop class is mutable.
9
11
  # Mutability determines whether or not pre-defined fields may be
@@ -138,6 +140,22 @@ module Jekyll
138
140
  JSON.pretty_generate to_h
139
141
  end
140
142
 
143
+ # Generate a Hash for use in generating JSON.
144
+ # This is useful if fields need to be cleared before the JSON can generate.
145
+ #
146
+ # Returns a Hash ready for JSON generation.
147
+ def hash_for_json(state = nil)
148
+ to_h
149
+ end
150
+
151
+ # Generate a JSON representation of the Drop.
152
+ #
153
+ # Returns a JSON representation of the Drop in a String.
154
+ def to_json(state = nil)
155
+ require 'json'
156
+ JSON.generate(hash_for_json(state), state)
157
+ end
158
+
141
159
  # Collects all the keys and passes each to the block in turn.
142
160
  #
143
161
  # block - a block which accepts one argument, the key
@@ -16,6 +16,18 @@ module Jekyll
16
16
  def environment
17
17
  Jekyll.env
18
18
  end
19
+
20
+ def to_h
21
+ @to_h ||= {
22
+ "version" => version,
23
+ "environment" => environment
24
+ }
25
+ end
26
+
27
+ def to_json(state = nil)
28
+ require 'json'
29
+ JSON.generate(to_h, state)
30
+ end
19
31
  end
20
32
  end
21
33
  end
@@ -262,6 +262,7 @@ module Jekyll
262
262
  def site_payload
263
263
  Drops::UnifiedPayloadDrop.new self
264
264
  end
265
+ alias_method :to_liquid, :site_payload
265
266
 
266
267
  # Get the implementation class for the given Converter.
267
268
  # Returns the Converter instance implementing the given Converter.
@@ -1,3 +1,3 @@
1
1
  module Jekyll
2
- VERSION = '3.1.5'
2
+ VERSION = '3.1.6'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.5
4
+ version: 3.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tom Preston-Werner