html-pipeline-nico_link 0.0.1 → 0.0.2

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
  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