govuk_tech_docs 1.1.0 → 1.2.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/.rubocop.yml +8 -0
- data/.ruby-version +1 -0
- data/CHANGELOG.md +35 -1
- data/README.md +1 -1
- data/Rakefile +5 -1
- data/docs/configuration.md +65 -33
- data/docs/core-layout.png +0 -0
- data/docs/expired-page.png +0 -0
- data/docs/frontmatter.md +113 -0
- data/docs/layout-layout.png +0 -0
- data/docs/not-expired-page.png +0 -0
- data/example/config.rb +6 -0
- data/example/config/tech-docs.yml +11 -1
- data/example/source/core-layout.html.md.erb +12 -0
- data/example/source/expired-page-with-owner.html.md +10 -0
- data/example/source/expired-page.html.md +9 -0
- data/example/source/headings.html.md +11 -0
- data/example/source/index.html.md.erb +2 -0
- data/example/source/not-expired-page.html.md +9 -0
- data/example/source/templates/proxy_template.html.md +8 -0
- data/govuk_tech_docs.gemspec +3 -0
- data/lib/assets/javascripts/_modules/page-expiry.js +15 -0
- data/lib/assets/javascripts/_start-modules.js +1 -0
- data/lib/assets/stylesheets/_core.scss +2 -0
- data/lib/assets/stylesheets/modules/_contribution-banner.scss +22 -0
- data/lib/assets/stylesheets/modules/_page-review.scss +34 -0
- data/lib/govuk_tech_docs.rb +28 -0
- data/lib/govuk_tech_docs/contribution_banner.rb +52 -0
- data/lib/govuk_tech_docs/meta_tags.rb +67 -0
- data/lib/govuk_tech_docs/page_review.rb +36 -0
- data/lib/govuk_tech_docs/pages.rb +31 -0
- data/lib/govuk_tech_docs/redirects.rb +39 -0
- data/lib/govuk_tech_docs/table_of_contents/helpers.rb +8 -6
- data/lib/govuk_tech_docs/version.rb +1 -1
- data/lib/source/api/pages.json.erb +1 -0
- data/lib/source/layouts/_page_review.erb +18 -0
- data/lib/source/layouts/core.erb +15 -3
- metadata +68 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f5e6745794ab18eb8c628384b868c10edaecfe5a
|
|
4
|
+
data.tar.gz: 6d93cae1fd2a09c0addc299fa7b43bceecd6208f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c9a3f2c71458829e25e27d0cf79cea3d19e125bafb8e3c2c28827312e2a6d6a4d28cd9b0e01aa999f051f3b0881a081d1b14dbe250e47d6d055ba48765ec1e02
|
|
7
|
+
data.tar.gz: b77c6acc475897e7423b3067abcc41f339539bd6cd5b4eb85c219fafc6a0cf8de60eec81ce55df3e7469c6a2fecedd0088261edf0c003c860f3935cd03905233
|
data/.rubocop.yml
ADDED
data/.ruby-version
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2.4.2
|
data/CHANGELOG.md
CHANGED
|
@@ -1,11 +1,45 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.2.0
|
|
4
|
+
|
|
5
|
+
### New feature: redirects
|
|
6
|
+
|
|
7
|
+
You can now specify redirects in the frontmatter and `config/tech-docs.yml`.
|
|
8
|
+
|
|
9
|
+
You can use this when you change a page URL.
|
|
10
|
+
|
|
11
|
+
More info:
|
|
12
|
+
|
|
13
|
+
- https://github.com/alphagov/tech-docs-gem/blob/master/docs/configuration.md#redirects
|
|
14
|
+
- https://github.com/alphagov/tech-docs-gem/blob/master/docs/frontmatter.md#old_paths
|
|
15
|
+
|
|
16
|
+
### New feature: contribution banner
|
|
17
|
+
|
|
18
|
+
You can now show a block at the bottom of the page that links to
|
|
19
|
+
the page source on GitHub, so readers can easily contribute back to the documentation.
|
|
20
|
+
|
|
21
|
+
https://github.com/alphagov/tech-docs-gem/blob/master/docs/configuration.md#show_contribution_banner
|
|
22
|
+
|
|
23
|
+
### New feature: page review system
|
|
24
|
+
|
|
25
|
+
An optional page review system to make sure documentation stays up to date.
|
|
26
|
+
|
|
27
|
+
More info:
|
|
28
|
+
|
|
29
|
+
- https://github.com/alphagov/tech-docs-gem/blob/master/docs/frontmatter.md#last_reviewed_on
|
|
30
|
+
- https://github.com/alphagov/tech-docs-gem/blob/master/docs/frontmatter.md#owner_slack
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
### Better meta tags
|
|
34
|
+
|
|
35
|
+
Pages now include better meta tags for search engines, Twitter, Facebook and Slack to pick up.
|
|
36
|
+
|
|
3
37
|
## 1.1.0
|
|
4
38
|
|
|
5
39
|
You can now specify `google_site_verification` in tech-docs.yml. You can use
|
|
6
40
|
this to verify your site in Google Webmaster tools.
|
|
7
41
|
|
|
8
|
-
https://github.com/alphagov/tech-docs-gem/blob/master/docs/configuration.md#google_site_verification
|
|
42
|
+
https://github.com/alphagov/tech-docs-gem/blob/master/docs/configuration.md#google_site_verification
|
|
9
43
|
|
|
10
44
|
## 1.0.0
|
|
11
45
|
|
data/README.md
CHANGED
|
@@ -42,6 +42,6 @@ Or, on the command line, run `bundle exec rake jasmine:ci`.
|
|
|
42
42
|
|
|
43
43
|
## License
|
|
44
44
|
|
|
45
|
-
The gem is available as open source under the terms of the [MIT License](LICENSE
|
|
45
|
+
The gem is available as open source under the terms of the [MIT License](LICENSE).
|
|
46
46
|
|
|
47
47
|
[jas]: https://jasmine.github.io/
|
data/Rakefile
CHANGED
data/docs/configuration.md
CHANGED
|
@@ -4,44 +4,57 @@ You can configure the site using `config/tech-docs.yml`. [See the PaaS tech docs
|
|
|
4
4
|
|
|
5
5
|
These are all the available options:
|
|
6
6
|
|
|
7
|
-
## `
|
|
8
|
-
|
|
9
|
-
Host to use for canonical URL generation (without trailing slash).
|
|
7
|
+
## `ga_tracking_id`
|
|
10
8
|
|
|
11
|
-
|
|
9
|
+
Tracking ID from Google Analytics
|
|
12
10
|
|
|
13
11
|
```yaml
|
|
14
|
-
|
|
12
|
+
ga_tracking_id: UA-XXXX-Y
|
|
15
13
|
```
|
|
16
14
|
|
|
17
|
-
## `
|
|
15
|
+
## `github_repo`
|
|
18
16
|
|
|
19
|
-
|
|
17
|
+
Your repository. Required if [show_contribution_banner](#show-contribution-banner) is true.
|
|
20
18
|
|
|
21
|
-
|
|
19
|
+
```yaml
|
|
20
|
+
github_repo: alphagov/example-repo
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## `google_site_verification`
|
|
24
|
+
|
|
25
|
+
Adds a [Google Site Verification code](https://support.google.com/webmasters/answer/35179?hl=en) to the meta tags.
|
|
22
26
|
|
|
23
27
|
```yaml
|
|
24
|
-
|
|
28
|
+
google_site_verification: TvDTuyvdstyusadrCSDrctyd
|
|
25
29
|
```
|
|
26
30
|
|
|
27
|
-
## `
|
|
31
|
+
## `header_links`
|
|
28
32
|
|
|
29
|
-
|
|
33
|
+
Right hand side navigation.
|
|
30
34
|
|
|
31
35
|
Example:
|
|
32
36
|
|
|
33
37
|
```yaml
|
|
34
|
-
|
|
38
|
+
header_links:
|
|
39
|
+
Documentation: /
|
|
35
40
|
```
|
|
36
41
|
|
|
37
|
-
## `
|
|
42
|
+
## `host`
|
|
38
43
|
|
|
39
|
-
|
|
44
|
+
Host to use for canonical URL generation (without trailing slash).
|
|
40
45
|
|
|
41
|
-
|
|
46
|
+
Example:
|
|
42
47
|
|
|
43
48
|
```yaml
|
|
44
|
-
|
|
49
|
+
host: https://docs.cloud.service.gov.uk
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## `max_toc_heading_level`
|
|
53
|
+
|
|
54
|
+
Table of contents depth – how many levels to include in the table of contents. If your ToC is too long, reduce this number and we'll only show higher-level headings.
|
|
55
|
+
|
|
56
|
+
```yaml
|
|
57
|
+
max_toc_heading_level: 6
|
|
45
58
|
```
|
|
46
59
|
|
|
47
60
|
## `phase`
|
|
@@ -50,45 +63,64 @@ service_link: "/"
|
|
|
50
63
|
phase: "Beta"
|
|
51
64
|
```
|
|
52
65
|
|
|
53
|
-
## `
|
|
66
|
+
## `prevent_indexing`
|
|
54
67
|
|
|
55
|
-
|
|
68
|
+
Prevent robots from indexing (e.g. whilst in development)
|
|
56
69
|
|
|
57
|
-
|
|
70
|
+
```yaml
|
|
71
|
+
prevent_indexing: false
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## `redirects`
|
|
75
|
+
|
|
76
|
+
A list of redirects, from old to new location. Use this to set up external
|
|
77
|
+
redirects or if [setting `old_paths` in the frontmatter](docs/frontmatter.md#old_paths) doesn't work.
|
|
58
78
|
|
|
59
79
|
```yaml
|
|
60
|
-
|
|
61
|
-
|
|
80
|
+
redirects:
|
|
81
|
+
/old-page.html: https://example.org/something-else.html
|
|
82
|
+
/another/old-page.html: /another/new-page.html
|
|
62
83
|
```
|
|
63
84
|
|
|
64
|
-
## `
|
|
85
|
+
## `service_name`
|
|
65
86
|
|
|
66
|
-
|
|
87
|
+
The service name in the header.
|
|
88
|
+
|
|
89
|
+
Example:
|
|
67
90
|
|
|
68
91
|
```yaml
|
|
69
|
-
|
|
92
|
+
service_name: "Platform as a Service"
|
|
70
93
|
```
|
|
71
94
|
|
|
72
|
-
## `
|
|
95
|
+
## `service_link`
|
|
73
96
|
|
|
74
|
-
|
|
97
|
+
What the service name in the header links to.
|
|
98
|
+
|
|
99
|
+
default: '/'
|
|
75
100
|
|
|
76
101
|
```yaml
|
|
77
|
-
|
|
102
|
+
service_link: "/"
|
|
78
103
|
```
|
|
79
104
|
|
|
80
|
-
## `
|
|
105
|
+
## `show_contribution_banner`
|
|
81
106
|
|
|
82
|
-
|
|
107
|
+
Show a block at the bottom of the page that links to the page source, so readers
|
|
108
|
+
can easily contribute back to the documentation. If turned on [github_repo](#github-repo) is
|
|
109
|
+
required.
|
|
110
|
+
|
|
111
|
+
Off by default.
|
|
83
112
|
|
|
84
113
|
```yaml
|
|
85
|
-
|
|
114
|
+
show_contribution_banner: true
|
|
115
|
+
github_repo: alphagov/example-repo
|
|
86
116
|
```
|
|
87
117
|
|
|
88
|
-
## `
|
|
118
|
+
## `show_govuk_logo`
|
|
89
119
|
|
|
90
|
-
|
|
120
|
+
Whether to show the GOV.UK crown logo.
|
|
121
|
+
|
|
122
|
+
default: `true`
|
|
91
123
|
|
|
92
124
|
```yaml
|
|
93
|
-
|
|
125
|
+
show_govuk_logo: true
|
|
94
126
|
```
|
|
Binary file
|
|
Binary file
|
data/docs/frontmatter.md
ADDED
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
# Available frontmatter
|
|
2
|
+
|
|
3
|
+
"Frontmatter" allows page-specific variables to be included at the top of a template using YAML. For a general introduction on frontmatter, see the [Middleman frontmatter docs][mm].
|
|
4
|
+
|
|
5
|
+
## `last_reviewed_on` and `review_in`
|
|
6
|
+
|
|
7
|
+
These attributes determine the date when the page needs to be reviewed next.
|
|
8
|
+
|
|
9
|
+
If the page doesn't need to be reviewed, we show a blue box with the last-reviewed date, when it needs review again, and the owner.
|
|
10
|
+
|
|
11
|
+

|
|
12
|
+
|
|
13
|
+
If the page needs to be reviewed, we show a red box saying the page might not be accurate.
|
|
14
|
+
|
|
15
|
+

|
|
16
|
+
|
|
17
|
+
Example:
|
|
18
|
+
|
|
19
|
+
```yaml
|
|
20
|
+
---
|
|
21
|
+
last_reviewed_on: 2018-01-18
|
|
22
|
+
review_in: 6 weeks
|
|
23
|
+
---
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
You can use this in combination with [owner_slack](#owner-slack) to set an owner for the page.
|
|
27
|
+
|
|
28
|
+
## `layout`
|
|
29
|
+
|
|
30
|
+
The layout of the page.
|
|
31
|
+
|
|
32
|
+
```yaml
|
|
33
|
+
---
|
|
34
|
+
layout: core
|
|
35
|
+
---
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
There are 2 available page layouts.
|
|
39
|
+
|
|
40
|
+
### The `layout` layout (default)
|
|
41
|
+
|
|
42
|
+
By default, pages will use the `layout` layout. This layout will parse the page and generate a sidebar with a table of contents consisting of each `h2`, `h3`, `h4` heading.
|
|
43
|
+
|
|
44
|
+
```md
|
|
45
|
+
---
|
|
46
|
+
layout: layout
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
# The title
|
|
50
|
+
|
|
51
|
+
## A subheader
|
|
52
|
+
|
|
53
|
+
### A h3 subheader
|
|
54
|
+
|
|
55
|
+
## Another subheader
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Will generate a page with the headings from the content in the sidebar.
|
|
59
|
+
|
|
60
|
+

|
|
61
|
+
|
|
62
|
+
### `core` layout
|
|
63
|
+
|
|
64
|
+
If you want more control about the layout, use `core` layout. This allows you to specify the sidebar manually with a `content_for` block.
|
|
65
|
+
|
|
66
|
+
```rb
|
|
67
|
+
---
|
|
68
|
+
layout: core
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
<% content_for :sidebar do %>
|
|
72
|
+
You can put anything in the sidebar.
|
|
73
|
+
<% end %>
|
|
74
|
+
|
|
75
|
+
This page has a configurable sidebar that is independent of the content.
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+

|
|
79
|
+
|
|
80
|
+
## `old_paths`
|
|
81
|
+
|
|
82
|
+
Any paths of pages that should redirect to this page.
|
|
83
|
+
|
|
84
|
+
Example:
|
|
85
|
+
|
|
86
|
+
```yaml
|
|
87
|
+
---
|
|
88
|
+
old_paths:
|
|
89
|
+
- /some-old-page.html
|
|
90
|
+
---
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## `owner_slack`
|
|
94
|
+
|
|
95
|
+
The Slack username or channel of the page owner. This can be used to appoint an individual or team as responsible for keeping the page up to date.
|
|
96
|
+
|
|
97
|
+
```yaml
|
|
98
|
+
---
|
|
99
|
+
owner_slack: "#operations-teams"
|
|
100
|
+
---
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## `title`
|
|
104
|
+
|
|
105
|
+
The browser title of the page.
|
|
106
|
+
|
|
107
|
+
```yaml
|
|
108
|
+
---
|
|
109
|
+
title: My beautiful page
|
|
110
|
+
---
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
[mm]: https://middlemanapp.com/basics/frontmatter
|
|
Binary file
|
|
Binary file
|
data/example/config.rb
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# Host to use for canonical URL generation (without trailing slash)
|
|
2
|
-
host:
|
|
2
|
+
host: https://docs.example.com
|
|
3
3
|
|
|
4
4
|
# Header-related options
|
|
5
5
|
show_govuk_logo: true
|
|
@@ -10,6 +10,9 @@ phase: Beta
|
|
|
10
10
|
# Links to show on right-hand-side of header
|
|
11
11
|
header_links:
|
|
12
12
|
Documentation: /
|
|
13
|
+
Expired page: /expired-page.html
|
|
14
|
+
Expired with owner: /expired-page-with-owner.html
|
|
15
|
+
Not expired page: /not-expired-page.html
|
|
13
16
|
|
|
14
17
|
# Tracking ID from Google Analytics (e.g. UA-XXXX-Y)
|
|
15
18
|
ga_tracking_id:
|
|
@@ -23,3 +26,10 @@ max_toc_heading_level: 6
|
|
|
23
26
|
prevent_indexing: false
|
|
24
27
|
|
|
25
28
|
google_site_verification: dstbao8TVS^DRVDS&rv76
|
|
29
|
+
|
|
30
|
+
show_contribution_banner: true
|
|
31
|
+
|
|
32
|
+
github_repo: alphagov/example-repo
|
|
33
|
+
|
|
34
|
+
redirects:
|
|
35
|
+
/something/old.html: /index.html
|
data/govuk_tech_docs.gemspec
CHANGED
|
@@ -21,6 +21,8 @@ Gem::Specification.new do |spec|
|
|
|
21
21
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
22
22
|
spec.require_paths = ["lib"]
|
|
23
23
|
|
|
24
|
+
spec.add_dependency "activesupport"
|
|
25
|
+
spec.add_dependency "chronic", "~> 0.10.2"
|
|
24
26
|
spec.add_dependency "middleman", "~> 4.0"
|
|
25
27
|
spec.add_dependency "middleman-autoprefixer", "~> 2.7.0"
|
|
26
28
|
spec.add_dependency "middleman-compass", ">= 4.0.0"
|
|
@@ -33,6 +35,7 @@ Gem::Specification.new do |spec|
|
|
|
33
35
|
spec.add_development_dependency "bundler", "~> 1.15"
|
|
34
36
|
spec.add_development_dependency "rake", "~> 10.0"
|
|
35
37
|
spec.add_development_dependency "capybara", "~> 2.18.0"
|
|
38
|
+
spec.add_development_dependency "govuk-lint", "~> 3.7.0"
|
|
36
39
|
spec.add_development_dependency "jasmine", "~> 3.1.0"
|
|
37
40
|
spec.add_development_dependency "rspec", "~> 3.7.0"
|
|
38
41
|
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
(function($, Modules) {
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
Modules.PageExpiry = function PageExpiry() {
|
|
5
|
+
this.start = function start($element) {
|
|
6
|
+
var rawDate = $element.data('last-reviewed-on');
|
|
7
|
+
var isExpired = Date.parse(rawDate) < new Date();
|
|
8
|
+
|
|
9
|
+
if (isExpired) {
|
|
10
|
+
$element.find('.page-expiry--not-expired').hide(0);
|
|
11
|
+
$element.find('.page-expiry--expired').show(0);
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
})(jQuery, window.GOVUK.Modules);
|
|
@@ -24,8 +24,10 @@ $desktop-breakpoint: 992px !default;
|
|
|
24
24
|
@import "modules/footer";
|
|
25
25
|
@import "modules/govuk-logo";
|
|
26
26
|
@import "modules/header";
|
|
27
|
+
@import "modules/page-review";
|
|
27
28
|
@import "modules/phase-banner";
|
|
28
29
|
@import "modules/skip-link";
|
|
30
|
+
@import "modules/contribution-banner";
|
|
29
31
|
@import "modules/technical-documentation";
|
|
30
32
|
@import "modules/toc";
|
|
31
33
|
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
.contribution-banner {
|
|
2
|
+
padding: 0;
|
|
3
|
+
max-width: 40em;
|
|
4
|
+
margin-top: $gutter * 2;
|
|
5
|
+
margin-left: $gutter-half;
|
|
6
|
+
margin-right: $gutter-half;
|
|
7
|
+
|
|
8
|
+
@include media(tablet) {
|
|
9
|
+
margin-left: $gutter + 2px;
|
|
10
|
+
margin-right: $gutter + 2px;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
a {
|
|
14
|
+
margin-right: $gutter-half;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
li {
|
|
18
|
+
display: inline-block;
|
|
19
|
+
list-style: none;
|
|
20
|
+
margin: 2px 0;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
.page-expiry--not-expired {
|
|
2
|
+
padding: $gutter-half;
|
|
3
|
+
margin-top: $gutter;
|
|
4
|
+
margin-bottom: $gutter;
|
|
5
|
+
background-color: $govuk-blue;
|
|
6
|
+
color: $page-colour;
|
|
7
|
+
|
|
8
|
+
@include media(tablet) {
|
|
9
|
+
padding: $gutter;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
a:link,
|
|
13
|
+
a:visited {
|
|
14
|
+
color: inherit;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
a:hover {
|
|
18
|
+
color: $link-hover-colour;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
a:active {
|
|
22
|
+
color: $link-active-colour;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.page-expiry--expired {
|
|
27
|
+
display: none;
|
|
28
|
+
|
|
29
|
+
padding: $gutter-half;
|
|
30
|
+
margin-top: $gutter * 2;
|
|
31
|
+
background-color: $error-background;
|
|
32
|
+
border: 1px solid $error-colour;
|
|
33
|
+
color: $error-colour;
|
|
34
|
+
}
|
data/lib/govuk_tech_docs.rb
CHANGED
|
@@ -7,8 +7,15 @@ require 'middleman-livereload'
|
|
|
7
7
|
require 'middleman-syntax'
|
|
8
8
|
|
|
9
9
|
require 'nokogiri'
|
|
10
|
+
require 'chronic'
|
|
11
|
+
require 'active_support/all'
|
|
10
12
|
|
|
13
|
+
require 'govuk_tech_docs/redirects'
|
|
11
14
|
require 'govuk_tech_docs/table_of_contents/helpers'
|
|
15
|
+
require 'govuk_tech_docs/contribution_banner'
|
|
16
|
+
require 'govuk_tech_docs/meta_tags'
|
|
17
|
+
require 'govuk_tech_docs/page_review'
|
|
18
|
+
require 'govuk_tech_docs/pages'
|
|
12
19
|
require 'govuk_tech_docs/tech_docs_html_renderer'
|
|
13
20
|
require 'govuk_tech_docs/unique_identifier_extension'
|
|
14
21
|
require 'govuk_tech_docs/unique_identifier_generator'
|
|
@@ -45,10 +52,31 @@ module GovukTechDocs
|
|
|
45
52
|
|
|
46
53
|
context.helpers do
|
|
47
54
|
include GovukTechDocs::TableOfContents::Helpers
|
|
55
|
+
include GovukTechDocs::ContributionBanner
|
|
56
|
+
|
|
57
|
+
def meta_tags
|
|
58
|
+
@meta_tags ||= GovukTechDocs::MetaTags.new(config, current_page)
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def current_page_review
|
|
62
|
+
@current_page_review ||= GovukTechDocs::PageReview.new(current_page)
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def format_date(date)
|
|
66
|
+
date.strftime('%-e %B %Y')
|
|
67
|
+
end
|
|
48
68
|
end
|
|
49
69
|
|
|
50
70
|
context.page '/*.xml', layout: false
|
|
51
71
|
context.page '/*.json', layout: false
|
|
52
72
|
context.page '/*.txt', layout: false
|
|
73
|
+
|
|
74
|
+
context.ready do
|
|
75
|
+
redirects = GovukTechDocs::Redirects.new(context).redirects
|
|
76
|
+
|
|
77
|
+
redirects.each do |from, to|
|
|
78
|
+
context.redirect from, to
|
|
79
|
+
end
|
|
80
|
+
end
|
|
53
81
|
end
|
|
54
82
|
end
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
module GovukTechDocs
|
|
2
|
+
# Helper included
|
|
3
|
+
module ContributionBanner
|
|
4
|
+
def source_urls
|
|
5
|
+
SourceUrls.new(current_page, config)
|
|
6
|
+
end
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
class SourceUrls
|
|
10
|
+
attr_reader :current_page, :config
|
|
11
|
+
|
|
12
|
+
def initialize(current_page, config)
|
|
13
|
+
@current_page = current_page
|
|
14
|
+
@config = config
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def view_source_url
|
|
18
|
+
override_from_page || source_from_yaml_file || source_from_file
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def report_issue_url
|
|
22
|
+
"#{repo_url}/issues/new?labels=bug&title=Re: '#{current_page.data.title}'&body=Problem with '#{current_page.data.title}' (#{config[:tech_docs][:host]}#{current_page.url})"
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def repo_url
|
|
26
|
+
"https://github.com/#{config[:tech_docs][:github_repo]}"
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
private
|
|
30
|
+
|
|
31
|
+
# If a `page` local exists, see if it has a `source_url`. This is used by the
|
|
32
|
+
# pages that are created by the proxy system because they can't use frontmatter
|
|
33
|
+
def override_from_page
|
|
34
|
+
locals.key?(:page) ? locals[:page].try(:source_url) : false
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# In the frontmatter we can specify a `source_url`. Use this if the actual
|
|
38
|
+
# source of the page is in another GitHub repo.
|
|
39
|
+
def source_from_yaml_file
|
|
40
|
+
current_page.data.source_url
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# As the last fallback link to the source file in this repository.
|
|
44
|
+
def source_from_file
|
|
45
|
+
"#{repo_url}/blob/master/source/#{current_page.file_descriptor[:relative_path]}"
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def locals
|
|
49
|
+
current_page.metadata[:locals]
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
module GovukTechDocs
|
|
2
|
+
class MetaTags
|
|
3
|
+
def initialize(config, current_page)
|
|
4
|
+
@config = config
|
|
5
|
+
@current_page = current_page
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def tags
|
|
9
|
+
all_tags = {
|
|
10
|
+
'description' => page_description,
|
|
11
|
+
'og:description' => page_description,
|
|
12
|
+
'og:image' => page_image,
|
|
13
|
+
'og:site_name' => site_name,
|
|
14
|
+
'og:title' => page_title,
|
|
15
|
+
'og:type' => 'object',
|
|
16
|
+
'og:url' => canonical_url,
|
|
17
|
+
'twitter:card' => 'summary',
|
|
18
|
+
'twitter:domain' => URI.parse(host).host,
|
|
19
|
+
'twitter:image' => page_image,
|
|
20
|
+
'twitter:title' => browser_title,
|
|
21
|
+
'twitter:url' => canonical_url,
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
Hash[all_tags.select { |_k, v| v }]
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def browser_title
|
|
28
|
+
[page_title, site_name].select(&:present?).uniq.join(' | ')
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def canonical_url
|
|
32
|
+
"#{host}#{current_page.url}"
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
private
|
|
36
|
+
|
|
37
|
+
attr_reader :config, :current_page
|
|
38
|
+
|
|
39
|
+
def page_image
|
|
40
|
+
"#{host}/images/govuk-large.png"
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def site_name
|
|
44
|
+
config[:tech_docs][:service_name]
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def page_description
|
|
48
|
+
locals[:description] || frontmatter.description
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def page_title
|
|
52
|
+
locals[:title] || frontmatter.title
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def host
|
|
56
|
+
config[:tech_docs][:host]
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def locals
|
|
60
|
+
current_page.metadata[:locals]
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def frontmatter
|
|
64
|
+
current_page.data
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
module GovukTechDocs
|
|
2
|
+
class PageReview
|
|
3
|
+
attr_reader :page
|
|
4
|
+
|
|
5
|
+
def initialize(page)
|
|
6
|
+
@page = page
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def review_by
|
|
10
|
+
return unless last_reviewed_on
|
|
11
|
+
|
|
12
|
+
@review_by ||= Chronic.parse(
|
|
13
|
+
"in #{page.data.review_in}",
|
|
14
|
+
now: last_reviewed_on.to_time
|
|
15
|
+
).to_date
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def under_review?
|
|
19
|
+
page.data.review_in.present?
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def last_reviewed_on
|
|
23
|
+
page.data.last_reviewed_on
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def owner_slack
|
|
27
|
+
page.data.owner_slack
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def owner_slack_url
|
|
31
|
+
# Slack URLs don't have the # (channels) or @ (usernames)
|
|
32
|
+
slack_identifier = owner_slack.to_s.delete('#').delete('@')
|
|
33
|
+
"https://govuk.slack.com/messages/#{slack_identifier}"
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
module GovukTechDocs
|
|
2
|
+
class Pages
|
|
3
|
+
attr_reader :sitemap
|
|
4
|
+
|
|
5
|
+
def initialize(sitemap, config)
|
|
6
|
+
@sitemap = sitemap
|
|
7
|
+
@config = config
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def to_json
|
|
11
|
+
as_json.to_json
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
private
|
|
15
|
+
|
|
16
|
+
def as_json
|
|
17
|
+
pages.map do |page|
|
|
18
|
+
{
|
|
19
|
+
title: page.data.title,
|
|
20
|
+
url: "#{@config[:tech_docs][:host]}#{page.url}",
|
|
21
|
+
review_by: PageReview.new(page).review_by,
|
|
22
|
+
owner_slack: page.data.owner_slack,
|
|
23
|
+
}
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def pages
|
|
28
|
+
sitemap.resources.select { |page| page.url.end_with?('.html') && page.data.title }
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
module GovukTechDocs
|
|
2
|
+
class Redirects
|
|
3
|
+
LEADING_SLASH = %r[\A\/]
|
|
4
|
+
|
|
5
|
+
def initialize(context)
|
|
6
|
+
@context = context
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def redirects
|
|
10
|
+
all_redirects = redirects_from_config + redirects_from_frontmatter
|
|
11
|
+
|
|
12
|
+
all_redirects.map do |from, to|
|
|
13
|
+
# Middleman needs paths without leading slashes
|
|
14
|
+
[from.sub(LEADING_SLASH, ''), to: to.sub(LEADING_SLASH, '')]
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
private
|
|
19
|
+
|
|
20
|
+
attr_reader :context
|
|
21
|
+
|
|
22
|
+
def redirects_from_config
|
|
23
|
+
context.config[:tech_docs][:redirects].to_a
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def redirects_from_frontmatter
|
|
27
|
+
reds = []
|
|
28
|
+
context.sitemap.resources.each do |page|
|
|
29
|
+
next unless page.data.old_paths
|
|
30
|
+
|
|
31
|
+
page.data.old_paths.each do |old_path|
|
|
32
|
+
reds << [old_path, page.path]
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
reds
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -8,12 +8,14 @@ module GovukTechDocs
|
|
|
8
8
|
module TableOfContents
|
|
9
9
|
module Helpers
|
|
10
10
|
def table_of_contents(html, max_level: nil)
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
11
|
+
headings = HeadingsBuilder.new(html).headings
|
|
12
|
+
|
|
13
|
+
if headings.none? { |heading| heading.size == 1 }
|
|
14
|
+
raise "No H1 tag found. You have to at least add one H1 heading to the page."
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
tree = HeadingTreeBuilder.new(headings).tree
|
|
18
|
+
HeadingTreeRenderer.new(tree, max_level: max_level).html
|
|
17
19
|
end
|
|
18
20
|
end
|
|
19
21
|
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<%= GovukTechDocs::Pages.new(sitemap, config).to_json %>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<% if current_page_review.under_review? %>
|
|
2
|
+
<div data-module='page-expiry' data-last-reviewed-on="<%= current_page_review.review_by %>">
|
|
3
|
+
<div class='page-expiry--not-expired'>
|
|
4
|
+
This page was last reviewed on <%= format_date current_page_review.last_reviewed_on %>.
|
|
5
|
+
|
|
6
|
+
It needs to be reviewed again on <%= format_date current_page_review.review_by %>
|
|
7
|
+
<% if current_page_review.owner_slack %>
|
|
8
|
+
by the page owner <%= link_to current_page_review.owner_slack, current_page_review.owner_slack_url %>
|
|
9
|
+
<% end %>.
|
|
10
|
+
</div>
|
|
11
|
+
|
|
12
|
+
<div class='page-expiry--expired'>
|
|
13
|
+
This page was set to be reviewed before <%= format_date current_page_review.review_by %><% if current_page_review.owner_slack %>
|
|
14
|
+
by the page owner <%= link_to current_page_review.owner_slack, current_page_review.owner_slack_url %><% end %>.
|
|
15
|
+
This might mean the content is out of date.
|
|
16
|
+
</div>
|
|
17
|
+
</div>
|
|
18
|
+
<% end %>
|
data/lib/source/layouts/core.erb
CHANGED
|
@@ -8,13 +8,12 @@
|
|
|
8
8
|
<meta name="robots" content="noindex">
|
|
9
9
|
<% end %>
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
<title><%= current_page.data.title || "GOV.UK Documentation" %></title>
|
|
11
|
+
<title><%= meta_tags.browser_title %></title>
|
|
13
12
|
|
|
14
13
|
<!--[if gt IE 8]><!--><%= stylesheet_link_tag :screen, media: 'screen' %><!--<![endif]-->
|
|
15
14
|
<!--[if lte IE 8]><%= stylesheet_link_tag 'screen-old-ie', media: 'screen' %><![endif]-->
|
|
16
15
|
|
|
17
|
-
<link rel="canonical" href="<%=
|
|
16
|
+
<link rel="canonical" href="<%= meta_tags.canonical_url %>">
|
|
18
17
|
|
|
19
18
|
<% if config[:tech_docs][:google_site_verification] %>
|
|
20
19
|
<meta name="google-site-verification" content="<%= config[:tech_docs][:google_site_verification] %>" />
|
|
@@ -22,6 +21,10 @@
|
|
|
22
21
|
|
|
23
22
|
<%= stylesheet_link_tag :print, media: 'print' %>
|
|
24
23
|
<%= javascript_include_tag :application %>
|
|
24
|
+
|
|
25
|
+
<% meta_tags.tags.each do |property, content| %>
|
|
26
|
+
<%= tag :meta, property: property, content: content %>
|
|
27
|
+
<% end %>
|
|
25
28
|
</head>
|
|
26
29
|
|
|
27
30
|
<body>
|
|
@@ -51,8 +54,17 @@
|
|
|
51
54
|
<div class="app-pane__content toc-open-disabled">
|
|
52
55
|
<main id="content" class="technical-documentation" data-module="anchored-headings">
|
|
53
56
|
<%= yield %>
|
|
57
|
+
<%= partial "layouts/page_review" %>
|
|
54
58
|
</main>
|
|
55
59
|
|
|
60
|
+
<% if config[:tech_docs][:show_contribution_banner] %>
|
|
61
|
+
<ul class="contribution-banner">
|
|
62
|
+
<li><%= link_to "View source", source_urls.view_source_url %></li>
|
|
63
|
+
<li><%= link_to "Report problem", source_urls.report_issue_url %></li>
|
|
64
|
+
<li><%= link_to "GitHub Repo", source_urls.repo_url %></li>
|
|
65
|
+
</ul>
|
|
66
|
+
<% end %>
|
|
67
|
+
|
|
56
68
|
<%= partial "layouts/footer" %>
|
|
57
69
|
</div>
|
|
58
70
|
</div>
|
metadata
CHANGED
|
@@ -1,15 +1,43 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: govuk_tech_docs
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Government Digital Service
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2018-
|
|
11
|
+
date: 2018-04-06 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: activesupport
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - ">="
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '0'
|
|
20
|
+
type: :runtime
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - ">="
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '0'
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: chronic
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - "~>"
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: 0.10.2
|
|
34
|
+
type: :runtime
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - "~>"
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: 0.10.2
|
|
13
41
|
- !ruby/object:Gem::Dependency
|
|
14
42
|
name: middleman
|
|
15
43
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -164,6 +192,20 @@ dependencies:
|
|
|
164
192
|
- - "~>"
|
|
165
193
|
- !ruby/object:Gem::Version
|
|
166
194
|
version: 2.18.0
|
|
195
|
+
- !ruby/object:Gem::Dependency
|
|
196
|
+
name: govuk-lint
|
|
197
|
+
requirement: !ruby/object:Gem::Requirement
|
|
198
|
+
requirements:
|
|
199
|
+
- - "~>"
|
|
200
|
+
- !ruby/object:Gem::Version
|
|
201
|
+
version: 3.7.0
|
|
202
|
+
type: :development
|
|
203
|
+
prerelease: false
|
|
204
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
205
|
+
requirements:
|
|
206
|
+
- - "~>"
|
|
207
|
+
- !ruby/object:Gem::Version
|
|
208
|
+
version: 3.7.0
|
|
167
209
|
- !ruby/object:Gem::Dependency
|
|
168
210
|
name: jasmine
|
|
169
211
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -203,6 +245,8 @@ files:
|
|
|
203
245
|
- ".editorconfig"
|
|
204
246
|
- ".gitignore"
|
|
205
247
|
- ".rspec"
|
|
248
|
+
- ".rubocop.yml"
|
|
249
|
+
- ".ruby-version"
|
|
206
250
|
- ".travis.yml"
|
|
207
251
|
- CHANGELOG.md
|
|
208
252
|
- Gemfile
|
|
@@ -210,21 +254,33 @@ files:
|
|
|
210
254
|
- README.md
|
|
211
255
|
- Rakefile
|
|
212
256
|
- docs/configuration.md
|
|
257
|
+
- docs/core-layout.png
|
|
258
|
+
- docs/expired-page.png
|
|
259
|
+
- docs/frontmatter.md
|
|
260
|
+
- docs/layout-layout.png
|
|
261
|
+
- docs/not-expired-page.png
|
|
213
262
|
- example/.ruby-version
|
|
214
263
|
- example/Gemfile
|
|
215
264
|
- example/config.rb
|
|
216
265
|
- example/config/tech-docs.yml
|
|
266
|
+
- example/source/core-layout.html.md.erb
|
|
267
|
+
- example/source/expired-page-with-owner.html.md
|
|
268
|
+
- example/source/expired-page.html.md
|
|
269
|
+
- example/source/headings.html.md
|
|
217
270
|
- example/source/index.html.md.erb
|
|
218
271
|
- example/source/javascripts/application.js
|
|
272
|
+
- example/source/not-expired-page.html.md
|
|
219
273
|
- example/source/stylesheets/print.css.scss
|
|
220
274
|
- example/source/stylesheets/screen-old-ie.css.scss
|
|
221
275
|
- example/source/stylesheets/screen.css.scss
|
|
276
|
+
- example/source/templates/proxy_template.html.md
|
|
222
277
|
- govuk_tech_docs.gemspec
|
|
223
278
|
- lib/assets/javascripts/_analytics.js
|
|
224
279
|
- lib/assets/javascripts/_govuk/modules.js
|
|
225
280
|
- lib/assets/javascripts/_modules/anchored-headings.js
|
|
226
281
|
- lib/assets/javascripts/_modules/in-page-navigation.js
|
|
227
282
|
- lib/assets/javascripts/_modules/navigation.js
|
|
283
|
+
- lib/assets/javascripts/_modules/page-expiry.js
|
|
228
284
|
- lib/assets/javascripts/_modules/table-of-contents.js
|
|
229
285
|
- lib/assets/javascripts/_start-modules.js
|
|
230
286
|
- lib/assets/javascripts/_vendor/fixedsticky.js
|
|
@@ -256,9 +312,11 @@ files:
|
|
|
256
312
|
- lib/assets/stylesheets/govuk_frontend_toolkit/design-patterns/_media-player.scss
|
|
257
313
|
- lib/assets/stylesheets/modules/_anchored-heading.scss
|
|
258
314
|
- lib/assets/stylesheets/modules/_app-pane.scss
|
|
315
|
+
- lib/assets/stylesheets/modules/_contribution-banner.scss
|
|
259
316
|
- lib/assets/stylesheets/modules/_footer.scss
|
|
260
317
|
- lib/assets/stylesheets/modules/_govuk-logo.scss
|
|
261
318
|
- lib/assets/stylesheets/modules/_header.scss
|
|
319
|
+
- lib/assets/stylesheets/modules/_page-review.scss
|
|
262
320
|
- lib/assets/stylesheets/modules/_phase-banner.scss
|
|
263
321
|
- lib/assets/stylesheets/modules/_skip-link.scss
|
|
264
322
|
- lib/assets/stylesheets/modules/_technical-documentation.scss
|
|
@@ -268,6 +326,11 @@ files:
|
|
|
268
326
|
- lib/assets/stylesheets/utilities/_printable.scss
|
|
269
327
|
- lib/assets/stylesheets/vendor/_fixedsticky.scss
|
|
270
328
|
- lib/govuk_tech_docs.rb
|
|
329
|
+
- lib/govuk_tech_docs/contribution_banner.rb
|
|
330
|
+
- lib/govuk_tech_docs/meta_tags.rb
|
|
331
|
+
- lib/govuk_tech_docs/page_review.rb
|
|
332
|
+
- lib/govuk_tech_docs/pages.rb
|
|
333
|
+
- lib/govuk_tech_docs/redirects.rb
|
|
271
334
|
- lib/govuk_tech_docs/table_of_contents/heading.rb
|
|
272
335
|
- lib/govuk_tech_docs/table_of_contents/heading_tree.rb
|
|
273
336
|
- lib/govuk_tech_docs/table_of_contents/heading_tree_builder.rb
|
|
@@ -278,6 +341,7 @@ files:
|
|
|
278
341
|
- lib/govuk_tech_docs/unique_identifier_extension.rb
|
|
279
342
|
- lib/govuk_tech_docs/unique_identifier_generator.rb
|
|
280
343
|
- lib/govuk_tech_docs/version.rb
|
|
344
|
+
- lib/source/api/pages.json.erb
|
|
281
345
|
- lib/source/favicon.ico
|
|
282
346
|
- lib/source/images/anchored-heading-icon-2x.png
|
|
283
347
|
- lib/source/images/anchored-heading-icon.png
|
|
@@ -295,6 +359,7 @@ files:
|
|
|
295
359
|
- lib/source/layouts/_analytics.erb
|
|
296
360
|
- lib/source/layouts/_footer.erb
|
|
297
361
|
- lib/source/layouts/_header.erb
|
|
362
|
+
- lib/source/layouts/_page_review.erb
|
|
298
363
|
- lib/source/layouts/core.erb
|
|
299
364
|
- lib/source/layouts/layout.erb
|
|
300
365
|
homepage: https://github.com/alphagov/tech-docs-gem
|
|
@@ -317,7 +382,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
317
382
|
version: '0'
|
|
318
383
|
requirements: []
|
|
319
384
|
rubyforge_project:
|
|
320
|
-
rubygems_version: 2.
|
|
385
|
+
rubygems_version: 2.6.13
|
|
321
386
|
signing_key:
|
|
322
387
|
specification_version: 4
|
|
323
388
|
summary: Gem to distribute the GOV.UK Tech Docs Template
|