ehbrs-tools 0.28.2 → 0.28.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +51 -17
  3. data/lib/ehbrs/tools/runner/fs/selected.rb +1 -1
  4. data/lib/ehbrs/tools/runner/vg/wii.rb +2 -2
  5. data/lib/ehbrs/tools/runner/videos/series/rename.rb +1 -1
  6. data/lib/ehbrs/tools/version.rb +1 -1
  7. data/lib/ehbrs/videos/unsupported/search.rb +2 -2
  8. data/vendor/aranha-parsers/aranha-parsers.gemspec +1 -0
  9. data/vendor/aranha-parsers/lib/aranha/parsers/base.rb +3 -1
  10. data/vendor/aranha-parsers/lib/aranha/parsers/html/node/default/numeric_support.rb +70 -0
  11. data/vendor/aranha-parsers/lib/aranha/parsers/html/node/default/string_support.rb +77 -0
  12. data/vendor/aranha-parsers/lib/aranha/parsers/html/node/default.rb +2 -94
  13. data/vendor/aranha-parsers/lib/aranha/parsers/json/base.rb +20 -0
  14. data/vendor/aranha-parsers/lib/aranha/parsers/json.rb +11 -0
  15. data/vendor/aranha-parsers/lib/aranha/parsers/source_address/http_get.rb +12 -15
  16. data/vendor/aranha-parsers/lib/aranha/parsers/version.rb +1 -1
  17. data/vendor/eac_fs/lib/eac_fs/patches/object/fs_cache.rb +4 -2
  18. data/vendor/eac_fs/lib/eac_fs/traversable.rb +45 -0
  19. data/vendor/eac_fs/lib/eac_fs/traverser.rb +76 -0
  20. data/vendor/eac_fs/lib/eac_fs/version.rb +1 -1
  21. data/vendor/eac_ruby_base0/lib/eac_ruby_base0/application.rb +1 -1
  22. data/vendor/eac_ruby_base0/lib/eac_ruby_base0/runner_with/confirmation.rb +0 -1
  23. data/vendor/eac_ruby_base0/lib/eac_ruby_base0/runner_with/filesystem_traverser.rb +2 -2
  24. data/vendor/eac_ruby_base0/lib/eac_ruby_base0/version.rb +1 -1
  25. data/vendor/eac_ruby_gems_utils/eac_ruby_gems_utils.gemspec +1 -1
  26. data/vendor/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/tests/base.rb +0 -1
  27. data/vendor/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/version.rb +1 -1
  28. data/vendor/eac_ruby_gems_utils/spec/support/mygem/Gemfile.lock +1 -1
  29. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/abstract_methods.rb +7 -0
  30. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/core_ext.rb +1 -0
  31. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/gems_registry/gem.rb +4 -0
  32. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/gems_registry.rb +1 -1
  33. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/class/abstract.rb +9 -0
  34. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/class/self_included_modules.rb +7 -0
  35. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/module/i18n_translate.rb +32 -0
  36. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/object/call_if_proc.rb +11 -0
  37. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/object/i18n_translate.rb +13 -0
  38. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/speaker/receiver.rb +10 -10
  39. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/version.rb +1 -1
  40. data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/class/abstract_spec.rb +25 -0
  41. data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/class/self_included_modules_spec.rb +30 -0
  42. data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/object/call_if_proc_spec.rb +11 -0
  43. data/vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/fs/selected.rb +11 -1
  44. data/vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/music/lyrics_book.rb +1 -1
  45. data/vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/version.rb +1 -1
  46. metadata +16 -5
  47. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/fs/traversable.rb +0 -47
  48. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/fs/traverser.rb +0 -72
  49. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/on_clean_ruby_environment.rb +0 -12
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 27cfd6fd70b80a51d74091e516bcd784cafe2ed0150de7424e865213ef2a6397
4
- data.tar.gz: '099eae7fd47b2b34f11417228a16f838033b4dfa3b725bc16363c2a23ccc6ce6'
3
+ metadata.gz: 644c4ba64fc1a688a62d35b89e6aadb311239b33611e782556931a6b3cf185b5
4
+ data.tar.gz: a8f8e6f90cdf1746b0996b0c1330f86559ba7bcf62c57df7015103a48a946043
5
5
  SHA512:
