Module: RailsSiteEngine::SitemapXml

Defined in:
lib/rails_site_engine/sitemap_xml.rb

Class Method Summary collapse

Class Method Details

.build(base_url:, paths:) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/rails_site_engine/sitemap_xml.rb', line 5

def self.build(base_url:, paths:)
  base_url = base_url.to_s.sub(%r{/\z}, "")
  paths = Array(paths).map(&:to_s).reject(&:empty?)

  urls = paths.map do |path|
    loc = path == "/" ? "#{base_url}/" : "#{base_url}#{path}"
    <<~XML
      <url>
        <loc>#{ERB::Util.html_escape(loc)}</loc>
      </url>
    XML
  end.join

  <<~XML
    <?xml version="1.0" encoding="UTF-8"?>
    <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    #{urls}
    </urlset>
  XML
end