devcenter-parser 2.2.6 → 2.2.8

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
2
  SHA256:
3
- metadata.gz: 177652c3cda82510b487a9319f2a87c1aeca16b697e56de5cc8690f92d141897
4
- data.tar.gz: ee6bf49ffb53ad0094092c67179607fef3baecb53c49172d1f63c57a09770670
3
+ metadata.gz: dd5edad9607dc8de72a80982f035a865ab6f04c09908f772d72c55d01de2ac6e
4
+ data.tar.gz: f64c21cc67a7d1679f3af2419ccab6cd641bb3a249c72b72ceabff19327b497b
5
5
  SHA512:
6
- metadata.gz: d7ce23a79c6e9acf16eee9e969b8ded4c58f4e489ca52415b87227eb8c97ac8b93756fbcfa5a5ab49c0f8187da1efab76feb6719c7d500e7567cdeae2dc50375
7
- data.tar.gz: be81f08407afab73eac94c402b0b59223cc7e9439696131651d9c8aaaead10a7a2228ff9d6ad27943cbf44ed6551d54d5628182e3127f0a436598d9452fd6b17
6
+ metadata.gz: 3c3071a154a46f5605436a073e2109cec8a99f4c2776292f79e43551dda3956e7e6aa633c1f80dd51f883c1a098084e04e2b2c37cdb69f39cbcdf66bfaaa4feb
7
+ data.tar.gz: da887be8d774e63819a817492eb00adf5e43d835767ee747d06dded34cb24490404c359c2079d54687236537aa41144b9f4b6d13324ee2be013e80f17e2f4222
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- devcenter-parser (2.2.5)
4
+ devcenter-parser (2.2.8)
5
5
  nokogiri (>= 1.7.1)
6
6
  redcarpet (= 3.3.4)
7
7
  sanitize (~> 4.6.3)
@@ -9,11 +9,11 @@ PATH
9
9
  GEM
10
10
  remote: http://rubygems.org/
11
11
  specs:
12
- crass (1.0.4)
13
- mini_portile2 (2.3.0)
12
+ crass (1.0.6)
13
+ mini_portile2 (2.4.0)
14
14
  minitest (5.10.1)
15
- nokogiri (1.8.5)
16
- mini_portile2 (~> 2.3.0)
15
+ nokogiri (1.10.9)
16
+ mini_portile2 (~> 2.4.0)
17
17
  nokogumbo (1.5.0)
18
18
  nokogiri
19
19
  rake (12.0.0)
@@ -32,4 +32,4 @@ DEPENDENCIES
32
32
  rake
33
33
 
34
34
  BUNDLED WITH
35
- 1.16.4
35
+ 1.17.2
@@ -10,14 +10,14 @@ module DevcenterParser
10
10
  class InvalidMarkdownError < Exception; end
11
11
  class InvalidRawHTMLError < Exception; end
12
12
 
13
- def self.to_html(markdown)
14
- sanitize to_unsanitized_html(markdown)
13
+ def self.to_html(markdown, options = {})
14
+ sanitize to_unsanitized_html(markdown, options)
15
15
  end
16
16
 
17
- def self.to_unsanitized_html(markdown)
17
+ def self.to_unsanitized_html(markdown, options = {})
18
18
  markdown = normalize_markdown(markdown)
19
19
  doc = GitHubParser.parse(markdown)
20
- doc_to_html(doc)
20
+ doc_to_html(doc, options)
21
21
  rescue InvalidRawHTMLError => e
22
22
  raise InvalidMarkdownError, e.message
23
23
  end
@@ -28,9 +28,9 @@ module DevcenterParser
28
28
 
29
29
  private
30
30
 
31
- def self.doc_to_html(doc)
31
+ def self.doc_to_html(doc, options = {})
32
32
  HeaderIdGenerator.apply!(doc)
33
- convert_to_article_links_all_relative_links_with_missing_initial_slashes(doc)
33
+ convert_to_article_links_all_relative_links_with_missing_initial_slashes(doc, options)
34
34
  html = doc.to_html(:encoding => 'utf-8')
35
35
  verify_raw_html(html)
36
36
  html
@@ -92,14 +92,15 @@ module DevcenterParser
92
92
  @@sanitize_config = config.merge({remove_contents: true, allow_comments: true})
93
93
  end
94
94
 
95
- def self.convert_to_article_links_all_relative_links_with_missing_initial_slashes(doc)
95
+ def self.convert_to_article_links_all_relative_links_with_missing_initial_slashes(doc, options = {})
96
+ link_prefix = options[:link_prefix] || '/articles'
96
97
  doc.css('a').each do |node|
97
98
  next if node['href'].nil? || node['href'] =~ /\Ahttp|\A\/|\Amailto\:|\A#/
98
99
 
99
100
  if node['href'].start_with? 'categories/'
100
101
  node['href'] = "/#{node['href']}"
101
102
  else
102
- node['href'] = "/articles/#{node['href']}".gsub('/articles/articles/', '/articles/')
103
+ node['href'] = "#{link_prefix}/#{node['href']}".gsub('/articles/articles/', '/articles/')
103
104
  end
104
105
  end
105
106
  end
@@ -1,3 +1,3 @@
1
1
  module DevcenterParser
2
- VERSION = '2.2.6'.freeze
2
+ VERSION = '2.2.8'.freeze
3
3
  end
@@ -361,6 +361,14 @@ HTML
361
361
  assert_parsing_result md, html
362
362
  end
363
363
 
364
+ it 'adds a link prefix from options for relative dev center links' do
365
+ md = '[link](foo)'
366
+ expected = '<p><a href="/ja/articles/foo">link</a></p>'
367
+
368
+ result = DevcenterParser.to_html(md, { link_prefix: '/ja/articles' })
369
+ assert_equal expected.strip, result.strip, "Failed when parsing\n#{md}\n.\n\nExpected:\n#{expected}\n\nActual result:\n#{result}\n\n"
370
+ end
371
+
364
372
  it 'does not alter relative links with initial slashes nor absolute links nor anchor links to the same doc' do
365
373
  ['http://foo.com', 'https://foo.com', '/foo', '/foo/bar', '/foo#bar', '#foo', '/123', 'mailto:foo@foobar.com'].each do |href|
366
374
  md = "[link](#{href})"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: devcenter-parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.6
4
+ version: 2.2.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Heroku
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-12-11 00:00:00.000000000 Z
11
+ date: 2020-06-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -118,8 +118,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
118
118
  - !ruby/object:Gem::Version
119
119
  version: '0'
120
120
  requirements: []
121
- rubyforge_project:
122
- rubygems_version: 2.7.6
121
+ rubygems_version: 3.0.3
123
122
  signing_key:
124
123
  specification_version: 4
125
124
  summary: Parser for Heroku Dev Center's content