Class: BridgetownSitemap::GroupedResources

Inherits:
Object
  • Object
show all
Defined in:
lib/bridgetown-sitemap/grouped_resources.rb

Instance Method Summary collapse

Constructor Details

#initialize(resources) ⇒ GroupedResources

Returns a new instance of GroupedResources.



5
6
7
8
9
10
11
12
# File 'lib/bridgetown-sitemap/grouped_resources.rb', line 5

def initialize(resources)
  @grouped_resources = resources.group_by do |resource|
    url = resource.relative_url.to_s
    locale = resource.data.locale.to_s
    base_url = locale.empty? ? url : url.sub("/#{locale}/", "/")
    [base_url, resource.date]
  end.values
end

Instance Method Details

#each(locale:, &block) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/bridgetown-sitemap/grouped_resources.rb', line 14

def each(locale:, &block)
  @grouped_resources.each do |resource_group|
    resource_group = resource_group.reject do |resource|
      resource.id == "/404" || resource.data.sitemap == false
    end

    default_resource = resource_group.detect do |resource|
      !resource.data.locale || locale == resource.data.locale
    end

    latest_resource = resource_group.max_by { |resource| resource.data.sitemap_last_modified_at }

    yield default: default_resource, latest: latest_resource, group: resource_group
  end
end