6
- metadata.gz: caf38bb6c3ae4c907aa20761ef390b8ef3371e150ad512758813c8c411c7d24d10c33abf2a263904875c96cd90dc00987ba6127d0b5ef5452f9581594b96e878
7
- data.tar.gz: 14096bf6312bde96792b427a71b5eddc03bc044b8fbd11a56e7513b6a72fb517641a0b53a2ce8f01ada21433bb376871af1aa8f6c3bb2cec30bd4ea734cd9ec0
6
+ metadata.gz: b6fb53198617263ae78fab68ebeae06ab0cb311c2353675defe9dc857d07fff5c93eb237b970910d2f7aa520521b342a74477908ad88dcaf4eb5f6122b00952d
7
+ data.tar.gz: c41b33ff7bcac502642466954e89ede742a2aca4a7cde650602476ac1bf3602f7756972c12593e346ff274744c3512a16a5604bf60de5ff22616bd242cc80984
data/Gemfile.lock CHANGED
@@ -7,7 +7,7 @@ GIT
7
7
  PATH
8
8
  remote: .
9
9
  specs:
10
- ehbrs-tools (0.28.2)
10
+ ehbrs-tools (0.28.3)
11
11
  avm-tools (~> 0.82, >= 0.82.1)
12
12
  eac_cli (~> 0.12, >= 0.12.5)
13
13
  eac_ruby_utils (~> 0.71)
@@ -20,11 +20,12 @@ PATH
20
20
  PATH
21
21
  remote: vendor/aranha-parsers
22
22
  specs:
23
- aranha-parsers (0.8.5)
23
+ aranha-parsers (0.10.0)
24
24
  activesupport (>= 4.0.0)
25
25
  addressable (~> 2.7)
26
26
  curb (~> 0.9.10)
27
27
  eac_ruby_utils (~> 0.74)
28
+ faraday_middleware
28
29
  httpclient (~> 2.8, >= 2.8.3)
29
30
  nokogiri (~> 1.12, >= 1.12.4)
30
31
  ofx-parser (~> 1.1.0)
@@ -61,7 +62,7 @@ PATH
61
62
  PATH
62
63
  remote: vendor/eac_fs
63
64
  specs:
64
- eac_fs (0.5.0)
65
+ eac_fs (0.7.0)
65
66
  content-type
66
67
  eac_ruby_utils (~> 0.70)
67
68
  ruby-filemagic
@@ -69,7 +70,7 @@ PATH
69
70
  PATH
70
71
  remote: vendor/eac_ruby_base0
71
72
  specs:
72
- eac_ruby_base0 (0.12.0)
73
+ eac_ruby_base0 (0.13.1)
73
74
  eac_cli (~> 0.22, >= 0.22.2)
74
75
  eac_fs (~> 0.3)
75
76
  eac_ruby_gems_utils (~> 0.9.6, ~> 0.9)
@@ -78,14 +79,14 @@ PATH
78
79
  PATH
79
80
  remote: vendor/eac_ruby_gems_utils
80
81
  specs:
81
- eac_ruby_gems_utils (0.9.6)
82
- bundler (~> 2.2, >= 2.2.17)
82
+ eac_ruby_gems_utils (0.9.8)
83
+ bundler
83
84
  eac_ruby_utils (~> 0.70)
84
85
 
85
86
  PATH
86
87
  remote: vendor/eac_ruby_utils
87
88
  specs:
88
- eac_ruby_utils (0.76.0)
89
+ eac_ruby_utils (0.79.0)
89
90
  activesupport (>= 4.0)
90
91
  addressable (~> 2.6)
91
92
  filesize
@@ -101,7 +102,7 @@ PATH
101
102
  PATH
102
103
  remote: vendor/ehbrs_ruby_utils
