nanoc 4.14.0 → 4.14.1

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: 38ddec3156d6f59a3bb90d3507e79072fccba6a3bcbb29f801929b139601311e
4
- data.tar.gz: fddbca13e0b5f6d0dc341897763f1c5ae833dedf3f59766133b6051a2c9c6696
3
+ metadata.gz: 923381ebbdbafb7b60b0aa640c118e6983a59113b9e50836459684a31cbb101f
4
+ data.tar.gz: 7abde9f5c334c6a0a267d2ce5740f77c7f1c81cb53b0198ba123f944ee043352
5
5
  SHA512:
6
- metadata.gz: 2e021cc1d5dea573bb62515faae428b74d91a402c2f42e404a0ae026cc7736e4c18ccf86d07bd8c8f6bcb8722b7f188ead9388c81d33e3322f21cc6138eb7bcb
7
- data.tar.gz: 011630401f4a40142cba99cbed78b1b18daf0f61ae83e659b0c3e16ca3d3a6d5c05786bcf4807ed73a9979c0cb65239f06c776eb285adbb3131b11648e0763e5
6
+ metadata.gz: e55e39e90ed7b02a65d3beb3c4b5e4d6ad5eb5698a5535411406d405759665f7ec452556b3e074f37303ac74f1b4f56e5951ad6ef802961bb969cacf8492f12e
7
+ data.tar.gz: 24d045ab848d41bcbba99dcbea0fc140659a2b938d6bea57c1c60267bc4ef31a86c827b6331fc0bd34c1eed5f8747bb25edffc801b9ac980b1a5661dbd7caf1e
data/NEWS.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # Nanoc news
2
2
 
3
+ ## 4.14.1 (2025-10-30)
4
+
5
+ Fixes:
6
+
7
+ - Fixed issue which would cause timings reported `--verbose --verbose` to be inaccurate (#1760, #1761)
8
+
9
+ Enhancements:
10
+
11
+ - Improved ERB filter performance through memoization (#1762)
12
+ - Improved performance (#1759, #1758, #1761)
13
+
3
14
  ## 4.14.0 (2025-10-18)
4
15
 
5
16
  Features:
@@ -7,6 +7,12 @@ module Nanoc::Filters
7
7
 
8
8
  requires 'erb'
9
9
 
10
+ class << self
11
+ attr_accessor :_erb_cache
12
+ end
13
+
14
+ self._erb_cache = {}
15
+
10
16
  # Runs the content through [ERB](http://ruby-doc.org/stdlib/libdoc/erb/rdoc/classes/ERB.html).
11
17
  #
12
18
  # @param [String] content The content to filter
@@ -27,9 +33,19 @@ module Nanoc::Filters
27
33
 
28
34
  # Get result
29
35
  trim_mode = params[:trim_mode]
30
- erb = ::ERB.new(content, trim_mode:)
31
- erb.filename = filename
32
- erb.result(assigns_binding)
36
+ erb_for(content, trim_mode:).result(assigns_binding)
37
+ end
38
+
39
+ private
40
+
41
+ def erb_for(content, trim_mode:)
42
+ cache_key = [content, trim_mode]
43
+ self.class._erb_cache.fetch(cache_key) do
44
+ erb = ::ERB.new(content, trim_mode:)
45
+ erb.filename = filename
46
+ self.class._erb_cache[cache_key] = erb
47
+ erb
48
+ end
33
49
  end
34
50
  end
35
51
  end
@@ -21,10 +21,8 @@ module Nanoc::Filters
21
21
 
22
22
  # Add filename to load path
23
23
  paths = [File.dirname(@item[:content_filename])]
24
- on_main_fiber do
25
- parser = ::Less::Parser.new(paths:)
26
- parser.parse(content).to_css(params)
27
- end
24
+ parser = ::Less::Parser.new(paths:)
25
+ parser.parse(content).to_css(params)
28
26
  end
29
27
 
30
28
  def imported_filenames_from(content)
@@ -68,8 +68,7 @@ module Nanoc::Helpers
68
68
 
69
69
  unless rep.compiled?
70
70
  # FIXME: is :last appropriate?
71
- Fiber.yield(Nanoc::Core::Errors::UnmetDependency.new(rep, :last))
72
- return run
71
+ raise Nanoc::Core::Errors::UnmetDependency.new(rep, :last)
73
72
  end
74
73
  end
75
74
 
data/lib/nanoc/version.rb CHANGED
@@ -2,5 +2,5 @@
2
2
 
3
3
  module Nanoc
4
4
  # The current Nanoc version.
5
- VERSION = '4.14.0'
5
+ VERSION = '4.14.1'
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nanoc
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.14.0
4
+ version: 4.14.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Denis Defreyne
@@ -49,28 +49,28 @@ dependencies:
49
49
  requirements:
50
50
  - - '='
51
51
  - !ruby/object:Gem::Version
52
- version: 4.14.0
52
+ version: 4.14.1
53
53
  type: :runtime
54
54
  prerelease: false
55
55
  version_requirements: !ruby/object:Gem::Requirement
56
56
  requirements:
57
57
  - - '='
58
58
  - !ruby/object:Gem::Version
59
- version: 4.14.0
59
+ version: 4.14.1
60
60
  - !ruby/object:Gem::Dependency
61
61
  name: nanoc-core
62
62
  requirement: !ruby/object:Gem::Requirement
63
63
  requirements:
64
64
  - - '='
65
65
  - !ruby/object:Gem::Version
66
- version: 4.14.0
66
+ version: 4.14.1
67
67
  type: :runtime
68
68
  prerelease: false
69
69
  version_requirements: !ruby/object:Gem::Requirement
70
70
  requirements:
71
71
  - - '='
72
72
  - !ruby/object:Gem::Version
73
- version: 4.14.0
73
+ version: 4.14.1
74
74
  - !ruby/object:Gem::Dependency
75
75
  name: nanoc-deploying
76
76
  requirement: !ruby/object:Gem::Requirement
@@ -218,7 +218,7 @@ licenses:
218
218
  - MIT
219
219
  metadata:
220
220
  rubygems_mfa_required: 'true'
221
- source_code_uri: https://github.com/nanoc/nanoc/tree/4.14.0/nanoc
221
+ source_code_uri: https://github.com/nanoc/nanoc/tree/4.14.1/nanoc
222
222
  rdoc_options: []
223
223
  require_paths:
224
224
  - lib