govuk_publishing_components 20.0.0 → 20.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 990b02a0baa723fb517e965dac760988a241c25961e0aa967d975c706f2b84e2
4
- data.tar.gz: d49b26ffa0222193f227a35ca102e02eebba1274627eae1af13c801ad2a9b130
3
+ metadata.gz: 70e1e7a68a80183757a98e24a3a4c9c62cb7b915574e99213f52bbe7363368a2
4
+ data.tar.gz: 7bab5f6f55fe885de0fe39090d419c5d3816f8bf162b1ae9b9cb739a07465ced
5
5
  SHA512:
6
- metadata.gz: 7c6405ee37d9f4b6b6a1b62c48fc246c03f7ab4a6df1018b6f1d899850ded84752a1b40ff39002dbcd7509e3a867c26883dacd16d1659d319d77b105c6deff29
7
- data.tar.gz: 1899063ce48abb43bc7c34d4d93e2af84d11c3679fb06bc8111c5afe35aef58d79df7200245d579c623b47bff73ae8be7729019ea7ba677e770b8bd3683dbaa9
6
+ metadata.gz: 93bebe89425509dfb139678e9031cba30fcbae81c332c7942212ba020289704546551ec10ec470f57e072c7f31803f4ea03c3934797b73fc50f6eb34c055e580
7
+ data.tar.gz: 16f8ea19a174281ca1c19f9b135c439e5b64c0dfd3dfd372b5761beccd3f3d73ebce5342dc2054435b5e6827355bc96098a77b3c34bfc8af07d38afef638c534
@@ -41,6 +41,21 @@ examples:
41
41
  details: {}
42
42
  schema: :article
43
43
  body: "Some other body"
44
+ a_guide:
45
+ data:
46
+ content_item:
47
+ title: "How to train your dragon"
48
+ base_path: "/how-to-train-your-dragon"
49
+ details:
50
+ parts:
51
+ - slug: overview
52
+ body: A thing on how to train scaly beasts
53
+ title: Overview
54
+ - slug: treating-injuries
55
+ body: Get to know a good blacksmith
56
+ title: Treating injuries
57
+ schema: :faq
58
+ canonical_url: https://www.gov.uk/how-to-train-your-dragon
44
59
  person_schema:
45
60
  data:
46
61
  content_item:
@@ -0,0 +1,52 @@
1
+ module GovukPublishingComponents
2
+ module Presenters
3
+ class FaqPageSchema
4
+ attr_reader :page
5
+
6
+ def initialize(page)
7
+ @page = page
8
+ end
9
+
10
+ def structured_data
11
+ # http://schema.org/FAQPage
12
+ data = CreativeWorkSchema.new(@page).structured_data
13
+ .merge(main_entity)
14
+ data["@type"] = "FAQPage"
15
+ data
16
+ end
17
+
18
+ private
19
+
20
+ def main_entity
21
+ {
22
+ "mainEntity" => questions_and_answers
23
+ }
24
+ end
25
+
26
+ def questions_and_answers
27
+ page.parts.each_with_index.map do |part, index|
28
+ part_url = part_url(part, index)
29
+
30
+ {
31
+ "@type" => "Question",
32
+ "name" => part['title'],
33
+ "url" => part_url,
34
+ "acceptedAnswer" => {
35
+ "@type" => "Answer",
36
+ "url" => part_url,
37
+ "text" => part['body']
38
+ }
39
+ }
40
+ end
41
+ end
42
+
43
+ def part_url(part, index)
44
+ if index.zero?
45
+ page.canonical_url
46
+ else
47
+ page.canonical_url + "/" + part["slug"]
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -58,6 +58,10 @@ module GovukPublishingComponents
58
58
  def logo_url
59
59
  local_assigns[:logo_url]
60
60
  end
61
+
62
+ def parts
63
+ content_item.dig("details", "parts") || []
64
+ end
61
65
  end
62
66
  end
63
67
  end
@@ -1,6 +1,7 @@
1
1
  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/creative_work_schema'
4
+ require 'govuk_publishing_components/presenters/machine_readable/faq_page_schema'
4
5
  require 'govuk_publishing_components/presenters/machine_readable/has_part_schema'
5
6
  require 'govuk_publishing_components/presenters/machine_readable/is_part_of_schema'
6
7
  require 'govuk_publishing_components/presenters/machine_readable/news_article_schema'
@@ -19,7 +20,9 @@ module GovukPublishingComponents
19
20
  end
20
21
 
21
22
  def structured_data
22
- if page.schema == :article
23
+ if page.schema == :faq
24
+ FaqPageSchema.new(page).structured_data
25
+ elsif page.schema == :article
23
26
  ArticleSchema.new(page).structured_data
24
27
  elsif page.schema == :news_article
25
28
  NewsArticleSchema.new(page).structured_data
@@ -1,3 +1,3 @@
1
1
  module GovukPublishingComponents
2
- VERSION = '20.0.0'.freeze
2
+ VERSION = '20.1.0'.freeze
3
3
  end
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: 20.0.0
4
+ version: 20.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - GOV.UK Dev
@@ -667,6 +667,7 @@ files:
667
667
  - lib/govuk_publishing_components/presenters/image_card_helper.rb
668
668
  - lib/govuk_publishing_components/presenters/machine_readable/article_schema.rb
669
669
  - lib/govuk_publishing_components/presenters/machine_readable/creative_work_schema.rb
670
+ - lib/govuk_publishing_components/presenters/machine_readable/faq_page_schema.rb
670
671
  - lib/govuk_publishing_components/presenters/machine_readable/has_part_schema.rb
671
672
  - lib/govuk_publishing_components/presenters/machine_readable/is_part_of_schema.rb
672
673
  - lib/govuk_publishing_components/presenters/machine_readable/news_article_schema.rb