govuk_tech_docs 5.2.0 → 5.2.1

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: 815d430d2f6a2cc8dcf9141688e49ad697bac3c166d719b5cc73d6075c7e945c
4
- data.tar.gz: 9e177ece8704db4e26b59851d7c0e7a82ae6ed4ec5637b14f3502d651b14078f
3
+ metadata.gz: de7d09fce9aa71616b0dfdda9e1673fa519b543f998b09e2fb8bb192682183bd
4
+ data.tar.gz: c1caca4ee1f180d09e154384ea2d0b8a741f16138ccf47d4bde89ba314933495
5
5
  SHA512:
6
- metadata.gz: 661ddbea41fa5e33921213f230e74fe300cb65883f7f3c88f926851d7ef5dfc917365f33412fdbf559204591a3213bc749f476484ea104019ccdeb1bd1e86c51
7
- data.tar.gz: ac22c72e66a82cf66c8366ee1bc26c1991433b2da627406221c4465ed073757a0ca1635010ea0a5872e9f53b1d9374cf560b2dcea99cd2f7c002bfe3bf1aec2f
6
+ metadata.gz: cb71ae66521601c65cba2bdc7341fe1f42c677a50989c67e3d35aaa5d7c6d2c24d6dc3aac9856f8557e88ed938756058bc0b906d4d6a1516c402258a70a12538
7
+ data.tar.gz: 68cb0b82b20439613af27bf9f798e5dda7c5d44c59200c7db91c62bde6c1be525ae5960ad94464f8cb1bc2f13c6ed27f93adca5be726b5cbcb15d32ef09848bc
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## 5.2.1
2
+
3
+ - [Add option to not render child resources when creating a table of contents](https://github.com/alphagov/tech-docs-gem/pull/439/changes)
4
+
1
5
  ## 5.2.0
2
6
 
3
7
  ### New features
data/README.md CHANGED
@@ -17,6 +17,61 @@ This gem uses [GOV.UK Frontend](https://github.com/alphagov/govuk-frontend), par
17
17
 
18
18
  We use `npm` to download the govuk-frontend package. To update to a new version, change the version in the [package.json file](package.json) and run `npm update`.
19
19
 
20
+ ## Table of contents helper functions
21
+
22
+ With `Middleman` you can apply layouts to group pages and customise sites. This gem has the following additional helper functions to manage the table of contents (ToC):
23
+
24
+ - `single_page_table_of_contents` to create a ToC from the headings on the current page
25
+ - `multi_page_table_of_contents` to create a ToC for a group of pages, opened at the current page
26
+
27
+ ### Single page table of contents
28
+
29
+ The `single_page_table_of_contents` helper has the following parameters:
30
+
31
+ | Parameter | Description |
32
+ |-------------|----------------------------------------------------------------------------------------|
33
+ | `html` | The html of the current page. |
34
+ | `url` | Optional parameter used to override the url of the page heading. Defaults to `""`. |
35
+ | `max_level` | Optional parameter used to set the depth of the table of contents. Defaults to `nil`. |
36
+
37
+ Below is an example of using `single_page_table_of_contents` in a layout file:
38
+
39
+ ```
40
+ <%
41
+ wrap_layout :core do
42
+ content_for :sidebar do
43
+ <%= single_page_table_of_contents(html, max_level: 2) %>
44
+ end
45
+ end
46
+ %>
47
+ ```
48
+
49
+ This example will create a ToC containing the current page title, and nested headings to a depth of 2.
50
+
51
+ ### Multi page table of contents
52
+
53
+ The `multi_page_table_of_contents` has the following parameters:
54
+
55
+ | Parameter | Description |
56
+ |---------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------|
57
+ | `resources` | An array of middleman site resources for the pages to be included in the ToC. |
58
+ | `current_page` | The resource object found in the [middleman current_page](https://www.rubydoc.info/gems/middleman-core/Middleman/TemplateContext#current_resource-instance_method). |
59
+ | `config` | Site settings defined in `/config/tech-docs.yaml`. |
60
+ | `current_page_html` | Optional html of the current page. Defaults to `nil`. |
61
+ | `include_child_resources` | Optional setting used to include child resources when creating a ToC. Defaults to `true`. |
62
+ Below is an example of using `multi_page_table_of_contents` in a layout file:
63
+
64
+ ```
65
+ <%
66
+ wrap_layout :core do
67
+ content_for :sidebar do
68
+ <%= multi_page_table_of_contents(sitemap.resources, current_page, config, yield, include_child_resources: true) %>
69
+ end
70
+ end
71
+ %>
72
+ ```
73
+ This example will create a ToC containing the page title of each resource, as a heading. Each heading can be expanded to show nested headings to the depth defined in the site config. If `include_child_resources` is set to `true`, child resources will also be included.
74
+
20
75
  ## Developing locally
21
76
 
22
77
  There are 2 ways to develop with this gem. You can see your changes on either:
@@ -35,12 +35,12 @@ module GovukTechDocs
35
35
  .select { |r| r.path.end_with?(".html") && (r.parent.nil? || r.parent.url == "/") }
36
36
  end
37
37
 
38
- def multi_page_table_of_contents(resources, current_page, config, current_page_html = nil)
38
+ def multi_page_table_of_contents(resources, current_page, config, current_page_html = nil, include_child_resources: true)
39
39
  resources = sort_resources_stably(
40
40
  select_top_level_html_files(resources),
41
41
  )
42
42
 
43
- render_page_tree(resources, current_page, config, current_page_html)
43
+ render_page_tree(resources, current_page, config, current_page_html, include_child_resources:)
44
44
  end
45
45
 
46
46
  def list_items_from_headings(html, url: "", max_level: nil)
@@ -54,7 +54,7 @@ module GovukTechDocs
54
54
  HeadingTreeRenderer.new(tree, max_level:).html
55
55
  end
56
56
 
57
- def render_page_tree(resources, current_page, config, current_page_html)
57
+ def render_page_tree(resources, current_page, config, current_page_html, include_child_resources: true)
58
58
  resources = sort_resources_stably(resources)
59
59
 
60
60
  output = "<ul>\n"
@@ -84,7 +84,7 @@ module GovukTechDocs
84
84
  end
85
85
 
86
86
  link_value = get_path_to_resource(config, resource, current_page)
87
- if resource.children.any? && resource.url != home_url
87
+ if resource.children.any? && resource.url != home_url && include_child_resources
88
88
  output += %(<li><a href="#{link_value}"><span>#{resource.data.title}</span></a>\n)
89
89
  output += render_page_tree(resource.children, current_page, config, current_page_html)
90
90
  output += "</li>\n"
@@ -1,3 +1,3 @@
1
1
  module GovukTechDocs
2
- VERSION = "5.2.0".freeze
2
+ VERSION = "5.2.1".freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: govuk_tech_docs
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.2.0
4
+ version: 5.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Government Digital Service