103
104
  specs:
104
- ehbrs_ruby_utils (0.12.1)
105
+ ehbrs_ruby_utils (0.12.2)
105
106
  aranha-parsers (~> 0.8, >= 0.8.5)
106
107
  avm (~> 0.3, >= 0.3.2)
107
108
  eac_fs (~> 0.5)
@@ -130,10 +131,11 @@ GEM
130
131
  public_suffix (>= 2.0.2, < 5.0)
131
132
  asciidoctor (2.0.16)
132
133
  ast (2.4.2)
133
- avm (0.5.0)
134
+ avm (0.8.0)
135
+ eac_cli (~> 0.23, >= 0.23.1)
134
136
  eac_docker (~> 0.3)
135
137
  eac_git (~> 0.6)
136
- eac_ruby_utils (~> 0.68)
138
+ eac_ruby_utils (~> 0.77)
137
139
  eac_templates (~> 0.1, >= 0.1.1)
138
140
  filesize (~> 0.2)
139
141
  htmlbeautifier (~> 1.3, >= 1.3.1)
@@ -144,13 +146,43 @@ GEM
144
146
  eac_ruby_utils (~> 0.63)
145
147
  os
146
148
  rouge (~> 3.26)
149
+ avm-eac_rails_base1 (0.1.2)
150
+ avm-eac_webapp_base0 (~> 0.1)
151
+ eac_ruby_utils (~> 0.68)
152
+ avm-eac_redmine_base0 (0.3.0)
153
+ avm-eac_rails_base1 (~> 0.1)
154
+ avm-eac_ubuntu_base0 (~> 0.2)
155
+ curb (~> 0.9.10)
156
+ eac_fs (~> 0.4)
157
+ eac_ruby_utils (~> 0.68)
158
+ avm-eac_ruby_base1 (0.1.0)
159
+ avm (~> 0.6)
160
+ eac_ruby_utils (~> 0.76)
161
+ avm-eac_ubuntu_base0 (0.2.0)
162
+ avm (~> 0.7)
163
+ eac_ruby_utils (~> 0.77, >= 0.77.1)
164
+ eac_templates (~> 0.2)
147
165
  avm-eac_webapp_base0 (0.1.1)
148
166
  avm (~> 0.1)
149
167
  eac_ruby_utils (~> 0.68)
150
- avm-tools (0.108.0)
168
+ avm-files (0.2.0)
169
+ avm (~> 0.6)
170
+ eac_fs (~> 0.5)
171
+ eac_ruby_utils (~> 0.76)
172
+ eac_templates (~> 0.2)
173
+ avm-git (0.1.0)
174
+ avm-files (~> 0.1)
175
+ eac_git (~> 0.9)
176
+ eac_ruby_utils (~> 0.76)
177
+ avm-tools (0.111.0)
151
178
  aranha-parsers (~> 0.4)
152
179
  avm (~> 0.1)
153
180
  avm-eac_asciidoctor_base0
181
+ avm-eac_redmine_base0 (~> 0.3)
182
+ avm-eac_ruby_base1 (~> 0.1)
183
+ avm-eac_ubuntu_base0 (~> 0.2)
184
+ avm-files (~> 0.1)
185
+ avm-git (~> 0.1)
154
186
  clipboard (~> 1.3, >= 1.3.3)
155
187
  curb (~> 0.9.10)
156
188
  eac_ruby_base0 (~> 0.7, >= 0.7.2)
@@ -174,7 +206,7 @@ GEM
174
206
  thread_safe (~> 0.3, >= 0.3.1)
175
207
  diff-lcs (1.4.4)
176
208
  dry-inflector (0.2.1)
177
- eac_git (0.8.0)
209
+ eac_git (0.9.0)
178
210
  eac_ruby_utils (~> 0.74)
179
211
  parseconfig (~> 1.0, >= 1.0.8)
180
212
  eac_ruby_gem_support (0.4.0)
@@ -202,12 +234,14 @@ GEM
202
234
  faraday-net_http_persistent (1.2.0)
