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 +4 -4
- data/CHANGELOG.md +4 -0
- data/README.md +55 -0
- data/lib/govuk_tech_docs/table_of_contents/helpers.rb +4 -4
- data/lib/govuk_tech_docs/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: de7d09fce9aa71616b0dfdda9e1673fa519b543f998b09e2fb8bb192682183bd
|
|
4
|
+
data.tar.gz: c1caca4ee1f180d09e154384ea2d0b8a741f16138ccf47d4bde89ba314933495
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: cb71ae66521601c65cba2bdc7341fe1f42c677a50989c67e3d35aaa5d7c6d2c24d6dc3aac9856f8557e88ed938756058bc0b906d4d6a1516c402258a70a12538
|
|
7
|
+
data.tar.gz: 68cb0b82b20439613af27bf9f798e5dda7c5d44c59200c7db91c62bde6c1be525ae5960ad94464f8cb1bc2f13c6ed27f93adca5be726b5cbcb15d32ef09848bc
|
data/CHANGELOG.md
CHANGED
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"
|