jekyll-include-cache 0.2.0 → 0.2.2

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: 3e6037c7adef63e056b1e55aea33af25cf9ac078fce0cf85862384ba21c63ca3
4
- data.tar.gz: 75b0fa20d4e03178622426c22251a6f19662ad3892d99886ab884e674e772ad6
3
+ metadata.gz: f946d79dcbf820b5aa6d6db11a37a0e5746c23ccc3ba4db4041f59cb94e39521
4
+ data.tar.gz: df990433cc6daed63dc0bd1d2a5b82fb74da693a4f91ea9338fbb327021595d7
5
5
  SHA512:
6
- metadata.gz: a9764c74d5e856dcb20221b0140029c52f70a179b6778619a81e7e80e9d6c639230252ab272128409efad98768794e4e274a3784cd0e47d23f6f03f69b5c7a28
7
- data.tar.gz: facde92105c74ea1f97620df3bb3441946ab6df071e8675d3b1bf3135a1507abe609f4ca70a74bfc4238119f651874a384ca87d965d6707a1f57683148371519
6
+ metadata.gz: f4adba885778a92c25f9856bbcfdc764ecf2ee733eb1d683fc88497a9db1607feaae6c351e25ebbaee4f6931f30c3bf72d32633277f73db947d65f51cce1c5dd
7
+ data.tar.gz: bb750103867e6b6709b9445cd95c26adad3e234df0f00c2343a9732924df019dfea79f63e7b6ea1254350823e5ba92e5566b41777bb0eb3a2c6acd9f8769ff9a
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Jekyll 4.x comptable caching class for pre-4.x compatability
3
+ # Jekyll 4.x comptable caching class for pre-4.x compatibility
4
4
  module JekyllIncludeCache
5
5
  class Cache
6
6
  extend Forwardable
@@ -4,6 +4,10 @@ require "digest/md5"
4
4
 
5
5
  module JekyllIncludeCache
6
6
  class Tag < Jekyll::Tags::IncludeTag
7
+ def self.digest_cache
8
+ @digest_cache ||= {}
9
+ end
10
+
7
11
  def render(context)
8
12
  path = path(context)
9
13
  params = parse_params(context) if @params
@@ -28,7 +32,36 @@ module JekyllIncludeCache
28
32
  end
29
33
 
30
34
  def key(path, params)
31
- Digest::MD5.hexdigest(path.to_s + params.to_s)
35
+ path_hash = path.hash
36
+ params_hash = quick_hash(params)
37
+ self.class.digest_cache[path_hash] ||= {}
38
+ self.class.digest_cache[path_hash][params_hash] ||= digest(path_hash, params_hash)
39
+ end
40
+
41
+ def quick_hash(params)
42
+ return params.hash unless params
43
+
44
+ md5 = Digest::MD5.new
45
+
46
+ params.sort.each do |_, value|
47
+ # Using the fact that Jekyll documents don't change during a build.
48
+ # Instead of calculating the hash of an entire document (expensive!)
49
+ # we just use its object id.
50
+ if value.is_a? Jekyll::Drops::Drop
51
+ md5.update value.object_id.to_s
52
+ else
53
+ md5.update value.hash.to_s
54
+ end
55
+ end
56
+
57
+ md5.hexdigest
58
+ end
59
+
60
+ def digest(path_hash, params_hash)
61
+ md5 = Digest::MD5.new
62
+ md5.update path_hash.to_s
63
+ md5.update params_hash.to_s
64
+ md5.hexdigest
32
65
  end
33
66
  end
34
67
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module JekyllIncludeCache
4
- VERSION = "0.2.0"
4
+ VERSION = "0.2.2"
5
5
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-include-cache
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Balter
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2019-03-21 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: jekyll
@@ -50,14 +49,14 @@ dependencies:
50
49
  requirements:
51
50
  - - "~>"
52
51
  - !ruby/object:Gem::Version
53
- version: '0.51'
52
+ version: '1.0'
54
53
  type: :development
55
54
  prerelease: false
56
55
  version_requirements: !ruby/object:Gem::Requirement
57
56
  requirements:
58
57
  - - "~>"
59
58
  - !ruby/object:Gem::Version
60
- version: '0.51'
59
+ version: '1.0'
61
60
  - !ruby/object:Gem::Dependency
62
61
  name: rubocop-jekyll
63
62
  requirement: !ruby/object:Gem::Requirement
@@ -72,7 +71,90 @@ dependencies:
72
71
  - - "~>"
73
72
  - !ruby/object:Gem::Version
74
73
  version: '0.3'
75
- description:
74
+ - !ruby/object:Gem::Dependency
75
+ name: rubocop-performance
76
+ requirement: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - "~>"
79
+ - !ruby/object:Gem::Version
80
+ version: '1.5'
81
+ type: :development
82
+ prerelease: false
83
+ version_requirements: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - "~>"
86
+ - !ruby/object:Gem::Version
87
+ version: '1.5'
88
+ - !ruby/object:Gem::Dependency
89
+ name: rubocop-rspec
90
+ requirement: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - "~>"
93
+ - !ruby/object:Gem::Version
94
+ version: '3.0'
95
+ type: :development
96
+ prerelease: false
97
+ version_requirements: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - "~>"
100
+ - !ruby/object:Gem::Version
101
+ version: '3.0'
102
+ - !ruby/object:Gem::Dependency
103
+ name: base64
104
+ requirement: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ version: '0'
109
+ type: :development
110
+ prerelease: false
111
+ version_requirements: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - ">="
114
+ - !ruby/object:Gem::Version
115
+ version: '0'
116
+ - !ruby/object:Gem::Dependency
117
+ name: benchmark
118
+ requirement: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: '0'
123
+ type: :development
124
+ prerelease: false
125
+ version_requirements: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - ">="
128
+ - !ruby/object:Gem::Version
129
+ version: '0'
130
+ - !ruby/object:Gem::Dependency
131
+ name: ostruct
132
+ requirement: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - ">="
135
+ - !ruby/object:Gem::Version
136
+ version: '0'
137
+ type: :development
138
+ prerelease: false
139
+ version_requirements: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - ">="
142
+ - !ruby/object:Gem::Version
143
+ version: '0'
144
+ - !ruby/object:Gem::Dependency
145
+ name: tsort
146
+ requirement: !ruby/object:Gem::Requirement
147
+ requirements:
148
+ - - ">="
149
+ - !ruby/object:Gem::Version
150
+ version: '0'
151
+ type: :development
152
+ prerelease: false
153
+ version_requirements: !ruby/object:Gem::Requirement
154
+ requirements:
155
+ - - ">="
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
76
158
  email:
77
159
  - ben.balter@github.com
78
160
  executables: []
@@ -87,7 +169,6 @@ homepage: https://github.com/benbalter/jekyll-include-cache
87
169
  licenses:
88
170
  - MIT
89
171
  metadata: {}
90
- post_install_message:
91
172
  rdoc_options: []
92
173
  require_paths:
93
174
  - lib
@@ -102,8 +183,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
102
183
  - !ruby/object:Gem::Version
103
184
  version: '0'
104
185
  requirements: []
105
- rubygems_version: 3.0.3
106
- signing_key:
186
+ rubygems_version: 4.0.16
107
187
  specification_version: 4
108
188
  summary: A Jekyll plugin to cache the rendering of Liquid includes
109
189
  test_files: []