dss_tech_docs 0.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 +7 -0
- data/.editorconfig +29 -0
- data/.gitignore +37 -0
- data/.rspec +2 -0
- data/.rubocop.yml +11 -0
- data/.ruby-version +1 -0
- data/.travis.yml +9 -0
- data/CHANGELOG.md +274 -0
- data/CONTRIBUTING.md +9 -0
- data/Gemfile +4 -0
- data/LICENCE +21 -0
- data/README.md +89 -0
- data/Rakefile +13 -0
- data/docs/configuration.md +205 -0
- data/docs/core-layout-without-sidebar.png +0 -0
- data/docs/core-layout.png +0 -0
- data/docs/expired-page.png +0 -0
- data/docs/frontmatter.md +145 -0
- data/docs/last-reviewed-only.png +0 -0
- data/docs/last-reviewed-only.svg +1 -0
- data/docs/layout-layout.png +0 -0
- data/docs/not-expired-page.png +0 -0
- data/docs/page-expiry.md +85 -0
- data/dss_tech_docs.gemspec +46 -0
- data/example/.ruby-version +1 -0
- data/example/Gemfile +3 -0
- data/example/config.rb +9 -0
- data/example/config/hide-expiry.yml +51 -0
- data/example/config/tech-docs.yml +50 -0
- data/example/source/api-path.html.md +7 -0
- data/example/source/api-reference.html.md +5 -0
- data/example/source/child-of-expired-page.html.md +8 -0
- data/example/source/core-layout-without-sidebar.html.md.erb +7 -0
- 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 +19 -0
- data/example/source/javascripts/application.js +1 -0
- data/example/source/not-expired-page.html.md +9 -0
- data/example/source/pets.yml +109 -0
- data/example/source/stylesheets/print.css.scss +3 -0
- data/example/source/stylesheets/screen-old-ie.css.scss +4 -0
- data/example/source/stylesheets/screen.css.scss +1 -0
- data/example/source/templates/proxy_template.html.md +8 -0
- data/lib/assets/javascripts/_analytics.js +58 -0
- data/lib/assets/javascripts/_govuk/modules.js +57 -0
- data/lib/assets/javascripts/_modules/anchored-headings.js +18 -0
- data/lib/assets/javascripts/_modules/collapsible-navigation.js +95 -0
- data/lib/assets/javascripts/_modules/in-page-navigation.js +132 -0
- data/lib/assets/javascripts/_modules/navigation.js +34 -0
- data/lib/assets/javascripts/_modules/page-expiry.js +15 -0
- data/lib/assets/javascripts/_modules/search.js +367 -0
- data/lib/assets/javascripts/_modules/table-of-contents.js +111 -0
- data/lib/assets/javascripts/_start-modules.js +13 -0
- data/lib/assets/javascripts/_vendor/fixedsticky.js +194 -0
- data/lib/assets/javascripts/_vendor/jquery.js +5 -0
- data/lib/assets/javascripts/_vendor/jquery.mark.js +1081 -0
- data/lib/assets/javascripts/_vendor/lodash.js +613 -0
- data/lib/assets/javascripts/_vendor/modernizr.js +3 -0
- data/lib/assets/javascripts/govuk_tech_docs.js +10 -0
- data/lib/assets/stylesheets/_accessibility.scss +9 -0
- data/lib/assets/stylesheets/_core.scss +71 -0
- data/lib/assets/stylesheets/_fonts.scss +29 -0
- data/lib/assets/stylesheets/_govuk_tech_docs.scss +2 -0
- data/lib/assets/stylesheets/_syntax-highlighting.scss +196 -0
- data/lib/assets/stylesheets/_variables.scss +12 -0
- data/lib/assets/stylesheets/govuk_frontend_toolkit/_colours.scss +2 -0
- data/lib/assets/stylesheets/govuk_frontend_toolkit/_conditionals.scss +81 -0
- data/lib/assets/stylesheets/govuk_frontend_toolkit/_css3.scss +90 -0
- data/lib/assets/stylesheets/govuk_frontend_toolkit/_device-pixels.scss +10 -0
- data/lib/assets/stylesheets/govuk_frontend_toolkit/_font_stack.scss +19 -0
- data/lib/assets/stylesheets/govuk_frontend_toolkit/_grid_layout.scss +136 -0
- data/lib/assets/stylesheets/govuk_frontend_toolkit/_helpers.scss +16 -0
- data/lib/assets/stylesheets/govuk_frontend_toolkit/_measurements.scss +14 -0
- data/lib/assets/stylesheets/govuk_frontend_toolkit/_shims.scss +55 -0
- data/lib/assets/stylesheets/govuk_frontend_toolkit/_typography.scss +249 -0
- data/lib/assets/stylesheets/govuk_frontend_toolkit/_url-helpers.scss +16 -0
- data/lib/assets/stylesheets/govuk_frontend_toolkit/colours/_organisation.scss +103 -0
- data/lib/assets/stylesheets/govuk_frontend_toolkit/colours/_palette.scss +77 -0
- data/lib/assets/stylesheets/govuk_frontend_toolkit/design-patterns/_alpha-beta.scss +66 -0
- data/lib/assets/stylesheets/govuk_frontend_toolkit/design-patterns/_breadcrumbs.scss +53 -0
- data/lib/assets/stylesheets/govuk_frontend_toolkit/design-patterns/_buttons.scss +141 -0
- data/lib/assets/stylesheets/govuk_frontend_toolkit/design-patterns/_media-player.scss +242 -0
- data/lib/assets/stylesheets/modules/_anchored-heading.scss +54 -0
- data/lib/assets/stylesheets/modules/_app-pane.scss +64 -0
- data/lib/assets/stylesheets/modules/_collapsible.scss +52 -0
- data/lib/assets/stylesheets/modules/_contribution-banner.scss +22 -0
- data/lib/assets/stylesheets/modules/_footer.scss +130 -0
- data/lib/assets/stylesheets/modules/_govuk-logo.scss +47 -0
- data/lib/assets/stylesheets/modules/_header.scss +290 -0
- data/lib/assets/stylesheets/modules/_page-review.scss +35 -0
- data/lib/assets/stylesheets/modules/_phase-banner.scss +22 -0
- data/lib/assets/stylesheets/modules/_search.scss +137 -0
- data/lib/assets/stylesheets/modules/_skip-link.scss +31 -0
- data/lib/assets/stylesheets/modules/_technical-documentation.scss +241 -0
- data/lib/assets/stylesheets/modules/_toc.scss +216 -0
- data/lib/assets/stylesheets/modules/_warning-text.scss +73 -0
- data/lib/assets/stylesheets/palette/_syntax-highlighting.scss +23 -0
- data/lib/assets/stylesheets/utilities/_fonts.scss +29 -0
- data/lib/assets/stylesheets/utilities/_printable.scss +13 -0
- data/lib/assets/stylesheets/vendor/_fixedsticky.scss +22 -0
- data/lib/dss_tech_docs.rb +121 -0
- data/lib/govuk_tech_docs/api_reference/api_reference_extension.rb +101 -0
- data/lib/govuk_tech_docs/api_reference/api_reference_renderer.rb +279 -0
- data/lib/govuk_tech_docs/api_reference/templates/api_reference_full.html.erb +19 -0
- data/lib/govuk_tech_docs/api_reference/templates/operation.html.erb +11 -0
- data/lib/govuk_tech_docs/api_reference/templates/parameters.html.erb +28 -0
- data/lib/govuk_tech_docs/api_reference/templates/path.html.erb +4 -0
- data/lib/govuk_tech_docs/api_reference/templates/responses.html.erb +33 -0
- data/lib/govuk_tech_docs/api_reference/templates/schema.html.erb +29 -0
- data/lib/govuk_tech_docs/contribution_banner.rb +62 -0
- data/lib/govuk_tech_docs/meta_tags.rb +67 -0
- data/lib/govuk_tech_docs/page_review.rb +52 -0
- data/lib/govuk_tech_docs/pages.rb +32 -0
- data/lib/govuk_tech_docs/redirects.rb +39 -0
- data/lib/govuk_tech_docs/table_of_contents/heading.rb +30 -0
- data/lib/govuk_tech_docs/table_of_contents/heading_tree.rb +27 -0
- data/lib/govuk_tech_docs/table_of_contents/heading_tree_builder.rb +41 -0
- data/lib/govuk_tech_docs/table_of_contents/heading_tree_renderer.rb +46 -0
- data/lib/govuk_tech_docs/table_of_contents/headings_builder.rb +39 -0
- data/lib/govuk_tech_docs/table_of_contents/helpers.rb +79 -0
- data/lib/govuk_tech_docs/tech_docs_html_renderer.rb +34 -0
- data/lib/govuk_tech_docs/unique_identifier_extension.rb +13 -0
- data/lib/govuk_tech_docs/unique_identifier_generator.rb +72 -0
- data/lib/govuk_tech_docs/version.rb +3 -0
- data/lib/govuk_tech_docs/warning_text_extension.rb +23 -0
- data/lib/source/api/pages.json.erb +1 -0
- data/lib/source/favicon.ico +0 -0
- data/lib/source/images/anchored-heading-icon-2x.png +0 -0
- data/lib/source/images/anchored-heading-icon.png +0 -0
- data/lib/source/images/gov.uk_logotype_crown-2x.png +0 -0
- data/lib/source/images/gov.uk_logotype_crown.png +0 -0
- data/lib/source/images/gov.uk_logotype_crown_invert_trans.png +0 -0
- data/lib/source/images/govuk-crest-2x.png +0 -0
- data/lib/source/images/govuk-crest.png +0 -0
- data/lib/source/images/govuk-icn-close.png +0 -0
- data/lib/source/images/govuk-icn-close@2x.png +0 -0
- data/lib/source/images/govuk-icn-numbered-list.png +0 -0
- data/lib/source/images/govuk-icn-numbered-list@2x.png +0 -0
- data/lib/source/images/open-government-licence.png +0 -0
- data/lib/source/images/open-government-licence_2x.png +0 -0
- data/lib/source/images/search-result-caret.svg +13 -0
- data/lib/source/layouts/_analytics.erb +15 -0
- data/lib/source/layouts/_footer.erb +10 -0
- data/lib/source/layouts/_header.erb +44 -0
- data/lib/source/layouts/_page_review.erb +22 -0
- data/lib/source/layouts/_search.erb +16 -0
- data/lib/source/layouts/core.erb +82 -0
- data/lib/source/layouts/layout.erb +18 -0
- metadata +474 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
lib = File.expand_path("../lib", __FILE__)
|
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
|
+
require "govuk_tech_docs/version"
|
|
5
|
+
|
|
6
|
+
Gem::Specification.new do |spec|
|
|
7
|
+
spec.name = "dss_tech_docs"
|
|
8
|
+
spec.version = GovukTechDocs::VERSION
|
|
9
|
+
spec.authors = ["Digital Shared Services"]
|
|
10
|
+
spec.email = ["stephen.patterson@finance-ni.gov.uk"]
|
|
11
|
+
|
|
12
|
+
spec.summary = %q{Gem to distribute the DSS Tech Docs Template}
|
|
13
|
+
spec.description = %q{Gem to distribute the DSS Tech Docs Template. See https://github.com/dof-dss/tech-docs-gem for the project.}
|
|
14
|
+
spec.homepage = "https://github.com/dof-dss/tech-docs-gem"
|
|
15
|
+
spec.license = "MIT"
|
|
16
|
+
|
|
17
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
|
18
|
+
f.match(%r{^(test|spec|features)/})
|
|
19
|
+
end
|
|
20
|
+
spec.bindir = "exe"
|
|
21
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
22
|
+
spec.require_paths = ["lib"]
|
|
23
|
+
|
|
24
|
+
spec.add_dependency "activesupport"
|
|
25
|
+
spec.add_dependency "chronic", "~> 0.10.2"
|
|
26
|
+
spec.add_dependency "middleman", "~> 4.0"
|
|
27
|
+
spec.add_dependency "middleman-autoprefixer", "~> 2.7.0"
|
|
28
|
+
spec.add_dependency "middleman-compass", ">= 4.0.0"
|
|
29
|
+
spec.add_dependency "middleman-livereload"
|
|
30
|
+
spec.add_dependency "middleman-sprockets", "~> 4.0.0"
|
|
31
|
+
spec.add_dependency "middleman-syntax", "~> 3.0.0"
|
|
32
|
+
spec.add_dependency 'middleman-search-gds', '~> 0.11.0a'
|
|
33
|
+
spec.add_dependency "nokogiri"
|
|
34
|
+
spec.add_dependency "redcarpet", "~> 3.3.2"
|
|
35
|
+
spec.add_dependency "openapi3_parser"
|
|
36
|
+
spec.add_dependency "pry"
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
spec.add_development_dependency "bundler", "~> 2.0.1"
|
|
40
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
|
41
|
+
spec.add_development_dependency "capybara", "~> 2.18.0"
|
|
42
|
+
spec.add_development_dependency "govuk-lint", "~> 3.7.0"
|
|
43
|
+
spec.add_development_dependency "jasmine", "~> 3.1.0"
|
|
44
|
+
spec.add_development_dependency "rspec", "~> 3.7.0"
|
|
45
|
+
spec.add_development_dependency "byebug"
|
|
46
|
+
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2.4.2
|
data/example/Gemfile
ADDED
data/example/config.rb
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Host to use for canonical URL generation (without trailing slash)
|
|
2
|
+
host: https://docs.example.com
|
|
3
|
+
|
|
4
|
+
# Header-related options
|
|
5
|
+
show_govuk_logo: true
|
|
6
|
+
service_name: My First Service
|
|
7
|
+
service_link: /
|
|
8
|
+
phase: Beta
|
|
9
|
+
|
|
10
|
+
# Links to show on right-hand-side of header
|
|
11
|
+
header_links:
|
|
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
|
|
16
|
+
|
|
17
|
+
# Tracking ID from Google Analytics (e.g. UA-XXXX-Y)
|
|
18
|
+
ga_tracking_id:
|
|
19
|
+
|
|
20
|
+
# Enable multipage navigation in the sidebar
|
|
21
|
+
multipage_nav: true
|
|
22
|
+
|
|
23
|
+
# Enable collapsible navigation in the sidebar
|
|
24
|
+
collapsible_nav: true
|
|
25
|
+
|
|
26
|
+
# Table of contents depth – how many levels to include in the table of contents.
|
|
27
|
+
# If your ToC is too long, reduce this number and we'll only show higher-level
|
|
28
|
+
# headings.
|
|
29
|
+
max_toc_heading_level: 6
|
|
30
|
+
|
|
31
|
+
# Prevent robots from indexing (e.g. whilst in development)
|
|
32
|
+
prevent_indexing: false
|
|
33
|
+
|
|
34
|
+
google_site_verification: dstbao8TVS^DRVDS&rv76
|
|
35
|
+
|
|
36
|
+
enable_search: true
|
|
37
|
+
|
|
38
|
+
show_contribution_banner: true
|
|
39
|
+
|
|
40
|
+
github_repo: alphagov/example-repo
|
|
41
|
+
github_branch: source
|
|
42
|
+
|
|
43
|
+
redirects:
|
|
44
|
+
/something/old.html: /index.html
|
|
45
|
+
|
|
46
|
+
api_path: source/pets.yml
|
|
47
|
+
|
|
48
|
+
# Optional global settings for the page review process
|
|
49
|
+
owner_slack_workspace: gds
|
|
50
|
+
default_owner_slack: '#2nd-line'
|
|
51
|
+
show_expiry: false
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Host to use for canonical URL generation (without trailing slash)
|
|
2
|
+
host: https://docs.example.com
|
|
3
|
+
|
|
4
|
+
# Header-related options
|
|
5
|
+
show_govuk_logo: false
|
|
6
|
+
service_name: DSS Tech Docs Example
|
|
7
|
+
service_link: /
|
|
8
|
+
phase: Beta
|
|
9
|
+
|
|
10
|
+
# Links to show on right-hand-side of header
|
|
11
|
+
header_links:
|
|
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
|
|
16
|
+
|
|
17
|
+
# Tracking ID from Google Analytics (e.g. UA-XXXX-Y)
|
|
18
|
+
ga_tracking_id:
|
|
19
|
+
|
|
20
|
+
# Enable multipage navigation in the sidebar
|
|
21
|
+
multipage_nav: true
|
|
22
|
+
|
|
23
|
+
# Enable collapsible navigation in the sidebar
|
|
24
|
+
collapsible_nav: true
|
|
25
|
+
|
|
26
|
+
# Table of contents depth – how many levels to include in the table of contents.
|
|
27
|
+
# If your ToC is too long, reduce this number and we'll only show higher-level
|
|
28
|
+
# headings.
|
|
29
|
+
max_toc_heading_level: 6
|
|
30
|
+
|
|
31
|
+
# Prevent robots from indexing (e.g. whilst in development)
|
|
32
|
+
prevent_indexing: false
|
|
33
|
+
|
|
34
|
+
google_site_verification: dstbao8TVS^DRVDS&rv76
|
|
35
|
+
|
|
36
|
+
enable_search: true
|
|
37
|
+
|
|
38
|
+
show_contribution_banner: true
|
|
39
|
+
|
|
40
|
+
github_repo: dof-dss/example-repo
|
|
41
|
+
github_branch: source
|
|
42
|
+
|
|
43
|
+
redirects:
|
|
44
|
+
/something/old.html: /index.html
|
|
45
|
+
|
|
46
|
+
api_path: source/pets.yml
|
|
47
|
+
|
|
48
|
+
# Optional global settings for the page review process
|
|
49
|
+
owner_slack_workspace: gds
|
|
50
|
+
default_owner_slack: '#2nd-line'
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: DSS Tech Docs Example
|
|
3
|
+
old_paths:
|
|
4
|
+
- /something/old-as-well.html
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Hello, World!
|
|
8
|
+
|
|
9
|
+
## Edit Me!
|
|
10
|
+
|
|
11
|
+
Open `source/documentation/index.md` in your favourite text editor and start editing!
|
|
12
|
+
|
|
13
|
+
You can write content in [Markdown](https://daringfireball.net/projects/markdown/) using **all** of the _usual_ syntax that you're used to!
|
|
14
|
+
|
|
15
|
+
To change the title of the page or include additional files you'll need to edit `source/index.html.md.erb`.
|
|
16
|
+
|
|
17
|
+
If you want slightly more control, you can always use <strong>HTML</strong>.
|
|
18
|
+
|
|
19
|
+
For more detail and troubleshooting, take a look at the `README.md` file in the root of this project.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//= require govuk_tech_docs
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
openapi: "3.0.0"
|
|
2
|
+
info:
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
title: Swagger Petstore
|
|
5
|
+
description: A sample API that uses a petstore as an example to demonstrate features in the OpenAPI 3.0 specification
|
|
6
|
+
license:
|
|
7
|
+
name: MIT
|
|
8
|
+
servers:
|
|
9
|
+
- description: Production
|
|
10
|
+
url: http://petstore.swagger.io/v1
|
|
11
|
+
- description: Development
|
|
12
|
+
url: http://dev.petstore.swagger.io
|
|
13
|
+
paths:
|
|
14
|
+
/pets:
|
|
15
|
+
get:
|
|
16
|
+
summary: List all pets
|
|
17
|
+
operationId: listPets
|
|
18
|
+
tags:
|
|
19
|
+
- pets
|
|
20
|
+
parameters:
|
|
21
|
+
- name: limit
|
|
22
|
+
in: query
|
|
23
|
+
description: How many items to return at one time (max 100)
|
|
24
|
+
required: false
|
|
25
|
+
schema:
|
|
26
|
+
type: integer
|
|
27
|
+
format: int32
|
|
28
|
+
responses:
|
|
29
|
+
'200':
|
|
30
|
+
description: A paged array of pets
|
|
31
|
+
headers:
|
|
32
|
+
content:
|
|
33
|
+
application/json:
|
|
34
|
+
schema:
|
|
35
|
+
$ref: "#/components/schemas/Pets"
|
|
36
|
+
default:
|
|
37
|
+
description: unexpected error
|
|
38
|
+
content:
|
|
39
|
+
application/json:
|
|
40
|
+
schema:
|
|
41
|
+
$ref: "#/components/schemas/Error"
|
|
42
|
+
post:
|
|
43
|
+
summary: Create a pet
|
|
44
|
+
operationId: createPets
|
|
45
|
+
tags:
|
|
46
|
+
- pets
|
|
47
|
+
responses:
|
|
48
|
+
'201':
|
|
49
|
+
description: Null response
|
|
50
|
+
default:
|
|
51
|
+
description: unexpected error
|
|
52
|
+
content:
|
|
53
|
+
application/json:
|
|
54
|
+
schema:
|
|
55
|
+
$ref: "#/components/schemas/Error"
|
|
56
|
+
/pets/{petId}:
|
|
57
|
+
get:
|
|
58
|
+
summary: Info for a specific pet
|
|
59
|
+
operationId: showPetById
|
|
60
|
+
tags:
|
|
61
|
+
- pets
|
|
62
|
+
parameters:
|
|
63
|
+
- name: petId
|
|
64
|
+
in: path
|
|
65
|
+
required: true
|
|
66
|
+
description: The id of the pet to retrieve
|
|
67
|
+
schema:
|
|
68
|
+
type: string
|
|
69
|
+
responses:
|
|
70
|
+
'200':
|
|
71
|
+
description: Expected response to a valid request
|
|
72
|
+
content:
|
|
73
|
+
application/json:
|
|
74
|
+
schema:
|
|
75
|
+
$ref: "#/components/schemas/Pets"
|
|
76
|
+
default:
|
|
77
|
+
description: unexpected error
|
|
78
|
+
content:
|
|
79
|
+
application/json:
|
|
80
|
+
schema:
|
|
81
|
+
$ref: "#/components/schemas/Error"
|
|
82
|
+
components:
|
|
83
|
+
schemas:
|
|
84
|
+
Pet:
|
|
85
|
+
required:
|
|
86
|
+
- id
|
|
87
|
+
- name
|
|
88
|
+
properties:
|
|
89
|
+
id:
|
|
90
|
+
type: integer
|
|
91
|
+
format: int64
|
|
92
|
+
name:
|
|
93
|
+
type: string
|
|
94
|
+
tag:
|
|
95
|
+
type: string
|
|
96
|
+
Pets:
|
|
97
|
+
type: array
|
|
98
|
+
items:
|
|
99
|
+
$ref: "#/components/schemas/Pet"
|
|
100
|
+
Error:
|
|
101
|
+
required:
|
|
102
|
+
- code
|
|
103
|
+
- message
|
|
104
|
+
properties:
|
|
105
|
+
code:
|
|
106
|
+
type: integer
|
|
107
|
+
format: int32
|
|
108
|
+
message:
|
|
109
|
+
type: string
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@import "govuk_tech_docs";
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
(function($) {
|
|
2
|
+
function trackLinkClick(action, $element) {
|
|
3
|
+
var linkText = $.trim($element.text());
|
|
4
|
+
var linkURL = $element.attr('href');
|
|
5
|
+
var label = linkText + '|' + linkURL;
|
|
6
|
+
|
|
7
|
+
ga(
|
|
8
|
+
'send',
|
|
9
|
+
'event',
|
|
10
|
+
'SM Technical Documentation', // Event Category
|
|
11
|
+
action, // Event Action
|
|
12
|
+
label // Event Label
|
|
13
|
+
);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
function linkTrackingEventHandler(action) {
|
|
17
|
+
return function() {
|
|
18
|
+
trackLinkClick(action, $(this));
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
function catchBrokenFragmentLinks() {
|
|
23
|
+
var fragment = window.location.hash;
|
|
24
|
+
var $target = $(fragment);
|
|
25
|
+
if(!$target.get(0)) {
|
|
26
|
+
ga(
|
|
27
|
+
'send',
|
|
28
|
+
'event',
|
|
29
|
+
'Broken fragment ID', // Event Category
|
|
30
|
+
'pageview', // Event Action
|
|
31
|
+
window.location.pathname + fragment // Event Label
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
$(document).on('ready', function() {
|
|
37
|
+
if (typeof ga === 'undefined') {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
$('.technical-documentation a').on('click', linkTrackingEventHandler('inTextClick'));
|
|
42
|
+
$('.header a').on('click', linkTrackingEventHandler('topNavigationClick'));
|
|
43
|
+
$('.toc a').on('click', linkTrackingEventHandler('tableOfContentsNavigationClick'));
|
|
44
|
+
catchBrokenFragmentLinks();
|
|
45
|
+
|
|
46
|
+
// Borrowed from:
|
|
47
|
+
// https://github.com/alphagov/govuk_frontend_toolkit/blob/master/javascripts/govuk/analytics/analytics.js
|
|
48
|
+
window.stripPIIFromString = function (string) {
|
|
49
|
+
var EMAIL_PATTERN = /[^\s=/?&]+(?:@|%40)[^\s=/?&]+/g
|
|
50
|
+
var POSTCODE_PATTERN = /[A-PR-UWYZ][A-HJ-Z]?[0-9][0-9A-HJKMNPR-Y]?(?:[\s+]|%20)*[0-9][ABD-HJLNPQ-Z]{2}/gi
|
|
51
|
+
var DATE_PATTERN = /\d{4}(-?)\d{2}(-?)\d{2}/g
|
|
52
|
+
var stripped = string.replace(EMAIL_PATTERN, '[email]')
|
|
53
|
+
.replace(DATE_PATTERN, '[date]')
|
|
54
|
+
.replace(POSTCODE_PATTERN, '[postcode]');
|
|
55
|
+
return stripped
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
})(jQuery);
|