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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6d6aacabfa73258fb316f0956d73ecb93fe32faf
|
4
|
+
data.tar.gz: ebd83dd3a62b68048b95f93965db64667a10a30f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
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
|
@@ -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
|