203
235
  faraday-patron (1.0.0)
204
236
  faraday-rack (1.0.0)
237
+ faraday_middleware (1.2.0)
238
+ faraday (~> 1.0)
205
239
  filesize (0.2.0)
206
240
  git (1.9.1)
207
241
  rchardet (~> 1.8)
208
242
  hpricot (0.8.6)
209
243
  htmlbeautifier (1.3.1)
210
- i18n (1.8.10)
244
+ i18n (1.8.11)
211
245
  concurrent-ruby (~> 1.0)
212
246
  ice_nine (0.11.2)
213
247
  inifile (3.0.0)
@@ -220,14 +254,14 @@ GEM
220
254
  racc (~> 1.4)
221
255
  ofx-parser (1.1.0)
222
256
  hpricot (>= 0.6)
223
- os (1.1.1)
257
+ os (1.1.4)
224
258
  parallel (1.21.0)
225
259
  parseconfig (1.1.2)
226
260
  parser (3.0.2.0)
227
261
  ast (~> 2.4.1)
228
262
  parslet (1.8.2)
229
263
  public_suffix (4.0.6)
230
- racc (1.5.2)
264
+ racc (1.6.0)
231
265
  rack (2.2.3)
232
266
  rainbow (3.0.0)
233
267
  rchardet (1.8.0)
@@ -245,7 +279,7 @@ GEM
245
279
  rspec-mocks (3.10.2)
246
280
  diff-lcs (>= 1.2.0, < 2.0)
247
281
  rspec-support (~> 3.10.0)
248
- rspec-support (3.10.2)
282
+ rspec-support (3.10.3)
249
283
  rubocop (0.80.1)
250
284
  jaro_winkler (~> 1.5.1)
251
285
  parallel (~> 1.10)
@@ -279,7 +313,7 @@ GEM
279
313
  axiom-types (~> 0.1)
280
314
  coercible (~> 1.0)
281
315
  descendants_tracker (~> 0.0, >= 0.0.3)
282
- zeitwerk (2.4.2)
316
+ zeitwerk (2.5.1)
283
317
 
284
318
  PLATFORMS
285
319
  x86_64-linux
@@ -45,7 +45,7 @@ module Ehbrs
45
45
  end
46
46
 
47
47
  def build_dir_uncached
48
- parsed.build_dir.if_present(&:to_pathname)
48
+ parsed.build_dir.if_nil(&:to_pathname)
49
49
  end
50
50
 
51
51
  def run_build?
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'eac_cli/core_ext'
4
- require 'eac_ruby_utils/fs/traversable'
4
+ require 'eac_fs/traversable'
5
5
  require 'ehbrs/vg/wii/file_move'
6
6
  require 'ehbrs/vg/wii/game_file'
7
7
 
@@ -10,7 +10,7 @@ module Ehbrs
10
10
  class Runner
11
11
  class Vg
12
12
  class Wii
13
- include ::EacRubyUtils::Fs::Traversable
13
+ include ::EacFs::Traversable
14
14
 
15
15
  runner_with :help do
16
16
  desc 'Manipulação de imagens de jogo Wii.'
@@ -11,7 +11,7 @@ module Ehbrs
11
11
  class Videos
12
12
  class Series
13
13
  class Rename
14
- include ::EacRubyUtils::Fs::Traversable
14
+ include ::EacFs::Traversable
15
15
 
16
16
  runner_with :help do
17
17
  desc 'Renomeia arquivos de séries.'
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Ehbrs
4
4
  module Tools
5
- VERSION = '0.28.2'
5
+ VERSION = '0.28.3'
6
6
  end
7
7
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'eac_ruby_utils/fs/traversable'
3
+ require 'eac_fs/traversable'
4
4
  require 'eac_ruby_utils/core_ext'
5
5
  require 'ehbrs/videos/unsupported/file'
6
6
 
@@ -8,7 +8,7 @@ module Ehbrs
8
8
  module Videos
9
9
  module Unsupported
10
10
  class Search
