parliament-utils 0.7.3 → 0.8.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 +4 -4
- data/lib/parliament/utils/config/initializers/mime_types.rb +0 -1
- data/lib/parliament/utils/config/initializers.rb +1 -1
- data/lib/parliament/utils/helpers/markdown_helper.rb +25 -0
- data/lib/parliament/utils/helpers/postcode_helper.rb +2 -2
- data/lib/parliament/utils/helpers.rb +2 -2
- data/lib/parliament/utils/services/markdown_converter.rb +52 -0
- data/lib/parliament/utils/services/markdown_scrubber.rb +18 -0
- data/lib/parliament/utils/services.rb +9 -0
- data/lib/parliament/utils/test_helpers.rb +2 -2
- data/lib/parliament/utils/version.rb +1 -1
- data/lib/parliament/utils.rb +1 -0
- data/parliament-utils.gemspec +4 -1
- metadata +51 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b173f819cf1d473df8cb3e8bdbe2f7baa1c07d77
|
4
|
+
data.tar.gz: 31fec4b9ad307c3da159a8a32067f5448ceb259a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7fa9ac42aa1f5e817e4136637030c231b902d723a1bb168fd42993391c50283d3ca63d8fdc8dd252a56d87e33a6edf106c655e43a60d6c45fc87f8a7e129d1b2
|
7
|
+
data.tar.gz: e7ca04377b71a343146b21324f94c7ca50b02eb54727fb99d95cbbc2d814d2d263ee2e3ec880f6ef00d28942a62d445365155ca1fe5469a637ccb6e559c158f6
|
@@ -12,5 +12,5 @@ require 'parliament/utils/config/initializers/filter_parameter_logging'
|
|
12
12
|
require 'parliament/utils/config/initializers/inflections'
|
13
13
|
require 'parliament/utils/config/initializers/mime_types'
|
14
14
|
require 'parliament/utils/config/initializers/session_store'
|
15
|
-
require 'parliament/utils/config/initializers/timeout'
|
15
|
+
require 'parliament/utils/config/initializers/timeout' if defined?(Rack::Timeout)
|
16
16
|
require 'parliament/utils/config/initializers/wrap_parameters'
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require_relative '../services/markdown_converter'
|
2
|
+
require_relative '../services/markdown_scrubber'
|
3
|
+
require 'redcarpet'
|
4
|
+
|
5
|
+
module Parliament
|
6
|
+
module Utils
|
7
|
+
module Helpers
|
8
|
+
module MarkdownHelper
|
9
|
+
# Uses redcarpet gem to convert markdown into HTML, with chosen HTML extensions
|
10
|
+
# Uses custom Parliament::Utils::Services::ParliamentMarkdownRenderer to override default autolink behaviour of redcarpet gem
|
11
|
+
# Uses custom Parliament::Utils::Services::ParliamentMarkdownScrubber to allow additional HTML tags and attributes
|
12
|
+
#
|
13
|
+
# @return template [String] Template as HTML
|
14
|
+
def self.markdown(template)
|
15
|
+
parliament_renderer = Parliament::Utils::Services::ParliamentMarkdownRenderer
|
16
|
+
parliament_scrubber = Parliament::Utils::Services::ParliamentMarkdownScrubber.new
|
17
|
+
|
18
|
+
markdown = Redcarpet::Markdown.new(parliament_renderer, tables: true, autolink: true)
|
19
|
+
html = markdown.render(ActionController::Base.helpers.sanitize(template, scrubber: parliament_scrubber))
|
20
|
+
ActionController::Base.helpers.sanitize(html, scrubber: parliament_scrubber).html_safe
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
require 'i18n'
|
2
|
-
require 'parliament/utils/helpers/translation_helper'
|
2
|
+
require 'parliament/utils/helpers/translation_helper'
|
3
3
|
|
4
4
|
# attr [String] previous_path the path to redirect back to in the case of an error.
|
5
5
|
module Parliament
|
@@ -7,7 +7,7 @@ module Parliament
|
|
7
7
|
module Helpers
|
8
8
|
module PostcodeHelper
|
9
9
|
|
10
|
-
include Parliament::Utils::Helpers::TranslationHelper
|
10
|
+
include Parliament::Utils::Helpers::TranslationHelper
|
11
11
|
|
12
12
|
attr_accessor :previous_path
|
13
13
|
|
@@ -1,18 +1,18 @@
|
|
1
1
|
require_relative './helpers/application_helper'
|
2
|
+
require_relative './helpers/filter_helper'
|
2
3
|
require_relative './helpers/flag_helper'
|
3
4
|
require_relative './helpers/houses_helper'
|
5
|
+
require_relative './helpers/markdown_helper' if defined?(Rails)
|
4
6
|
require_relative './helpers/parliament_helper'
|
5
7
|
require_relative './helpers/postcode_helper'
|
6
8
|
require_relative './helpers/request_helper'
|
7
9
|
require_relative './helpers/v_card_helper'
|
8
|
-
require_relative './helpers/filter_helper'
|
9
10
|
|
10
11
|
require 'parliament/grom/decorator'
|
11
12
|
|
12
13
|
module Parliament
|
13
14
|
module Utils
|
14
15
|
module Helpers
|
15
|
-
|
16
16
|
end
|
17
17
|
end
|
18
18
|
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'uri'
|
2
|
+
require 'redcarpet'
|
3
|
+
|
4
|
+
module Parliament
|
5
|
+
module Utils
|
6
|
+
module Services
|
7
|
+
class ParliamentMarkdownRenderer < Redcarpet::Render::HTML
|
8
|
+
# Overrides default autolink behaviour of redcarpet gem for instances such as video embeds
|
9
|
+
#
|
10
|
+
# @param link [String] The link
|
11
|
+
# @param link_type [Symbol] The link type
|
12
|
+
# @return template [String] Original link text or HTML string replacement
|
13
|
+
#
|
14
|
+
def autolink(link, link_type)
|
15
|
+
if link_type == :url
|
16
|
+
return parliament_live_video_embed(link) if link.match(/parliamentlive.tv\/event\/index\/[a-z0-9-]{36}/i)
|
17
|
+
end
|
18
|
+
|
19
|
+
link # call super instead if we actually want autolinking
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
# Takes a parliamentlive.tv embed or video link and returns HTML for video embed
|
25
|
+
#
|
26
|
+
# @private
|
27
|
+
#
|
28
|
+
# @param link [String] The URL for a parliamentlive.tv embed or video
|
29
|
+
# @return template [String] The parliamentlive.tv video embed code
|
30
|
+
#
|
31
|
+
def parliament_live_video_embed(link)
|
32
|
+
uri = URI.parse(link)
|
33
|
+
|
34
|
+
# Generate video URL
|
35
|
+
video_url = 'https://videoplayback.parliamentlive.tv/Player/Index'.tap do |url|
|
36
|
+
# Add video ID
|
37
|
+
url << "/#{uri.path.split('/').last}?"
|
38
|
+
# Add original query if present, and not an empty string
|
39
|
+
url << "#{uri.query}&" if uri.query&.size
|
40
|
+
# Add player options
|
41
|
+
url << 'audioOnly=False&autoStart=False&statsEnabled=False'
|
42
|
+
end
|
43
|
+
|
44
|
+
# Return the video player
|
45
|
+
%(<div class="video-wrap">
|
46
|
+
<iframe src="#{video_url}" name="UKPPlayer" title="UK Parliament Player" seamless="seamless" frameborder="0" allowfullscreen style="width: 100%; height: 100%"></iframe>
|
47
|
+
</div>)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Parliament
|
2
|
+
module Utils
|
3
|
+
module Services
|
4
|
+
class ParliamentMarkdownScrubber < Rails::Html::PermitScrubber
|
5
|
+
# Overrides default sanitization allowing Parliament tags and/or attributes
|
6
|
+
def initialize
|
7
|
+
super
|
8
|
+
self.tags = %w(p div h1 h2 h3 h4 h5 h6 span a ol li ul strong em i itag strike del u sup sub blockquote cite table thead tbody tfoot tr th td iframe image pre code dl dt dd hr br)
|
9
|
+
self.attributes = %w(class href src name title allowfullscreen seamless frameborder style)
|
10
|
+
end
|
11
|
+
|
12
|
+
def skip_node?(node)
|
13
|
+
node.text?
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require_relative './test_helpers/rails_helper' if defined?(
|
1
|
+
require_relative './test_helpers/rails_helper' if defined?(Rails)
|
2
2
|
require_relative './test_helpers/rspec_helper'
|
3
3
|
require_relative './test_helpers/simplecov_helper'
|
4
4
|
require_relative './test_helpers/vcr_helper'
|
@@ -8,7 +8,7 @@ require_relative './test_helpers/bandiera_helper'
|
|
8
8
|
module Parliament
|
9
9
|
module Utils
|
10
10
|
module TestHelpers
|
11
|
-
include Parliament::Utils::TestHelpers::RailsHelper if defined?(
|
11
|
+
include Parliament::Utils::TestHelpers::RailsHelper if defined?(Rails)
|
12
12
|
include Parliament::Utils::TestHelpers::RSpecHelper
|
13
13
|
include Parliament::Utils::TestHelpers::SimpleCovHelper
|
14
14
|
include Parliament::Utils::TestHelpers::VCRHelper
|
data/lib/parliament/utils.rb
CHANGED
data/parliament-utils.gemspec
CHANGED
@@ -31,12 +31,15 @@ Gem::Specification.new do |spec|
|
|
31
31
|
spec.add_dependency 'bandiera-client'
|
32
32
|
spec.add_dependency 'pugin'
|
33
33
|
spec.add_dependency 'haml'
|
34
|
+
spec.add_dependency 'redcarpet', '~> 3.0'
|
34
35
|
|
35
36
|
spec.add_development_dependency 'parliament-ruby', '~> 0.10'
|
36
37
|
spec.add_development_dependency 'bundler', '~> 1.15'
|
37
38
|
spec.add_development_dependency 'rake', '~> 10.0'
|
38
|
-
spec.add_development_dependency '
|
39
|
+
spec.add_development_dependency 'rails', '~> 5.1'
|
40
|
+
spec.add_development_dependency 'rspec-rails', '~> 3.6'
|
39
41
|
spec.add_development_dependency 'vcr', '~> 3.0'
|
40
42
|
spec.add_development_dependency 'simplecov', '~> 0.12'
|
43
|
+
spec.add_development_dependency 'sqlite3', '~> 1.3'
|
41
44
|
spec.add_development_dependency 'webmock', '~> 2.3'
|
42
45
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: parliament-utils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rebecca Appleyard
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-04-
|
11
|
+
date: 2018-04-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: parliament-ruby
|
@@ -150,6 +150,20 @@ dependencies:
|
|
150
150
|
- - ">="
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: '0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: redcarpet
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - "~>"
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '3.0'
|
160
|
+
type: :runtime
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - "~>"
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '3.0'
|
153
167
|
- !ruby/object:Gem::Dependency
|
154
168
|
name: parliament-ruby
|
155
169
|
requirement: !ruby/object:Gem::Requirement
|
@@ -193,19 +207,33 @@ dependencies:
|
|
193
207
|
- !ruby/object:Gem::Version
|
194
208
|
version: '10.0'
|
195
209
|
- !ruby/object:Gem::Dependency
|
196
|
-
name:
|
210
|
+
name: rails
|
197
211
|
requirement: !ruby/object:Gem::Requirement
|
198
212
|
requirements:
|
199
213
|
- - "~>"
|
200
214
|
- !ruby/object:Gem::Version
|
201
|
-
version: '
|
215
|
+
version: '5.1'
|
202
216
|
type: :development
|
203
217
|
prerelease: false
|
204
218
|
version_requirements: !ruby/object:Gem::Requirement
|
205
219
|
requirements:
|
206
220
|
- - "~>"
|
207
221
|
- !ruby/object:Gem::Version
|
208
|
-
version: '
|
222
|
+
version: '5.1'
|
223
|
+
- !ruby/object:Gem::Dependency
|
224
|
+
name: rspec-rails
|
225
|
+
requirement: !ruby/object:Gem::Requirement
|
226
|
+
requirements:
|
227
|
+
- - "~>"
|
228
|
+
- !ruby/object:Gem::Version
|
229
|
+
version: '3.6'
|
230
|
+
type: :development
|
231
|
+
prerelease: false
|
232
|
+
version_requirements: !ruby/object:Gem::Requirement
|
233
|
+
requirements:
|
234
|
+
- - "~>"
|
235
|
+
- !ruby/object:Gem::Version
|
236
|
+
version: '3.6'
|
209
237
|
- !ruby/object:Gem::Dependency
|
210
238
|
name: vcr
|
211
239
|
requirement: !ruby/object:Gem::Requirement
|
@@ -234,6 +262,20 @@ dependencies:
|
|
234
262
|
- - "~>"
|
235
263
|
- !ruby/object:Gem::Version
|
236
264
|
version: '0.12'
|
265
|
+
- !ruby/object:Gem::Dependency
|
266
|
+
name: sqlite3
|
267
|
+
requirement: !ruby/object:Gem::Requirement
|
268
|
+
requirements:
|
269
|
+
- - "~>"
|
270
|
+
- !ruby/object:Gem::Version
|
271
|
+
version: '1.3'
|
272
|
+
type: :development
|
273
|
+
prerelease: false
|
274
|
+
version_requirements: !ruby/object:Gem::Requirement
|
275
|
+
requirements:
|
276
|
+
- - "~>"
|
277
|
+
- !ruby/object:Gem::Version
|
278
|
+
version: '1.3'
|
237
279
|
- !ruby/object:Gem::Dependency
|
238
280
|
name: webmock
|
239
281
|
requirement: !ruby/object:Gem::Requirement
|
@@ -293,12 +335,16 @@ files:
|
|
293
335
|
- lib/parliament/utils/helpers/filter_helper.rb
|
294
336
|
- lib/parliament/utils/helpers/flag_helper.rb
|
295
337
|
- lib/parliament/utils/helpers/houses_helper.rb
|
338
|
+
- lib/parliament/utils/helpers/markdown_helper.rb
|
296
339
|
- lib/parliament/utils/helpers/parliament_helper.rb
|
297
340
|
- lib/parliament/utils/helpers/postcode_helper.rb
|
298
341
|
- lib/parliament/utils/helpers/request_helper.rb
|
299
342
|
- lib/parliament/utils/helpers/translation_helper.rb
|
300
343
|
- lib/parliament/utils/helpers/v_card_helper.rb
|
301
344
|
- lib/parliament/utils/railtie.rb
|
345
|
+
- lib/parliament/utils/services.rb
|
346
|
+
- lib/parliament/utils/services/markdown_converter.rb
|
347
|
+
- lib/parliament/utils/services/markdown_scrubber.rb
|
302
348
|
- lib/parliament/utils/test_helpers.rb
|
303
349
|
- lib/parliament/utils/test_helpers/bandiera_helper.rb
|
304
350
|
- lib/parliament/utils/test_helpers/rails_helper.rb
|