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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 04e0653c66e2b3caa406acdfd07269a638ad834fd0791858f9d71dfa3eb43bbd
4
- data.tar.gz: 1b1350d46fc9937987c5077a9130dc0602852afd72f8c57433cb746957290351
3
+ metadata.gz: 12e676d3536a62d66092d85e357f8c3e7315c99dfba63908658b7258bc2c2429
4
+ data.tar.gz: 8d687183bc7ea570bebaed9ac81616fa11e1d3f8c5e32ef3b9b6c6cf2cac68c7
5
5
  SHA512:
6
- metadata.gz: 0cb66e8911fc9c18b9a7b05e2737400acc32a6fc444ceccbc0cf1da1e48515f299d793d55be2ec8310fb8b9be759f05fa2abe90b2b7e98ab82fa7d2f1514550c
7
- data.tar.gz: 707d0d37111906368efd76b9f9086a7e026ee502ce1e0e31a3651d3b6b952507dad4b262946f4feea980ded9a2dfd22008580f5c61822fee054a9cc2ead7b5ba
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
- def initialize(govuk_options, options = {})
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
- start_size_index = valid_header_sizes.find_index(start_size)
5
+ include ::Redcarpet::Render::SmartyPants
6
+ include Mixin
51
7
 
52
- header_size = valid_header_sizes[start_size_index + header_level - 1] || "s"
53
-
54
- id_attribute = @options[:with_toc_data] ? " id=\"#{text.parameterize}\"" : ""
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
- def preprocess(document)
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
@@ -1,3 +1,3 @@
1
1
  module GovukMarkdown
2
- VERSION = "2.0.2".freeze
2
+ VERSION = "2.0.4".freeze
3
3
  end
@@ -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.2
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: 2024-04-18 00:00:00.000000000 Z
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: []