govspeak 6.1.0 → 6.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ec0c2e0694235f631985feeea77f20f07f8ce6ccaf55a8317a83b42583a6bcd2
4
- data.tar.gz: f98e90a503d00b4dd7c92c9b4dd9e1ff4e3a14494787a344f3722cd788515294
3
+ metadata.gz: b48fa791c90052e6ee6f2c235d3baba095c5de501f32b7e2748f05396a799899
4
+ data.tar.gz: c5e325373b8c6d20e2d59db3b38b5345ccce22a83edba93a9ec41ba03156e1cb
5
5
  SHA512:
6
- metadata.gz: b45e92bd8d25ef8a0674de0aba0ac4785589a3af588bf07893b567e09792b13deb15101ba85aef05c45b4429982add8ff52669abfa8b273a9ce29d51591c908b
7
- data.tar.gz: b193767c7dd265bf61ac851cdc2b0caafd249f63057f5b2008e9dea991ae8d79166fa86169305cf099d3a3ddf1fbe0f1c256f02216d27ae95d2ad2f7a2f17d1e
6
+ metadata.gz: 3ddd06fa6841ce2efcbfbf660ae09eeff3114b6f4e5de067ed7b09457f6be14e29caa5803b281e24dad159e7c2a49594ef9e98a7d68f54e01930a4a31932ce32
7
+ data.tar.gz: e4811322275d4f221e198bf8112040340e922d3713ab82bac32395ad386243259e4f4fca1973cb050af9df12e4c1b10b8c17a62febb7f06c2ddbbbacc857d16d
@@ -1,3 +1,7 @@
1
+ ## 6.1.1
2
+
3
+ * Fix wrapping `AttachmentLink:attachment-id` in a paragraph when used inline
4
+
1
5
  ## 6.1.0
2
6
 
3
7
  * Remove `[embed:attachments:content-id]` this isn't used by any apps and has never worked
@@ -3,7 +3,7 @@ require 'active_support/core_ext/array'
3
3
  require 'erb'
4
4
  require 'htmlentities'
5
5
  require 'kramdown'
6
- require 'kramdown/parser/kramdown_with_automatic_external_links'
6
+ require 'kramdown/parser/govuk'
7
7
  require 'rinku'
8
8
  require 'govuk_publishing_components'
9
9
  require 'govspeak/header_extractor'
@@ -21,14 +21,13 @@ require 'govspeak/presenters/h_card_presenter'
21
21
  require 'govspeak/presenters/image_presenter'
22
22
  require 'govspeak/presenters/attachment_image_presenter'
23
23
 
24
-
25
24
  module Govspeak
26
25
  def self.root
27
26
  File.expand_path('..', File.dirname(__FILE__))
28
27
  end
29
28
 
30
29
  class Document
31
- Parser = Kramdown::Parser::KramdownWithAutomaticExternalLinks
30
+ Parser = Kramdown::Parser::Govuk
32
31
  PARSER_CLASS_NAME = Parser.name.split("::").last
33
32
  UUID_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.freeze
34
33
  NEW_PARAGRAPH_LOOKBEHIND = %q{(?<=\A|\n\n|\r\n\r\n)}.freeze
@@ -354,6 +353,8 @@ module Govspeak
354
353
  # Content Publisher and should be considered experimental as it is likely
355
354
  # to be iterated in the short term.
356
355
  extension('Attachment', /#{NEW_PARAGRAPH_LOOKBEHIND}\[Attachment:\s*(.*?)\s*\]/) do |attachment_id|
356
+ next "" if attachments.none? { |a| a[:id] == attachment_id }
357
+
357
358
  %{<govspeak-embed-attachment id="#{attachment_id}"></govspeak-embed-attachment>}
358
359
  end
359
360
 
@@ -361,6 +362,8 @@ module Govspeak
361
362
  # syntax is being used by Content Publisher and should be considered
362
363
  # experimental
363
364
  extension('AttachmentLink', /\[AttachmentLink:\s*(.*?)\s*\]/) do |attachment_id|
365
+ next "" if attachments.none? { |a| a[:id] == attachment_id }
366
+
364
367
  %{<govspeak-embed-attachment-link id="#{attachment_id}"></govspeak-embed-attachment-link>}
365
368
  end
366
369
 
@@ -1,3 +1,3 @@
1
1
  module Govspeak
2
- VERSION = "6.1.0".freeze
2
+ VERSION = "6.1.1".freeze
3
3
  end
@@ -20,7 +20,9 @@ module Kramdown
20
20
  end
21
21
 
22
22
  module Parser
23
- class KramdownWithAutomaticExternalLinks < Kramdown::Parser::Kramdown
23
+ class Govuk < Kramdown::Parser::Kramdown
24
+ CUSTOM_INLINE_ELEMENTS = %w(govspeak-embed-attachment-link).freeze
25
+
24
26
  def initialize(source, options)
25
27
  @document_domains = options[:document_domains] || %w(www.gov.uk)
26
28
  super
@@ -41,6 +43,12 @@ module Kramdown
41
43
  end
42
44
  super
43
45
  end
46
+
47
+ def parse_block_html
48
+ return false if CUSTOM_INLINE_ELEMENTS.include?(@src[1].downcase)
49
+
50
+ super
51
+ end
44
52
  end
45
53
  end
46
54
  end
@@ -22,4 +22,19 @@ class GovspeakAttachmentLinkTest < Minitest::Test
22
22
  assert_match(/<span class="gem-c-attachment-link">/, rendered)
23
23
  assert_match(%r{href="http://example.com/attachment.pdf"}, rendered)
24
24
  end
25
+
26
+ test "renders an attachment link inside a paragraph" do
27
+ attachment = {
28
+ id: "attachment.pdf",
29
+ url: "http://example.com/attachment.pdf",
30
+ title: "Attachment Title",
31
+ }
32
+
33
+ rendered = render_govspeak("[AttachmentLink:attachment.pdf] test", [attachment])
34
+ root = Nokogiri::HTML.fragment(rendered).css(":root").first
35
+
36
+ assert(root.name, "p")
37
+ assert(root.css("p").size, 0)
38
+ assert_match(/Attachment Title\s*test/, root.text)
39
+ end
25
40
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: govspeak
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.1.0
4
+ version: 6.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - GOV.UK Dev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-05-20 00:00:00.000000000 Z
11
+ date: 2019-05-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionview
@@ -260,7 +260,7 @@ files:
260
260
  - lib/govspeak/structured_header_extractor.rb
261
261
  - lib/govspeak/template_renderer.rb
262
262
  - lib/govspeak/version.rb
263
- - lib/kramdown/parser/kramdown_with_automatic_external_links.rb
263
+ - lib/kramdown/parser/govuk.rb
264
264
  - lib/templates/contact.html.erb
265
265
  - locales/ar.yml
266
266
  - locales/be.yml
@@ -344,22 +344,22 @@ signing_key:
344
344
  specification_version: 4
345
345
  summary: Markup language for single domain
346
346
  test_files:
347
+ - test/govspeak_attachments_inline_test.rb
348
+ - test/govspeak_attachment_test.rb
347
349
  - test/govspeak_attachment_link_test.rb
350
+ - test/govspeak_images_test.rb
351
+ - test/govspeak_link_test.rb
352
+ - test/govspeak_images_bang_test.rb
353
+ - test/govspeak_link_extractor_test.rb
354
+ - test/govspeak_contacts_test.rb
348
355
  - test/test_helper.rb
349
- - test/govspeak_button_test.rb
350
356
  - test/govspeak_test.rb
351
- - test/html_validator_test.rb
352
- - test/govspeak_attachment_test.rb
353
- - test/govspeak_contacts_test.rb
354
- - test/govspeak_test_helper.rb
355
- - test/blockquote_extra_quote_remover_test.rb
356
357
  - test/govspeak_attachments_image_test.rb
357
- - test/html_sanitizer_test.rb
358
- - test/govspeak_link_test.rb
359
- - test/govspeak_extract_contact_content_ids_test.rb
358
+ - test/html_validator_test.rb
360
359
  - test/govspeak_structured_headers_test.rb
361
- - test/govspeak_images_test.rb
360
+ - test/govspeak_extract_contact_content_ids_test.rb
361
+ - test/blockquote_extra_quote_remover_test.rb
362
362
  - test/presenters/h_card_presenter_test.rb
363
- - test/govspeak_images_bang_test.rb
364
- - test/govspeak_link_extractor_test.rb
365
- - test/govspeak_attachments_inline_test.rb
363
+ - test/govspeak_button_test.rb
364
+ - test/govspeak_test_helper.rb
365
+ - test/html_sanitizer_test.rb