wovnrb 0.2.23 → 0.2.24

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