wovnrb 0.2.23 → 0.2.24

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: ea8678343beb5b165e98756cdae5701487ab3e4f
4
- data.tar.gz: bd2976576eb5e64c6cbc7f822ccab117f427765b
3
+ metadata.gz: 0a7e70b6cdf98b2eefab0f135987d9930f915955
4
+ data.tar.gz: abbfc8770a7600d87c1ff514ba9fbfc6c4ce5d78
5
5
  SHA512:
6
- metadata.gz: 372502decc7bb4e4e903f297b34b2d7161fa793f8c6bc075a3176d95d86a4642160f3afb63744ab8c7ebfe0d1380ba7b70d2bd56a799d1a06811e5d826f239a8
7
- data.tar.gz: 283eacde612587dedc974226aa35c8320330ecd3a806d5d6718f0e005672c511bd1f3eaa4a7b12819c42a69aa8b69c9605556f377123108cc753107a6ecd10db
6
+ metadata.gz: e130de085fa3f0873242214df53b7e5798afda355edc300527467b05be107d5605642c264f6807017f2d37056ba2ee78c429ab5049e16f5b9e8bf890ea0c1baf
7
+ data.tar.gz: a4d0b9e0d39c5c19f8eb83c8c467d99bc6d1c502655c7cacd172049c9196324c626e20b3f1891443cc4f6cec5a5c3cb78227c3276ef17c4db24a9418843d8d2b
@@ -1,5 +1,12 @@
1
1
  module Wovnrb
2
2
  class LinkReplacer < ReplacerBase
3
+ module FileExtension
4
+ IMG_FILES = '(?!jp$)jpe?g?|bmp|gif|png|btif|tiff?|psd|djvu?|xif|wbmp|webp|p(n|b|g|p)m|rgb|tga|x(b|p)m|xwd|pic|ico|fh(c|4|5|7)?|xif|f(bs|px|st)'
5
+ AUDIO_FILES = 'mp(3|2)|m(p?2|3|p?4|pg)a|midi?|kar|rmi|web(m|a)|aif(f?|c)|w(ma|av|ax)|m(ka|3u)|sil|s3m|og(a|g)|uvv?a'
6
+ VIDEO_FILES = 'm(x|4)u|fl(i|v)|3g(p|2)|jp(gv|g?m)|mp(4v?|g4|(?!$)e?g?)|m(1|2)v|ogv|m(ov|ng)|qt|uvv?(h|m|p|s|v)|dvb|mk(v|3d|s)|f4v|as(x|f)|w(m(v|x)|vx)|xvid'
7
+ DOC_FILES = 'zip|tar|ez|aw|atom(cat|svc)?|(cc)?xa?ml|cdmi(a|c|d|o|q)?|epub|g(ml|px|xf)|jar|js|ser|class|json(ml)?|do(c|t)m?|xps|pp(a|tx?|s)m?|potm?|sldm|mp(p|t)|bin|dms|lrf|mar|so|dist|distz|m?pkg|bpk|dump|rtf|tfi|pdf|pgp|apk|o(t|d)(b|c|ft?|g|h|i|p|s|t)'
8
+ end
9
+
3
10
  def initialize(pattern, headers)
4
11
  @pattern = pattern
5
12
  @headers = headers
@@ -12,9 +19,18 @@ module Wovnrb
12
19
  href = node.get_attribute('href')
13
20
  next if href =~ /^\s*\{\{.+\}\}\s*$/
