wcc-contentful-app 1.0.5 → 1.0.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 5c30819cecaa3ca7080d5d0b5e12e04cfd5dfc50
4
- data.tar.gz: 725e676d7d4753ff153e5fafd90c1329bc34dd42
2
+ SHA256:
3
+ metadata.gz: 222d97e2c5e468eb06480abd758461d38c47cff94d3ae3b66546ca4a2dc28270
4
+ data.tar.gz: c29432ed47e73ae1be706e1aef01ccc38b74d812ce354d39fc5c8d55d34f79b0
5
5
  SHA512:
6
- metadata.gz: efcc8b06b28c22b22e84f1e43a61d9512a0c437d5ddbd7098458d3f915d1c60bc491d82e58bd5b3f4140594123c76e37cedb0d71acc9352a2131721a2ae6373c
7
- data.tar.gz: 6730a28919d3dde28d1bb8865faa02621327c88413ddd9b352ae8608d549e7a0ce0c666ea629673ace9f6a685674808e7be47efac75145d601112b179903ae22
6
+ metadata.gz: 37edcae2cb5a0bb83ec1cce4f19f42965e3a95c6f47899408dfd53883641bff88c6736a3cd7fdfa0a5d6609c3f0d0824ee776dbad374a44b7e31c3c25dbafb88
7
+ data.tar.gz: fca724980ba8a2594f14b51df9f86765350520fda4baca57719df8a013d3d24fc9e1297dc4c086378e720002cc5d3c46ed37874068d3a045eec97a8c51223c12
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'redcarpet'
4
+ require '../wcc-contentful-app/lib/wcc/contentful/app/markdown_renderer'
4
5
 
5
6
  module WCC::Contentful::App::SectionHelper
6
7
  extend self
@@ -35,87 +36,13 @@ module WCC::Contentful::App::SectionHelper
35
36
  end
36
37
 
37
38
  def markdown(text)
38
- raise ArgumentError, 'markdown method requires text' unless text
39
-
40
- markdown_links = links_within_markdown(text)
41
- links_with_classes, raw_classes = gather_links_with_classes_data(markdown_links)
42
-
43
- options = {
44
- filter_html: true,
45
- hard_wrap: true,
46
- link_attributes: { target: '_blank' },
47
- space_after_headers: true,
48
- fenced_code_blocks: true,
49
- links_with_classes: links_with_classes
50
- }
51
-
52
- extensions = {
53
- autolink: true,
54
- superscript: true,
55
- disable_indented_code_blocks: true,
56
- tables: true
57
- }
58
-
59
- renderer = ::WCC::Contentful::App::CustomMarkdownRender.new(options)
60
- markdown = ::Redcarpet::Markdown.new(renderer, extensions)
61
- html_to_render = markdown.render(remove_markdown_href_class_syntax(raw_classes, text))
39
+ html_to_render = WCC::Contentful::App::MarkdownRenderer.new.markdown(text)
62
40
 
63
41
  content_tag(:div,
64
42
  CGI.unescapeHTML(html_to_render).html_safe,
65
43
  class: 'formatted-content')
66
44
  end
67
45
 
68
- def links_within_markdown(text)
69
- text.scan(/(\[(.*?)\]\((.*?)\)(\{\:.*?\})?)/)
70
- end
71
-
72
- def gather_links_with_classes_data(markdown_links)
73
- links_with_classes_arr = []
74
- raw_classes_arr = []
75
- markdown_links.each do |markdown_link_arr|
76
- next unless markdown_link_arr.last.present?
77
-
78
- raw_class = markdown_link_arr[3]
79
- url, title = url_and_title(markdown_link_arr[2])
80
- content = markdown_link_arr[1]
81
- classes = capture_individual_classes(raw_class)
82
- link_class = combine_individual_classes_to_one_string(classes)
83
-
84
- raw_classes_arr << raw_class
85
- links_with_classes_arr << [url, title, content, link_class]
86
- end
87
-
88
- [links_with_classes_arr, raw_classes_arr]
89
- end
90
-
91
- def remove_markdown_href_class_syntax(raw_classes, text)
92
- text_without_markdown_class_syntax = text.dup
93
- raw_classes.each { |klass| text_without_markdown_class_syntax.slice!(klass) }
94
- text_without_markdown_class_syntax
95
- end
96
-
97
- def url_and_title(markdown_link_and_title)
98
- match =
99
- markdown_link_and_title.scan(
100
- /(\s|^)(https?:\/\/\S*|^\/\S*\/*\S*|^#\S*|mailto:\S*)(?=\s|$)|(\".*?\")/
101
- )
102
- url = match[0][1]
103
- title = match[1] ? match[1][2] : nil
104
- [url, title]
105
- end
106
-
107
- def capture_individual_classes(classes)
108
- classes.scan(/\.[^\.\}\s]*/)
109
- end
110
-
111
- def combine_individual_classes_to_one_string(classes)
112
- class_string = ''
113
- classes.each do |klass|
114
- class_string += klass.tr('.', '') + ' '
115
- end
116
- class_string
117
- end
118
-
119
46
  def safe_line_break(text, options = {})
120
47
  return unless text.present?
121
48
 
@@ -0,0 +1,85 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative './custom_markdown_render'
4
+
5
+ class WCC::Contentful::App::MarkdownRenderer
6
+ def markdown(text)
7
+ raise ArgumentError, 'markdown method requires text' unless text
8
+
9
+ markdown_links = links_within_markdown(text)
10
+ links_with_classes, raw_classes = gather_links_with_classes_data(markdown_links)
11
+
12
+ options = {
13
+ filter_html: true,
14
+ hard_wrap: true,
15
+ link_attributes: { target: '_blank' },
16
+ space_after_headers: true,
17
+ fenced_code_blocks: true,
18
+ links_with_classes: links_with_classes
19
+ }
20
+
21
+ extensions = {
22
+ autolink: true,
23
+ superscript: true,
24
+ disable_indented_code_blocks: true,
25
+ tables: true
26
+ }
27
+
28
+ renderer = ::WCC::Contentful::App::CustomMarkdownRender.new(options)
29
+ markdown = ::Redcarpet::Markdown.new(renderer, extensions)
30
+ markdown.render(remove_markdown_href_class_syntax(raw_classes, text))
31
+ end
32
+
33
+ private
34
+
35
+ def remove_markdown_href_class_syntax(raw_classes, text)
36
+ text_without_markdown_class_syntax = text.dup
37
+ raw_classes.each { |klass| text_without_markdown_class_syntax.slice!(klass) }
38
+ text_without_markdown_class_syntax
39
+ end
40
+
41
+ def links_within_markdown(text)
42
+ text.scan(/(\[(.*?)\]\((.*?)\)(\{\:.*?\})?)/)
43
+ end
44
+
45
+ def gather_links_with_classes_data(markdown_links)
46
+ links_with_classes_arr = []
47
+ raw_classes_arr = []
48
+ markdown_links.each do |markdown_link_arr|
49
+ next unless markdown_link_arr.last.present?
50
+
51
+ raw_class = markdown_link_arr[3]
52
+ url, title = url_and_title(markdown_link_arr[2])
53
+ content = markdown_link_arr[1]
54
+ classes = capture_individual_classes(raw_class)
55
+ link_class = combine_individual_classes_to_one_string(classes)
56
+
57
+ raw_classes_arr << raw_class
58
+ links_with_classes_arr << [url, title, content, link_class]
59
+ end
60
+
61
+ [links_with_classes_arr, raw_classes_arr]
62
+ end
63
+
64
+ def url_and_title(markdown_link_and_title)
65
+ match =
66
+ markdown_link_and_title.scan(
67
+ /(\s|^)(https?:\/\/\S*|^\/\S*\/*\S*|^#\S*|mailto:\S*)(?=\s|$)|(\".*?\")/
68
+ )
69
+ url = match[0][1]
70
+ title = match[1] ? match[1][2] : nil
71
+ [url, title]
72
+ end
73
+
74
+ def capture_individual_classes(classes)
75
+ classes.scan(/\.[^\.\}\s]*/)
76
+ end
77
+
78
+ def combine_individual_classes_to_one_string(classes)
79
+ class_string = ''
80
+ classes.each do |klass|
81
+ class_string += klass.tr('.', '') + ' '
82
+ end
83
+ class_string
84
+ end
85
+ end
@@ -3,7 +3,7 @@
3
3
  module WCC
4
4
  module Contentful
5
5
  module App
6
- VERSION = '1.0.5'
6
+ VERSION = '1.0.6'
7
7
  end
8
8
  end
9
9
  end
@@ -2,9 +2,9 @@
2
2
 
3
3
  require 'wcc/contentful/rails'
4
4
 
5
- require_relative './app/rails'
6
5
  require_relative './app/exceptions'
7
6
  require_relative './app/configuration'
7
+ require_relative './app/markdown_renderer'
8
8
 
9
9
  module WCC::Contentful::App
10
10
  class << self
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wcc-contentful-app
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.5
4
+ version: 1.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Watermark Dev
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-11-17 00:00:00.000000000 Z
11
+ date: 2021-12-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capybara
@@ -352,14 +352,14 @@ dependencies:
352
352
  requirements:
353
353
  - - "~>"
354
354
  - !ruby/object:Gem::Version
355
- version: 1.0.5
355
+ version: 1.0.6
356
356
  type: :runtime
357
357
  prerelease: false
358
358
  version_requirements: !ruby/object:Gem::Requirement
359
359
  requirements:
360
360
  - - "~>"
361
361
  - !ruby/object:Gem::Version
362
- version: 1.0.5
362
+ version: 1.0.6
363
363
  description: Models, Controllers, and Views common to Watermark Church apps
364
364
  email:
365
365
  - dev@watermark.org
@@ -384,7 +384,6 @@ files:
384
384
  - app/mailers/wcc/contentful/app/contact_mailer.rb
385
385
  - app/models/concerns/wcc/contentful/app/preview_password.rb
386
386
  - app/models/wcc/contentful/app/contact_form_submission.rb
387
- - app/models/wcc/contentful/app/custom_markdown_render.rb
388
387
  - app/views/components/_faq_row.html.erb
389
388
  - app/views/components/_menu-item.html.erb
390
389
  - app/views/components/_other-menu-item.html.erb
@@ -440,8 +439,10 @@ files:
440
439
  - lib/generators/wcc/templates/wcc_contentful.rb
441
440
  - lib/wcc/contentful/app.rb
442
441
  - lib/wcc/contentful/app/configuration.rb
442
+ - lib/wcc/contentful/app/custom_markdown_render.rb
443
443
  - lib/wcc/contentful/app/engine.rb
444
444
  - lib/wcc/contentful/app/exceptions.rb
445
+ - lib/wcc/contentful/app/markdown_renderer.rb
445
446
  - lib/wcc/contentful/app/rails.rb
446
447
  - lib/wcc/contentful/app/version.rb
447
448
  - lib/wcc/contentful/model/dropdown_menu.rb
@@ -458,7 +459,7 @@ licenses:
458
459
  - MIT
459
460
  metadata:
460
461
  documentation_uri: https://watermarkchurch.github.io/wcc-contentful/1.0/wcc-contentful-app
461
- post_install_message:
462
+ post_install_message:
462
463
  rdoc_options: []
463
464
  require_paths:
464
465
  - lib
@@ -473,9 +474,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
473
474
  - !ruby/object:Gem::Version
474
475
  version: '0'
475
476
  requirements: []
476
- rubyforge_project:
477
- rubygems_version: 2.6.11
478
- signing_key:
477
+ rubyforge_project:
478
+ rubygems_version: 2.7.6.2
479
+ signing_key:
479
480
  specification_version: 4
480
481
  summary: "[![Gem Version](https://badge.fury.io/rb/wcc-contentful-app.svg)](https://rubygems.org/gems/wcc-contentful-app)
481
482
  [![Build Status](https://circleci.com/gh/watermarkchurch/wcc-contentful.svg?style=svg)](https://circleci.com/gh/watermarkchurch/wcc-contentful)