html-pipeline-nico_link 0.0.1 → 0.0.2

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
  SHA1:
3
- metadata.gz: e8182a5ba9e03d271c0cbfd783f337668d366b4c
4
- data.tar.gz: c76d6d4bce7e4b186edf786ab66387f6e6e3c6d3
3
+ metadata.gz: 6d6aacabfa73258fb316f0956d73ecb93fe32faf
4
+ data.tar.gz: ebd83dd3a62b68048b95f93965db64667a10a30f
5
5
  SHA512:
6
- metadata.gz: 31ec2eb5262be9a2cdbb794dff40f9ed2adc5c68cdedc45d3ad0114e18cc0921c98851d301590317e61cf82d7c2c55e6b28bba8359094948ac6eba0fc1605af6
7
- data.tar.gz: 0adfaf0834d41ccb7cef831e4674ff9aaf393f801223269545ce6de987cd0a177bb80d35b04f9c54c5b8fe445b07d9a1779168363e1a26b658e29d715638b864
6
+ metadata.gz: 1cc4850ae7eb876e625f2532cfe3c958e00c7678e56d17aef373be8e53aef0e77bde6cb1c9b9419cea1303e74b62f5b9e8d629184fd462937c3489a6a9983149
7
+ data.tar.gz: 017efd4507c40b71fed35a243b41a1e402c29e27bf7bd21ea4c3288ca375eec5378fb9ea1264dcbb2d97121167d1e6184c48008db1e94961ae4c4d9fd37ef248
@@ -1,4 +1,5 @@
1
1
  require 'html/pipeline'
2
+ require 'erb'
2
3
 
3
4
  module HTML
4
5
  class Pipeline
@@ -11,21 +12,22 @@ module HTML
11
12
  def call
12
13
  doc.search('text()').each do |node|
13
14
  content = node.to_html
14
- html = apply_filter(content)
15
+ has_prev_node = !!(node.previous_element)
16
+ html = apply_filter(content, has_prev_node)
15
17
  next if html == content
16
18
  node.replace(html)
17
19
  end
18
20
  doc
19
21
  end
20
22
 
21
- def apply_filter(content)
23
+ def apply_filter(content, has_prev_node = false)
22
24
  content = content.dup
23
25
  self.patterns.each do |pattern_set|
24
26
  content.gsub!(pattern_set[:pattern]) do
25
27
  space = $1
26
28
  text = $2
27
29
  url = pattern_set[:link].gsub('%s', text)
28
- "#{space}<a href=\"#{url}\">#{text}</a>"
30
+ "#{space.size > 0 ? space : (has_prev_node ? ' ' : '')}<a href=\"#{ERB::Util.html_escape(url)}\">#{ERB::Util.html_escape(text)}</a>"
29
31
  end
30
32
  end
31
33
  content
@@ -1,7 +1,7 @@
1
1
  module HTML
2
2
  class Pipeline
3
3
  module NicoLink
4
- VERSION = '0.0.1'
4
+ VERSION = '0.0.2'
5
5
  end
6
6
  end
7
7
  end
@@ -31,4 +31,9 @@ describe 'NicoLinkFilter' do
31
31
  let(:text) { '<b>sm</b>123' }
32
32
  it { expect(subject).to eq '<b>sm</b>123' }
33
33
  end
34
+
35
+ context '<b>hoge</b> im5678' do
36
+ let(:text) { '<b>hoge</b> im5678' }
37
+ it { expect(subject).to eq '<b>hoge</b> <a href="http://seiga.nicovideo.jp/seiga/im5678">im5678</a>' }
38
+ end
34
39
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: html-pipeline-nico_link
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ru/MuckRu