govuk_markdown 2.0.2 → 2.0.4
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/lib/govuk_markdown/preprocessor.rb +8 -0
- data/lib/govuk_markdown/renderer/mixin.rb +97 -0
- data/lib/govuk_markdown/renderer.rb +7 -91
- data/lib/govuk_markdown/version.rb +1 -1
- data/lib/govuk_markdown.rb +2 -1
- metadata +6 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 12e676d3536a62d66092d85e357f8c3e7315c99dfba63908658b7258bc2c2429
|
|
4
|
+
data.tar.gz: 8d687183bc7ea570bebaed9ac81616fa11e1d3f8c5e32ef3b9b6c6cf2cac68c7
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 748c789cdaa0f0d14eb7ed72b3f7720c1fe6184898afff0f9a6aa07c636be0c24def03328cfdd174f1ff9cf70aa960bda3b45b9ae640117866e95f2235d02f47
|
|
7
|
+
data.tar.gz: 24ff957175a76b434a18aeac4f221e857ab37e179efc9c6f07635cc959b67ecfa34e3aef16c64202b50d42e7d43da31dc56f9d0d1b5f291d943668a76bb9db90
|
|
@@ -37,6 +37,14 @@ module GovukMarkdown
|
|
|
37
37
|
self
|
|
38
38
|
end
|
|
39
39
|
|
|
40
|
+
def strip_front_matter(enabled)
|
|
41
|
+
return self unless enabled
|
|
42
|
+
|
|
43
|
+
@output = output.gsub(%r{^---\n.*\n---}m, "")
|
|
44
|
+
|
|
45
|
+
self
|
|
46
|
+
end
|
|
47
|
+
|
|
40
48
|
private
|
|
41
49
|
|
|
42
50
|
# parse as markdown if there are multiple lines of content
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
module GovukMarkdown
|
|
2
|
+
# Renderer::Mixin overrides methods in Redcarpet::Render::HTML.
|
|
3
|
+
# See `GovukMarkdown::Renderer` for an example of how to include it.
|
|
4
|
+
module Renderer::Mixin
|
|
5
|
+
def table(header, body)
|
|
6
|
+
<<~HTML
|
|
7
|
+
<table class='govuk-table'>
|
|
8
|
+
<thead class='govuk-table__head'>
|
|
9
|
+
#{header}
|
|
10
|
+
</thead>
|
|
11
|
+
<tbody class='govuk-table__body'>
|
|
12
|
+
#{body}
|
|
13
|
+
</tbody>
|
|
14
|
+
</table>
|
|
15
|
+
HTML
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def table_row(content)
|
|
19
|
+
<<~HTML
|
|
20
|
+
<tr class='govuk-table__row'>
|
|
21
|
+
#{content}
|
|
22
|
+
</tr>
|
|
23
|
+
HTML
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def table_cell(content, _alignment, header)
|
|
27
|
+
if header
|
|
28
|
+
<<~HTML
|
|
29
|
+
<th class='govuk-table__header'>
|
|
30
|
+
#{content}
|
|
31
|
+
</th>
|
|
32
|
+
HTML
|
|
33
|
+
else
|
|
34
|
+
<<~HTML
|
|
35
|
+
<td class='govuk-table__cell'>
|
|
36
|
+
#{content}
|
|
37
|
+
</td>
|
|
38
|
+
HTML
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def header(text, header_level)
|
|
43
|
+
valid_header_sizes = %w[xl l m s].freeze
|
|
44
|
+
|
|
45
|
+
start_size = valid_header_sizes.include?(@headings_start_with) ? @headings_start_with : "xl"
|
|
46
|
+
|
|
47
|
+
start_size_index = valid_header_sizes.find_index(start_size)
|
|
48
|
+
|
|
49
|
+
header_size = valid_header_sizes[start_size_index + header_level - 1] || "s"
|
|
50
|
+
|
|
51
|
+
id_attribute = @options[:with_toc_data] ? " id=\"#{text.parameterize}\"" : ""
|
|
52
|
+
<<~HTML
|
|
53
|
+
<h#{header_level}#{id_attribute} class="govuk-heading-#{header_size}">#{text}</h#{header_level}>
|
|
54
|
+
HTML
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def paragraph(text)
|
|
58
|
+
<<~HTML
|
|
59
|
+
<p class="govuk-body-m">#{text}</p>
|
|
60
|
+
HTML
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def list(contents, list_type)
|
|
64
|
+
case list_type
|
|
65
|
+
when :unordered
|
|
66
|
+
<<~HTML
|
|
67
|
+
<ul class="govuk-list govuk-list--bullet">
|
|
68
|
+
#{contents}
|
|
69
|
+
</ul>
|
|
70
|
+
HTML
|
|
71
|
+
when :ordered
|
|
72
|
+
<<~HTML
|
|
73
|
+
<ol class="govuk-list govuk-list--number">
|
|
74
|
+
#{contents}
|
|
75
|
+
</ol>
|
|
76
|
+
HTML
|
|
77
|
+
else
|
|
78
|
+
raise "Unexpected type #{list_type.inspect}"
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
def hrule
|
|
83
|
+
<<~HTML
|
|
84
|
+
<hr class="govuk-section-break govuk-section-break--xl govuk-section-break--visible">
|
|
85
|
+
HTML
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def preprocess(document)
|
|
89
|
+
Preprocessor
|
|
90
|
+
.new(document)
|
|
91
|
+
.inject_inset_text
|
|
92
|
+
.inject_details
|
|
93
|
+
.strip_front_matter(@strip_front_matter)
|
|
94
|
+
.output
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
end
|
|
@@ -1,99 +1,15 @@
|
|
|
1
1
|
module GovukMarkdown
|
|
2
2
|
class Renderer < ::Redcarpet::Render::HTML
|
|
3
|
-
|
|
4
|
-
@headings_start_with = govuk_options[:headings_start_with]
|
|
5
|
-
super options
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
def table(header, body)
|
|
9
|
-
<<~HTML
|
|
10
|
-
<table class='govuk-table'>
|
|
11
|
-
<thead class='govuk-table__head'>
|
|
12
|
-
#{header}
|
|
13
|
-
</thead>
|
|
14
|
-
<tbody class='govuk-table__body'>
|
|
15
|
-
#{body}
|
|
16
|
-
</tbody>
|
|
17
|
-
</table>
|
|
18
|
-
HTML
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def table_row(content)
|
|
22
|
-
<<~HTML
|
|
23
|
-
<tr class='govuk-table__row'>
|
|
24
|
-
#{content}
|
|
25
|
-
</tr>
|
|
26
|
-
HTML
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def table_cell(content, _alignment, header)
|
|
30
|
-
if header
|
|
31
|
-
<<~HTML
|
|
32
|
-
<th class='govuk-table__header'>
|
|
33
|
-
#{content}
|
|
34
|
-
</th>
|
|
35
|
-
HTML
|
|
36
|
-
else
|
|
37
|
-
<<~HTML
|
|
38
|
-
<td class='govuk-table__cell'>
|
|
39
|
-
#{content}
|
|
40
|
-
</td>
|
|
41
|
-
HTML
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
def header(text, header_level)
|
|
46
|
-
valid_header_sizes = %w[xl l m s].freeze
|
|
47
|
-
|
|
48
|
-
start_size = valid_header_sizes.include?(@headings_start_with) ? @headings_start_with : "xl"
|
|
3
|
+
autoload :Mixin, "govuk_markdown/renderer/mixin"
|
|
49
4
|
|
|
50
|
-
|
|
5
|
+
include ::Redcarpet::Render::SmartyPants
|
|
6
|
+
include Mixin
|
|
51
7
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
<<~HTML
|
|
56
|
-
<h#{header_level}#{id_attribute} class="govuk-heading-#{header_size}">#{text}</h#{header_level}>
|
|
57
|
-
HTML
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
def paragraph(text)
|
|
61
|
-
<<~HTML
|
|
62
|
-
<p class="govuk-body-m">#{text}</p>
|
|
63
|
-
HTML
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
def list(contents, list_type)
|
|
67
|
-
case list_type
|
|
68
|
-
when :unordered
|
|
69
|
-
<<~HTML
|
|
70
|
-
<ul class="govuk-list govuk-list--bullet">
|
|
71
|
-
#{contents}
|
|
72
|
-
</ul>
|
|
73
|
-
HTML
|
|
74
|
-
when :ordered
|
|
75
|
-
<<~HTML
|
|
76
|
-
<ol class="govuk-list govuk-list--number">
|
|
77
|
-
#{contents}
|
|
78
|
-
</ol>
|
|
79
|
-
HTML
|
|
80
|
-
else
|
|
81
|
-
raise "Unexpected type #{list_type.inspect}"
|
|
82
|
-
end
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
def hrule
|
|
86
|
-
<<~HTML
|
|
87
|
-
<hr class="govuk-section-break govuk-section-break--xl govuk-section-break--visible">
|
|
88
|
-
HTML
|
|
89
|
-
end
|
|
8
|
+
def initialize(govuk_options, options = {})
|
|
9
|
+
@headings_start_with = govuk_options[:headings_start_with]
|
|
10
|
+
@strip_front_matter = govuk_options[:strip_front_matter]
|
|
90
11
|
|
|
91
|
-
|
|
92
|
-
Preprocessor
|
|
93
|
-
.new(document)
|
|
94
|
-
.inject_inset_text
|
|
95
|
-
.inject_details
|
|
96
|
-
.output
|
|
12
|
+
super options
|
|
97
13
|
end
|
|
98
14
|
end
|
|
99
15
|
end
|
data/lib/govuk_markdown.rb
CHANGED
|
@@ -4,10 +4,11 @@ require "redcarpet"
|
|
|
4
4
|
require_relative "./govuk_markdown/version"
|
|
5
5
|
require_relative "./govuk_markdown/preprocessor"
|
|
6
6
|
require_relative "./govuk_markdown/renderer"
|
|
7
|
+
require_relative "./govuk_markdown/renderer/mixin"
|
|
7
8
|
|
|
8
9
|
module GovukMarkdown
|
|
9
10
|
def self.render(markdown, govuk_options = {})
|
|
10
|
-
renderer = GovukMarkdown::Renderer.new(govuk_options, { with_toc_data: true, link_attributes: { class: "govuk-link" } })
|
|
11
|
+
renderer = GovukMarkdown::Renderer.new(govuk_options, { with_toc_data: true, strip_front_matter: true, link_attributes: { class: "govuk-link" } })
|
|
11
12
|
Redcarpet::Markdown.new(renderer, tables: true, no_intra_emphasis: true).render(markdown).strip
|
|
12
13
|
end
|
|
13
14
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: govuk_markdown
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.0.
|
|
4
|
+
version: 2.0.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Tijmen Brommet
|
|
8
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2026-03-26 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activesupport
|
|
@@ -123,6 +123,7 @@ files:
|
|
|
123
123
|
- lib/govuk_markdown.rb
|
|
124
124
|
- lib/govuk_markdown/preprocessor.rb
|
|
125
125
|
- lib/govuk_markdown/renderer.rb
|
|
126
|
+
- lib/govuk_markdown/renderer/mixin.rb
|
|
126
127
|
- lib/govuk_markdown/version.rb
|
|
127
128
|
homepage: https://github.com/DFE-Digital/govuk_markdown
|
|
128
129
|
licenses: []
|
|
@@ -130,7 +131,7 @@ metadata:
|
|
|
130
131
|
homepage_uri: https://github.com/DFE-Digital/govuk_markdown
|
|
131
132
|
source_code_uri: https://github.com/DFE-Digital/govuk_markdown
|
|
132
133
|
changelog_uri: https://github.com/DFE-Digital/govuk_markdown
|
|
133
|
-
post_install_message:
|
|
134
|
+
post_install_message:
|
|
134
135
|
rdoc_options: []
|
|
135
136
|
require_paths:
|
|
136
137
|
- lib
|
|
@@ -146,7 +147,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
146
147
|
version: '0'
|
|
147
148
|
requirements: []
|
|
148
149
|
rubygems_version: 3.3.26
|
|
149
|
-
signing_key:
|
|
150
|
+
signing_key:
|
|
150
151
|
specification_version: 4
|
|
151
152
|
summary: Convert Markdown into GOV.UK styled HTML
|
|
152
153
|
test_files: []
|