14
21
  next if href =~ /javascript:void\(/
22
+ next if is_file?(href)
15
23
  new_href = lang.add_lang_code(href, @pattern, @headers)
16
24
  node.set_attribute('href', new_href)
17
25
  end
18
26
  end
27
+
28
+ def is_file?(href)
29
+ img_files = /^(https?:\/\/)?.*(\.(#{FileExtension::IMG_FILES}))((\?|#).*)?$/i
30
+ audio_files = /^(https?:\/\/)?.*(\.(#{FileExtension::AUDIO_FILES}))((\?|#).*)?$/i
31
+ video_files = /^(https?:\/\/)?.*(\.(#{FileExtension::VIDEO_FILES}))((\?|#).*)?$/i
32
+ doc_files = /^(https?:\/\/)?.*(\.(#{FileExtension::DOC_FILES}))((\?|#).*)?$/i
33
+ href =~ img_files || href =~ audio_files || href =~ video_files || href =~ doc_files
34
+ end
19
35
  end
20
36
  end
@@ -1,3 +1,3 @@
1
1
  module Wovnrb
2
- VERSION = "0.2.23"
2
+ VERSION = "0.2.24"
3
3
  end
@@ -51,6 +51,111 @@ module Wovnrb
51
51
  assert_equal('javascript:void(0);', link)
52
52
  end
53
53
 
54
+ def test_replace_link_path
55
+ replacer = LinkReplacer.new('path', get_header)
56
+ dom = Wovnrb.get_dom('<a href="/index.html">link text</a>')
57
+ replacer.replace(dom, Lang.new('en'))
58
+
59
+ link = dom.xpath('//a')[0].get_attribute('href')
60
+ assert_equal('/en/index.html', link)
61
+ end
62
+
63
+ def test_replace_img_link_path
64
+ replacer = LinkReplacer.new('path', get_header)
65
+ dom = Wovnrb.get_dom('<a href="http://favy.tips/index.jpg">link text</a>')
66
+ replacer.replace(dom, Lang.new('ja'))
67
+
68
+ link = dom.xpath('//a')[0].get_attribute('href')
69
+ assert_equal('http://favy.tips/index.jpg', link)
70
+ end
71
+
72
+ def test_replace_img_link_path_with_query_or_hash
73
+ replacer = LinkReplacer.new('path', get_header)
74
+ dom = Wovnrb.get_dom('<a href="http://favy.tips/index.jpg?test=1">link text</a>')
75
+ replacer.replace(dom, Lang.new('ja'))
76
+
77
+ link = dom.xpath('//a')[0].get_attribute('href')
78
+ assert_equal('http://favy.tips/index.jpg?test=1', link)
79
+
80
+ dom = Wovnrb.get_dom('<a href="http://favy.tips/index.jpg#test=1">link text</a>')
81
+ replacer.replace(dom, Lang.new('ja'))
82
+
83
+ link = dom.xpath('//a')[0].get_attribute('href')
84
+ assert_equal('http://favy.tips/index.jpg#test=1', link)
85
+ end
86
+
87
+ def test_replace_audio_link_path
88
+ replacer = LinkReplacer.new('path', get_header)
89
+ dom = Wovnrb.get_dom('<a href="/index.mp3">link text</a>')
90
+ replacer.replace(dom, Lang.new('ja'))
91
+
92
+ link = dom.xpath('//a')[0].get_attribute('href')
93
+ assert_equal('/index.mp3', link)
94
+ end
95
+
96
+ def test_replace_audio_link_path_with_query_or_hash
97
+ replacer = LinkReplacer.new('path', get_header)
98
+ dom = Wovnrb.get_dom('<a href="/index.mp3?test=1">link text</a>')
99
+ replacer.replace(dom, Lang.new('ja'))
100
+
101
+ link = dom.xpath('//a')[0].get_attribute('href')
102
+ assert_equal('/index.mp3?test=1', link)
103
+
104
+ dom = Wovnrb.get_dom('<a href="/index.mp3#test=1">link text</a>')
105
+ replacer.replace(dom, Lang.new('ja'))
106
+
107
+ link = dom.xpath('//a')[0].get_attribute('href')
108
+ assert_equal('/index.mp3#test=1', link)
109
+ end
110
+
111
+ def test_replace_video_link_path
112
+ replacer = LinkReplacer.new('path', get_header)
113
+ dom = Wovnrb.get_dom('<a href="/index.mpeg">link text</a>')
114
+ replacer.replace(dom, Lang.new('ja'))
115
+
116
+ link = dom.xpath('//a')[0].get_attribute('href')
117
+ assert_equal('/index.mpeg', link)
118
+ end
119
+
120
+ def test_replace_video_link_path_with_query_or_hash
121
+ replacer = LinkReplacer.new('path', get_header)
122
+ dom = Wovnrb.get_dom('<a href="/index.mp4?test=1">link text</a>')
123
+ replacer.replace(dom, Lang.new('ja'))
124
+
125
+ link = dom.xpath('//a')[0].get_attribute('href')
126
+ assert_equal('/index.mp4?test=1', link)
127
+
128
+ dom = Wovnrb.get_dom('<a href="/index.mp4#test=1">link text</a>')
129
+ replacer.replace(dom, Lang.new('ja'))
130
+
131
+ link = dom.xpath('//a')[0].get_attribute('href')
132
+ assert_equal('/index.mp4#test=1', link)
133
+ end
134
+
135
+ def test_replace_doc_link_path
136
+ replacer = LinkReplacer.new('path', get_header)
137
+ dom = Wovnrb.get_dom('<a href="/index.pptx">link text</a>')
138
+ replacer.replace(dom, Lang.new('ja'))
139
+
140
+ link = dom.xpath('//a')[0].get_attribute('href')
141
+ assert_equal('/index.pptx', link)
142
+ end
143
+
144
+ def test_replace_doc_link_path_with_query_or_hash
145
+ replacer = LinkReplacer.new('path', get_header)
146
+ dom = Wovnrb.get_dom('<a href="/index.pptx?test=1">link text</a>')
147
+ replacer.replace(dom, Lang.new('ja'))
148
+
149
+ link = dom.xpath('//a')[0].get_attribute('href')
150
+ assert_equal('/index.pptx?test=1', link)
151
+
152
+ dom = Wovnrb.get_dom('<a href="/index.pptx#test=1">link text</a>')
153
+ replacer.replace(dom, Lang.new('ja'))
154
+
155
+ link = dom.xpath('//a')[0].get_attribute('href')
156
+ assert_equal('/index.pptx#test=1', link)
157
+ end
158
+
54
159
  def test_replace_javascript_link_subdomain
55
160
  replacer = LinkReplacer.new('subdomain', get_header)
56
161
  dom = Wovnrb.get_dom('<a href="javascript:void(0);">link text</a>')
@@ -82,4 +187,3 @@ module Wovnrb
82
187
  end
83
188
  end
84
189
  end
85
-
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wovnrb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.23
4
+ version: 0.2.24
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeff Sandford
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-08-29 00:00:00.000000000 Z
12
+ date: 2017-09-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogumbo