sitemap_generator 6.3.0 → 7.0.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 +4 -4
- data/CHANGES.md +20 -0
- data/README.md +37 -31
- data/VERSION +1 -1
- data/lib/sitemap_generator/adapters/active_storage_adapter.rb +26 -0
- data/lib/sitemap_generator/adapters/aws_sdk_adapter.rb +24 -9
- data/lib/sitemap_generator/adapters/file_adapter.rb +2 -0
- data/lib/sitemap_generator/adapters/fog_adapter.rb +7 -5
- data/lib/sitemap_generator/adapters/google_storage_adapter.rb +3 -1
- data/lib/sitemap_generator/adapters/s3_adapter.rb +10 -6
- data/lib/sitemap_generator/adapters/wave_adapter.rb +3 -1
- data/lib/sitemap_generator/application.rb +4 -0
- data/lib/sitemap_generator/builder/sitemap_file.rb +19 -13
- data/lib/sitemap_generator/builder/sitemap_index_file.rb +12 -9
- data/lib/sitemap_generator/builder/sitemap_index_url.rb +6 -4
- data/lib/sitemap_generator/builder/sitemap_url.rb +59 -55
- data/lib/sitemap_generator/builder.rb +3 -1
- data/lib/sitemap_generator/core_ext/big_decimal.rb +2 -0
- data/lib/sitemap_generator/core_ext/numeric.rb +2 -0
- data/lib/sitemap_generator/core_ext.rb +2 -0
- data/lib/sitemap_generator/helpers/number_helper.rb +35 -33
- data/lib/sitemap_generator/interpreter.rb +6 -4
- data/lib/sitemap_generator/link_set.rb +65 -62
- data/lib/sitemap_generator/railtie.rb +55 -1
- data/lib/sitemap_generator/simple_namer.rb +8 -5
- data/lib/sitemap_generator/sitemap_location.rb +13 -9
- data/lib/sitemap_generator/tasks.rb +14 -26
- data/lib/sitemap_generator/templates.rb +8 -5
- data/lib/sitemap_generator/utilities.rb +38 -11
- data/lib/sitemap_generator.rb +24 -17
- data/templates/sitemap.rb +1 -1
- metadata +7 -131
|
@@ -1,16 +1,18 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module SitemapGenerator
|
|
2
4
|
module Utilities
|
|
3
5
|
extend self
|
|
4
6
|
|
|
5
7
|
# Copy templates/sitemap.rb to config if not there yet.
|
|
6
|
-
def install_sitemap_rb(verbose=false)
|
|
8
|
+
def install_sitemap_rb(verbose = false)
|
|
7
9
|
if File.exist?(SitemapGenerator.app.root + 'config/sitemap.rb')
|
|
8
|
-
puts
|
|
10
|
+
puts 'already exists: config/sitemap.rb, file not copied' if verbose
|
|
9
11
|
else
|
|
10
12
|
FileUtils.cp(
|
|
11
13
|
SitemapGenerator.templates.template_path(:sitemap_sample),
|
|
12
14
|
SitemapGenerator.app.root + 'config/sitemap.rb')
|
|
13
|
-
puts
|
|
15
|
+
puts 'created: config/sitemap.rb' if verbose
|
|
14
16
|
end
|
|
15
17
|
end
|
|
16
18
|
|
|
@@ -31,7 +33,7 @@ module SitemapGenerator
|
|
|
31
33
|
# strings for keys but assert symbols as keys, this will fail.
|
|
32
34
|
def assert_valid_keys(hash, *valid_keys)
|
|
33
35
|
unknown_keys = hash.keys - [valid_keys].flatten
|
|
34
|
-
raise(ArgumentError, "Unknown key(s): #{unknown_keys.join(
|
|
36
|
+
raise(ArgumentError, "Unknown key(s): #{unknown_keys.join(', ')}") unless unknown_keys.empty?
|
|
35
37
|
end
|
|
36
38
|
|
|
37
39
|
# Return a new hash with all keys converted to symbols, as long as
|
|
@@ -69,7 +71,7 @@ module SitemapGenerator
|
|
|
69
71
|
# x.round(2) # => 1.34
|
|
70
72
|
def round(float, precision = nil)
|
|
71
73
|
if precision
|
|
72
|
-
magnitude = 10.0
|
|
74
|
+
magnitude = 10.0**precision
|
|
73
75
|
(float * magnitude).round / magnitude
|
|
74
76
|
else
|
|
75
77
|
float.round
|
|
@@ -98,7 +100,7 @@ module SitemapGenerator
|
|
|
98
100
|
# Performs the opposite of <tt>merge</tt>, with the keys and values from the first hash taking precedence over the second.
|
|
99
101
|
# Modifies the receiver in place.
|
|
100
102
|
def reverse_merge!(hash, other_hash)
|
|
101
|
-
hash.merge!(
|
|
103
|
+
hash.merge!(other_hash) { |k, o, n| o }
|
|
102
104
|
end
|
|
103
105
|
|
|
104
106
|
# An object is blank if it's false, empty, or a whitespace string.
|
|
@@ -111,7 +113,7 @@ module SitemapGenerator
|
|
|
111
113
|
# ...to:
|
|
112
114
|
#
|
|
113
115
|
# if !address.blank?
|
|
114
|
-
def blank?(object)
|
|
116
|
+
def blank?(object) # rubocop:disable Metrics/MethodLength
|
|
115
117
|
case object
|
|
116
118
|
when NilClass, FalseClass
|
|
117
119
|
true
|
|
@@ -133,15 +135,16 @@ module SitemapGenerator
|
|
|
133
135
|
|
|
134
136
|
# Sets $VERBOSE for the duration of the block and back to its original value afterwards.
|
|
135
137
|
def with_warnings(flag)
|
|
136
|
-
old_verbose, $VERBOSE = $VERBOSE, flag
|
|
138
|
+
old_verbose, $VERBOSE = $VERBOSE, flag # rubocop:disable Style/ParallelAssignment
|
|
137
139
|
yield
|
|
138
140
|
ensure
|
|
139
141
|
$VERBOSE = old_verbose
|
|
140
142
|
end
|
|
141
143
|
|
|
142
144
|
def titleize(string)
|
|
143
|
-
string.
|
|
144
|
-
|
|
145
|
+
result = string.tr('_', ' ')
|
|
146
|
+
result.gsub!(/\b\w/) { |match| match.upcase }
|
|
147
|
+
result
|
|
145
148
|
end
|
|
146
149
|
|
|
147
150
|
def truthy?(value)
|
|
@@ -156,7 +159,7 @@ module SitemapGenerator
|
|
|
156
159
|
# Returns a string. Expects a string or Pathname object.
|
|
157
160
|
def append_slash(path)
|
|
158
161
|
strpath = path.to_s
|
|
159
|
-
if strpath[-1]
|
|
162
|
+
if !strpath[-1].nil? && strpath[-1].chr != '/'
|
|
160
163
|
strpath + '/'
|
|
161
164
|
else
|
|
162
165
|
strpath
|
|
@@ -177,5 +180,29 @@ module SitemapGenerator
|
|
|
177
180
|
def bytesize(string)
|
|
178
181
|
string.respond_to?(:bytesize) ? string.bytesize : string.length
|
|
179
182
|
end
|
|
183
|
+
|
|
184
|
+
# Looks up an adapter from various sources:
|
|
185
|
+
# 1. symbol/string names are camelized and constantized
|
|
186
|
+
# - :fog becomes SitemapGenerator::FogAdapter
|
|
187
|
+
# - 'external/adapter_class' becomes External::AdapterClass
|
|
188
|
+
# 2. classes are instantiated
|
|
189
|
+
# 3. callables (procs, lambdas, #call) are "called"
|
|
190
|
+
# All steps recurse, so a proc could return a string that names a class that is instantiated.
|
|
191
|
+
#
|
|
192
|
+
# This method is used by the Rails railtie and as such,
|
|
193
|
+
# safely depends on ActiveSupport::Inflector.
|
|
194
|
+
def find_adapter(candidate)
|
|
195
|
+
if candidate.is_a?(Symbol) || candidate.is_a?(String)
|
|
196
|
+
candidate.to_s.camelize.then { |name|
|
|
197
|
+
"SitemapGenerator::#{name}Adapter".safe_constantize || name.safe_constantize
|
|
198
|
+
}.then { |c| find_adapter(c) }
|
|
199
|
+
elsif candidate.respond_to?(:new)
|
|
200
|
+
find_adapter candidate.new
|
|
201
|
+
elsif candidate.respond_to?(:call)
|
|
202
|
+
find_adapter candidate.call
|
|
203
|
+
else
|
|
204
|
+
candidate
|
|
205
|
+
end
|
|
206
|
+
end
|
|
180
207
|
end
|
|
181
208
|
end
|
data/lib/sitemap_generator.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'sitemap_generator/simple_namer'
|
|
2
4
|
require 'sitemap_generator/builder'
|
|
3
5
|
require 'sitemap_generator/link_set'
|
|
@@ -9,6 +11,7 @@ require 'sitemap_generator/sitemap_location'
|
|
|
9
11
|
module SitemapGenerator
|
|
10
12
|
autoload(:Interpreter, 'sitemap_generator/interpreter')
|
|
11
13
|
autoload(:FileAdapter, 'sitemap_generator/adapters/file_adapter')
|
|
14
|
+
autoload(:ActiveStorageAdapter, 'sitemap_generator/adapters/active_storage_adapter') if defined?(::ActiveStorage)
|
|
12
15
|
autoload(:S3Adapter, 'sitemap_generator/adapters/s3_adapter')
|
|
13
16
|
autoload(:AwsSdkAdapter, 'sitemap_generator/adapters/aws_sdk_adapter')
|
|
14
17
|
autoload(:WaveAdapter, 'sitemap_generator/adapters/wave_adapter')
|
|
@@ -22,7 +25,7 @@ module SitemapGenerator
|
|
|
22
25
|
SitemapFinalizedError = Class.new(SitemapError)
|
|
23
26
|
|
|
24
27
|
Utilities.with_warnings(nil) do
|
|
25
|
-
VERSION = File.read(File.dirname(__FILE__) +
|
|
28
|
+
VERSION = File.read(File.dirname(__FILE__) + '/../VERSION').strip
|
|
26
29
|
MAX_SITEMAP_FILES = 50_000 # max sitemap links per index file
|
|
27
30
|
MAX_SITEMAP_LINKS = 50_000 # max links per sitemap
|
|
28
31
|
MAX_SITEMAP_IMAGES = 1_000 # max images per url
|
|
@@ -37,18 +40,21 @@ module SitemapGenerator
|
|
|
37
40
|
}
|
|
38
41
|
|
|
39
42
|
# Lazy-initialize the LinkSet instance
|
|
40
|
-
Sitemap = (Class.new do
|
|
41
|
-
|
|
42
|
-
|
|
43
|
+
Sitemap = (Config = Class.new do
|
|
44
|
+
# Use a new LinkSet instance
|
|
45
|
+
def reset!
|
|
46
|
+
@link_set = LinkSet.new
|
|
43
47
|
end
|
|
44
48
|
|
|
45
|
-
|
|
46
|
-
|
|
49
|
+
private
|
|
50
|
+
|
|
51
|
+
def method_missing(name, *args, &block)
|
|
52
|
+
@link_set ||= reset!
|
|
53
|
+
@link_set.respond_to?(name, true) ? @link_set.__send__(name, *args, &block) : super
|
|
47
54
|
end
|
|
48
55
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
@link_set = LinkSet.new
|
|
56
|
+
def respond_to_missing?(name, include_private = false)
|
|
57
|
+
(@link_set ||= reset!).respond_to?(name, include_private) || super
|
|
52
58
|
end
|
|
53
59
|
end).new
|
|
54
60
|
end
|
|
@@ -62,13 +68,14 @@ module SitemapGenerator
|
|
|
62
68
|
# Global default for the verbose setting.
|
|
63
69
|
def self.verbose
|
|
64
70
|
if @verbose.nil?
|
|
65
|
-
@verbose =
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
71
|
+
@verbose =
|
|
72
|
+
if SitemapGenerator::Utilities.truthy?(ENV['VERBOSE'])
|
|
73
|
+
true
|
|
74
|
+
elsif SitemapGenerator::Utilities.falsy?(ENV['VERBOSE'])
|
|
75
|
+
false
|
|
76
|
+
else
|
|
77
|
+
nil
|
|
78
|
+
end
|
|
72
79
|
else
|
|
73
80
|
@verbose
|
|
74
81
|
end
|
|
@@ -79,7 +86,7 @@ module SitemapGenerator
|
|
|
79
86
|
!!@yield_sitemap
|
|
80
87
|
end
|
|
81
88
|
|
|
82
|
-
self.root = File.expand_path(File.join(File.dirname(__FILE__), '../'))
|
|
89
|
+
self.root = File.expand_path(File.join(File.dirname(__FILE__), '../')) # Root of the install dir, not the Rails app
|
|
83
90
|
self.templates = SitemapGenerator::Templates.new(self.root)
|
|
84
91
|
self.app = SitemapGenerator::Application.new
|
|
85
92
|
end
|
data/templates/sitemap.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: sitemap_generator
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 7.0.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Karl Varga
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2026-06-29 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: builder
|
|
@@ -24,132 +24,6 @@ dependencies:
|
|
|
24
24
|
- - "~>"
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
26
|
version: '3.0'
|
|
27
|
-
- !ruby/object:Gem::Dependency
|
|
28
|
-
name: aws-sdk-core
|
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
|
30
|
-
requirements:
|
|
31
|
-
- - ">="
|
|
32
|
-
- !ruby/object:Gem::Version
|
|
33
|
-
version: '0'
|
|
34
|
-
type: :development
|
|
35
|
-
prerelease: false
|
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
-
requirements:
|
|
38
|
-
- - ">="
|
|
39
|
-
- !ruby/object:Gem::Version
|
|
40
|
-
version: '0'
|
|
41
|
-
- !ruby/object:Gem::Dependency
|
|
42
|
-
name: aws-sdk-s3
|
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
|
44
|
-
requirements:
|
|
45
|
-
- - ">="
|
|
46
|
-
- !ruby/object:Gem::Version
|
|
47
|
-
version: '0'
|
|
48
|
-
type: :development
|
|
49
|
-
prerelease: false
|
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
-
requirements:
|
|
52
|
-
- - ">="
|
|
53
|
-
- !ruby/object:Gem::Version
|
|
54
|
-
version: '0'
|
|
55
|
-
- !ruby/object:Gem::Dependency
|
|
56
|
-
name: fog-aws
|
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
|
58
|
-
requirements:
|
|
59
|
-
- - ">="
|
|
60
|
-
- !ruby/object:Gem::Version
|
|
61
|
-
version: '0'
|
|
62
|
-
type: :development
|
|
63
|
-
prerelease: false
|
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
-
requirements:
|
|
66
|
-
- - ">="
|
|
67
|
-
- !ruby/object:Gem::Version
|
|
68
|
-
version: '0'
|
|
69
|
-
- !ruby/object:Gem::Dependency
|
|
70
|
-
name: google-cloud-storage
|
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
|
72
|
-
requirements:
|
|
73
|
-
- - ">="
|
|
74
|
-
- !ruby/object:Gem::Version
|
|
75
|
-
version: '0'
|
|
76
|
-
type: :development
|
|
77
|
-
prerelease: false
|
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
-
requirements:
|
|
80
|
-
- - ">="
|
|
81
|
-
- !ruby/object:Gem::Version
|
|
82
|
-
version: '0'
|
|
83
|
-
- !ruby/object:Gem::Dependency
|
|
84
|
-
name: nokogiri
|
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
|
86
|
-
requirements:
|
|
87
|
-
- - ">="
|
|
88
|
-
- !ruby/object:Gem::Version
|
|
89
|
-
version: '0'
|
|
90
|
-
type: :development
|
|
91
|
-
prerelease: false
|
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
-
requirements:
|
|
94
|
-
- - ">="
|
|
95
|
-
- !ruby/object:Gem::Version
|
|
96
|
-
version: '0'
|
|
97
|
-
- !ruby/object:Gem::Dependency
|
|
98
|
-
name: rake
|
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
|
100
|
-
requirements:
|
|
101
|
-
- - ">="
|
|
102
|
-
- !ruby/object:Gem::Version
|
|
103
|
-
version: '0'
|
|
104
|
-
type: :development
|
|
105
|
-
prerelease: false
|
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
107
|
-
requirements:
|
|
108
|
-
- - ">="
|
|
109
|
-
- !ruby/object:Gem::Version
|
|
110
|
-
version: '0'
|
|
111
|
-
- !ruby/object:Gem::Dependency
|
|
112
|
-
name: rspec_junit_formatter
|
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
|
114
|
-
requirements:
|
|
115
|
-
- - ">="
|
|
116
|
-
- !ruby/object:Gem::Version
|
|
117
|
-
version: '0'
|
|
118
|
-
type: :development
|
|
119
|
-
prerelease: false
|
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
121
|
-
requirements:
|
|
122
|
-
- - ">="
|
|
123
|
-
- !ruby/object:Gem::Version
|
|
124
|
-
version: '0'
|
|
125
|
-
- !ruby/object:Gem::Dependency
|
|
126
|
-
name: rspec
|
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
|
128
|
-
requirements:
|
|
129
|
-
- - ">="
|
|
130
|
-
- !ruby/object:Gem::Version
|
|
131
|
-
version: '0'
|
|
132
|
-
type: :development
|
|
133
|
-
prerelease: false
|
|
134
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
135
|
-
requirements:
|
|
136
|
-
- - ">="
|
|
137
|
-
- !ruby/object:Gem::Version
|
|
138
|
-
version: '0'
|
|
139
|
-
- !ruby/object:Gem::Dependency
|
|
140
|
-
name: webmock
|
|
141
|
-
requirement: !ruby/object:Gem::Requirement
|
|
142
|
-
requirements:
|
|
143
|
-
- - ">="
|
|
144
|
-
- !ruby/object:Gem::Version
|
|
145
|
-
version: '0'
|
|
146
|
-
type: :development
|
|
147
|
-
prerelease: false
|
|
148
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
149
|
-
requirements:
|
|
150
|
-
- - ">="
|
|
151
|
-
- !ruby/object:Gem::Version
|
|
152
|
-
version: '0'
|
|
153
27
|
description: SitemapGenerator is a framework-agnostic XML Sitemap generator written
|
|
154
28
|
in Ruby with automatic Rails integration. It supports Video, News, Image, Mobile,
|
|
155
29
|
PageMap and Alternate Links sitemap extensions and includes Rake tasks for managing
|
|
@@ -166,6 +40,7 @@ files:
|
|
|
166
40
|
- lib/capistrano/sitemap_generator.rb
|
|
167
41
|
- lib/capistrano/tasks/sitemap_generator.cap
|
|
168
42
|
- lib/sitemap_generator.rb
|
|
43
|
+
- lib/sitemap_generator/adapters/active_storage_adapter.rb
|
|
169
44
|
- lib/sitemap_generator/adapters/aws_sdk_adapter.rb
|
|
170
45
|
- lib/sitemap_generator/adapters/file_adapter.rb
|
|
171
46
|
- lib/sitemap_generator/adapters/fog_adapter.rb
|
|
@@ -197,7 +72,8 @@ files:
|
|
|
197
72
|
homepage: https://github.com/kjvarga/sitemap_generator
|
|
198
73
|
licenses:
|
|
199
74
|
- MIT
|
|
200
|
-
metadata:
|
|
75
|
+
metadata:
|
|
76
|
+
rubygems_mfa_required: 'true'
|
|
201
77
|
post_install_message:
|
|
202
78
|
rdoc_options: []
|
|
203
79
|
require_paths:
|
|
@@ -206,14 +82,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
206
82
|
requirements:
|
|
207
83
|
- - ">="
|
|
208
84
|
- !ruby/object:Gem::Version
|
|
209
|
-
version: '
|
|
85
|
+
version: '2.6'
|
|
210
86
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
211
87
|
requirements:
|
|
212
88
|
- - ">="
|
|
213
89
|
- !ruby/object:Gem::Version
|
|
214
90
|
version: '0'
|
|
215
91
|
requirements: []
|
|
216
|
-
rubygems_version: 3.
|
|
92
|
+
rubygems_version: 3.4.10
|
|
217
93
|
signing_key:
|
|
218
94
|
specification_version: 4
|
|
219
95
|
summary: Easily generate XML Sitemaps
|