11
- include ::EacRubyUtils::Fs::Traversable
11
+ include ::EacFs::Traversable
12
12
  enable_speaker
13
13
  enable_simple_cache
14
14
 
@@ -16,6 +16,7 @@ Gem::Specification.new do |s|
16
16
  s.add_dependency 'addressable', '~> 2.7'
17
17
  s.add_dependency 'curb', '~> 0.9.10'
18
18
  s.add_dependency 'eac_ruby_utils', '~> 0.74'
19
+ s.add_dependency 'faraday_middleware'
19
20
  s.add_dependency 'httpclient', '~> 2.8', '>= 2.8.3'
20
21
  s.add_dependency 'nokogiri', '~> 1.12', '>= 1.12.4'
21
22
  s.add_dependency 'ofx-parser', '~> 1.1.0'
@@ -11,7 +11,9 @@ module Aranha
11
11
  class << self
12
12
  def from_content(content)
13
13
  ::EacRubyUtils::Fs::Temp.on_file do |path|
14
- path.write(content)
14
+ ::File.open(path.to_s, 'w:UTF-8') do |f|
15
+ f.write content.force_encoding('UTF-8')
16
+ end
15
17
  r = new(path.to_path)
16
18
  r.content
17
19
  r
@@ -0,0 +1,70 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'aranha/parsers/html/node/base'
4
+ require 'eac_ruby_utils/core_ext'
5
+
6
+ module Aranha
7
+ module Parsers
8
+ module Html
9
+ module Node
10
+ class Default < ::Aranha::Parsers::Html::Node::Base
11
+ module NumericSupport
12
+ def integer_value(node, xpath)
13
+ r = string_value(node, xpath)
14
+ return nil if r.blank?
15
+
16
+ m = /\d+/.match(r)
17
+ raise "Integer not found in \"#{r}\"" unless m
18
+
19
+ m[0].to_i
20
+ end
21
+
22
+ def integer_optional_value(node, xpath)
23
+ r = string_value(node, xpath)
24
+ m = /\d+/.match(r)
25
+ m ? m[0].to_i : nil
26
+ end
27
+
28
+ def float_value(node, xpath)
29
+ parse_float(node, xpath, true)
30
+ end
31
+
32
+ def float_optional_value(node, xpath)
33
+ parse_float(node, xpath, false)
34
+ end
35
+
36
+ def us_decimal_value(node, xpath)
37
+ parse_us_decimal(node, xpath, true)
38
+ end
39
+
40
+ def us_decimal_optional_value(node, xpath)
41
+ parse_us_decimal(node, xpath, false)
42
+ end
43
+
44
+ private
45
+
46
+ def parse_float(node, xpath, required)
47
+ s = string_value(node, xpath)
48
+ m = /\d+(?:[\.\,](\d+))?/.match(s)
49
+ if m
50
+ m[0].delete('.').tr(',', '.').to_f
51
+ elsif required
52
+ raise "Float value not found in \"#{s}\""
53
+ end
54
+ end
55
+
56
+ def parse_us_decimal(node, xpath, required)
57
+ s = string_value(node, xpath)
58
+ m = /\d+(?:[\.\,](\d+))?/.match(s)
59
+ if m
60
+ m[0].delete(',').to_f
61
+ elsif required
62
+ raise "US decimal value not found in \"#{s}\""
63
+ end
64
+ end
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,77 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'aranha/parsers/html/node/base'
4
+ require 'eac_ruby_utils/core_ext'
5
+
6
+ module Aranha
7
+ module Parsers
8
+ module Html
9
+ module Node
10
+ class Default < ::Aranha::Parsers::Html::Node::Base
11
+ module StringSupport
12
+ def quoted_value(node, xpath)
13
+ s = string_value(node, xpath)
14
+ return '' unless s
15
+
16
+ m = /\"([^\"]+)\"/.match(s)
17
+ return m[1] if m
18
+
19
+ ''
20
+ end
21
+
22
+ def regxep(node, xpath, pattern)
23
+ s = string_value(node, xpath)
24
+ m = pattern.match(s)
25
+ return m if m
26
+
27
+ raise "Pattern \"#{pattern}\" not found in string \"#{s}\""
28
+ end
29
+
30
+ def string_value(node, xpath)
31
+ if node.at_xpath(xpath)
32
+ sanitize_string(node.at_xpath(xpath).text)
33
+ else
34
+ ''
35
+ end
36
+ end
37
+
38
+ def string_recursive_value(node, xpath, required = true)
39
+ root = node.at_xpath(xpath)
40
+ if root.blank?
41
+ return nil unless required
42
+
43
+ raise "No node found (Xpath: #{xpath})"
44
+ end
45
+ result = string_recursive(root)
46
+ return result if result.present?
47
+ return nil unless required
48
+
49
+ raise "String blank (Xpath: #{xpath})"
50
+ end
51
+
52
+ def string_recursive_optional_value(node, xpath)
53
+ string_recursive_value(node, xpath, false)
54
+ end
55
+
56
+ private
57
+
58
+ def sanitize_string(obj)
59
+ obj.to_s.tr("\u00A0", ' ').strip
60
+ end
61
+
62
+ def string_recursive(node)
63
+ return sanitize_string(node.text) if node.is_a?(::Nokogiri::XML::Text)
64
+
65
+ s = ''
66
+ node.children.each do |child|
67
+ child_s = string_recursive(child)
68
+ s += ' ' + child_s if child_s.present?
69
+ end
70
+ sanitize_string(s)
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
@@ -1,71 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'aranha/parsers/html/node/base'
4
+ require 'eac_ruby_utils/core_ext'
4
5
 
