govuk_publishing_components 10.0.0 → 10.1.0
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/lib/govuk_publishing_components/presenters/machine_readable/article_schema.rb +19 -12
- data/lib/govuk_publishing_components/presenters/machine_readable/is_part_of_schema.rb +18 -0
- data/lib/govuk_publishing_components/presenters/schema_org.rb +1 -0
- data/lib/govuk_publishing_components/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 79208a2aa5fe09127a376f0b1dfbe4a703c03c738b06cee07b04b0a41c2e5527
|
4
|
+
data.tar.gz: 3a8b99c01ab4b32e6bf18beddfaf798043b83b967d1d93d6be3775ae5932d0e7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5602b8c9c50df8e12d28bba3a5ee08a1141cdc67892700745610ac452b8380a0310c51a1b395f91e7273d9d7b7913cfd38ef448a2a229e3e8ea2dcea125ba9ea
|
7
|
+
data.tar.gz: c3dd7d269ed451de61be94db9667121ab96211de00497f197050d9f4d8a25ba21775a4824bd0eea30c83764d5da8273aab87903844fcb2bc554ceb132546c4e5
|
@@ -5,6 +5,7 @@ module GovukPublishingComponents
|
|
5
5
|
|
6
6
|
def initialize(page)
|
7
7
|
@page = page
|
8
|
+
@pages = {}
|
8
9
|
end
|
9
10
|
|
10
11
|
def structured_data
|
@@ -69,20 +70,21 @@ module GovukPublishingComponents
|
|
69
70
|
end
|
70
71
|
|
71
72
|
def is_part_of
|
72
|
-
return {} unless
|
73
|
+
return {} unless step_by_step_schemas.any? || document_collections.any?
|
74
|
+
|
73
75
|
{
|
74
|
-
"isPartOf" => step_by_step_schemas
|
76
|
+
"isPartOf" => document_collections + step_by_step_schemas
|
75
77
|
}
|
76
78
|
end
|
77
79
|
|
78
|
-
def
|
80
|
+
def step_by_step_schemas
|
79
81
|
# We could include `related_to_step_navs` eventually too, but initially
|
80
82
|
# link to those that we render in the "step_by_step_nav_related" component
|
81
|
-
@step_by_steps ||=
|
83
|
+
@step_by_steps ||= fetch_step_by_step_schemas
|
82
84
|
end
|
83
85
|
|
84
|
-
def
|
85
|
-
|
86
|
+
def fetch_step_by_step_schemas
|
87
|
+
page.content_item.dig("links", "part_of_step_navs").to_a.map do |step_by_step|
|
86
88
|
step_by_step_page = linked_page(step_by_step)
|
87
89
|
structured_data = HowToSchema.new(step_by_step_page.canonical_url).structured_data
|
88
90
|
|
@@ -100,18 +102,23 @@ module GovukPublishingComponents
|
|
100
102
|
end
|
101
103
|
|
102
104
|
def has_part
|
103
|
-
return {} unless collection_pages.any?
|
105
|
+
return {} unless collection_pages("documents").any?
|
104
106
|
{
|
105
|
-
"hasPart" => collection_pages.map { |document| HasPartSchema.new(document).structured_data }
|
107
|
+
"hasPart" => collection_pages("documents").map { |document| HasPartSchema.new(document).structured_data }
|
106
108
|
}
|
107
109
|
end
|
108
110
|
|
109
|
-
def
|
110
|
-
@
|
111
|
+
def document_collections
|
112
|
+
@document_collections ||= collection_pages("document_collections")
|
113
|
+
.map { |document| IsPartOfSchema.new(document).structured_data }
|
114
|
+
end
|
115
|
+
|
116
|
+
def collection_pages(linked_type)
|
117
|
+
@pages[linked_type] ||= fetch_collection_pages(linked_type)
|
111
118
|
end
|
112
119
|
|
113
|
-
def fetch_collection_pages
|
114
|
-
page.content_item.dig("links",
|
120
|
+
def fetch_collection_pages(linked_type)
|
121
|
+
page.content_item.dig("links", linked_type).to_a.map { |document| document["web_url"] }
|
115
122
|
end
|
116
123
|
|
117
124
|
def about
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module GovukPublishingComponents
|
2
|
+
module Presenters
|
3
|
+
class IsPartOfSchema
|
4
|
+
def initialize(is_part_of_url)
|
5
|
+
@is_part_of_url = is_part_of_url
|
6
|
+
end
|
7
|
+
|
8
|
+
def structured_data
|
9
|
+
# http://schema.org/isPartOf - minimal
|
10
|
+
{
|
11
|
+
"@context" => "http://schema.org",
|
12
|
+
"@type" => "CreativeWork",
|
13
|
+
"sameAs" => @is_part_of_url
|
14
|
+
}
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -2,6 +2,7 @@ require 'govuk_publishing_components/presenters/machine_readable/page'
|
|
2
2
|
require 'govuk_publishing_components/presenters/machine_readable/article_schema'
|
3
3
|
require 'govuk_publishing_components/presenters/machine_readable/how_to_schema'
|
4
4
|
require 'govuk_publishing_components/presenters/machine_readable/has_part_schema'
|
5
|
+
require 'govuk_publishing_components/presenters/machine_readable/is_part_of_schema'
|
5
6
|
require 'govuk_publishing_components/presenters/machine_readable/news_article_schema'
|
6
7
|
require 'govuk_publishing_components/presenters/machine_readable/organisation_schema'
|
7
8
|
require 'govuk_publishing_components/presenters/machine_readable/person_schema'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: govuk_publishing_components
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 10.
|
4
|
+
version: 10.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- GOV.UK Dev
|
@@ -590,6 +590,7 @@ files:
|
|
590
590
|
- lib/govuk_publishing_components/presenters/machine_readable/article_schema.rb
|
591
591
|
- lib/govuk_publishing_components/presenters/machine_readable/has_part_schema.rb
|
592
592
|
- lib/govuk_publishing_components/presenters/machine_readable/how_to_schema.rb
|
593
|
+
- lib/govuk_publishing_components/presenters/machine_readable/is_part_of_schema.rb
|
593
594
|
- lib/govuk_publishing_components/presenters/machine_readable/news_article_schema.rb
|
594
595
|
- lib/govuk_publishing_components/presenters/machine_readable/organisation_schema.rb
|
595
596
|
- lib/govuk_publishing_components/presenters/machine_readable/page.rb
|