5
6
  module Aranha
6
7
  module Parsers
7
8
  module Html
8
9
  module Node
9
10
  class Default < ::Aranha::Parsers::Html::Node::Base
10
- def string_value(node, xpath)
11
- if node.at_xpath(xpath)
12
- sanitize_string(node.at_xpath(xpath).text)
13
- else
14
- ''
15
- end
16
- end
17
-
18
- def string_recursive_value(node, xpath, required = true)
19
- root = node.at_xpath(xpath)
20
- if root.blank?
21
- return nil unless required
22
-
23
- raise "No node found (Xpath: #{xpath})"
24
- end
25
- result = string_recursive(root)
26
- return result if result.present?
27
- return nil unless required
28
-
29
- raise "String blank (Xpath: #{xpath})"
30
- end
31
-
32
- def string_recursive_optional_value(node, xpath)
33
- string_recursive_value(node, xpath, false)
34
- end
35
-
36
- def quoted_value(node, xpath)
37
- s = string_value(node, xpath)
38
- return '' unless s
39
-
40
- m = /\"([^\"]+)\"/.match(s)
41
- return m[1] if m
42
-
43
- ''
44
- end
45
-
46
- def integer_value(node, xpath)
47
- r = string_value(node, xpath)
48
- return nil if r.blank?
49
-
50
- m = /\d+/.match(r)
51
- raise "Integer not found in \"#{r}\"" unless m
52
-
53
- m[0].to_i
54
- end
55
-
56
- def integer_optional_value(node, xpath)
57
- r = string_value(node, xpath)
58
- m = /\d+/.match(r)
59
- m ? m[0].to_i : nil
60
- end
61
-
62
- def float_value(node, xpath)
63
- parse_float(node, xpath, true)
64
- end
65
-
66
- def float_optional_value(node, xpath)
67
- parse_float(node, xpath, false)
68
- end
11
+ require_sub __FILE__, include_modules: true
69
12
 
70
13
  def array_value(node, xpath)
71
14
  r = node.xpath(xpath).map { |n| n.text.strip }
@@ -84,41 +27,6 @@ module Aranha
84
27
  m = /(\d+) m/.match(join_value(node, xpath))
85
28
  m ? m[1].to_i : nil
86
29
  end
87
-
88
- def regxep(node, xpath, pattern)
89
- s = string_value(node, xpath)
90
- m = pattern.match(s)
91
- return m if m
92
-
93
- raise "Pattern \"#{pattern}\" not found in string \"#{s}\""
94
- end
95
-
96
- private
97
-
98
- def parse_float(node, xpath, required)
99
- s = string_value(node, xpath)
100
- m = /\d+(?:[\.\,](\d+))?/.match(s)
101
- if m
102
- m[0].delete('.').tr(',', '.').to_f
103
- elsif required
104
- raise "Float value not found in \"#{s}\""
105
- end
106
- end
107
-
108
- def sanitize_string(obj)
109
- obj.to_s.tr("\u00A0", ' ').strip
110
- end
111
-
112
- def string_recursive(node)
113
- return sanitize_string(node.text) if node.is_a?(::Nokogiri::XML::Text)
114
-
115
- s = ''
116
- node.children.each do |child|
117
- child_s = string_recursive(child)
118
- s += ' ' + child_s if child_s.present?
119
- end
120
- sanitize_string(s)
121
- end
122
30
  end
123
31
  end
124
32
  end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'aranha/parsers/base'
4
+ require 'json'
5
+
6
+ module Aranha
7
+ module Parsers
8
+ module Json
9
+ class Base < ::Aranha::Parsers::Base
10
+ def data
11
+ default_data
12
+ end
13
+
14
+ def default_data
15
+ ::JSON.parse(content)
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Aranha
6
+ module Parsers
7
+ module Json
8
+ require_sub __FILE__
9
+ end
10
+ end
11
+ end
@@ -3,6 +3,7 @@
3
3
  require 'addressable'
4
4
  require 'curb'
5
5
  require 'aranha/parsers/source_address/fetch_content_error'
6
+ require 'faraday_middleware'
6
7
 
7
8
  module Aranha
8
9
  module Parsers
@@ -32,11 +33,18 @@ module Aranha
32
33
  source
33
34
  end
34
35
 
36
+ def final_url
37
+ content unless @final_url
38
+ @final_url
39
+ end
40
+
35
41
  def content
36
- c = ::Curl::Easy.new(url)
37
- c.follow_location = true
38
- curl_perform(c)
39
- return c.body_str if c.status.to_i == 200
42
+ conn = ::Faraday.new do |f|
43
+ f.request :retry # retry transient failures
44
+ f.response :follow_redirects # follow redirects
45
+ end
46
+ c = conn.get(url)
47
+ return c.body if c.status == 200
40
48
 
41
49
  raise ::Aranha::Parsers::SourceAddress::FetchContentError,
42
50
  "Get #{url} returned #{c.status.to_i}"
@@ -45,17 +53,6 @@ module Aranha
45
53
  def serialize
46
54
  url
47
55
  end
48
-
49
- private
50
-
51
- def curl_perform(curl)
52
- unless curl.perform
53
- raise(::Aranha::Parsers::SourceAddress::FetchContentError,
54
- "Curl perform failed (URL: #{url})")
55
- end
56
- rescue Curl::Err::CurlError => e
57
- raise ::Aranha::Parsers::SourceAddress::FetchContentError, "CURL error: #{e.class.name}"
58
- end
59
56
  end
60
57
  end
61
58
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Aranha
4
4
  module Parsers
5
- VERSION = '0.8.5'
5
+ VERSION = '0.10.0'
6
6
  end
7
7
  end
@@ -5,10 +5,12 @@ require 'eac_fs/patches/module/fs_cache'
5
5
  class Object
6
6
  # @return [EacFs::Cache]
7
7
  def fs_cache
8
- self.class.fs_cache.child(fs_cache_object_id)
8
+ oid = fs_cache_object_id
9
+ oid = [oid.to_s] unless oid.is_a?(::Enumerable)
10
+ oid.inject(self.class.fs_cache) { |a, e| a.child(e.to_s) }
9
11
  end
10
12
 
11
- # @return [String]
13
+ # @return [String, Array<String>]
12
14
  def fs_cache_object_id
13
15
  raise 'Abstract method hit'
14
16
  end