aranha-parsers 0.21.0 → 0.22.0
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 +4 -4
- data/lib/aranha/parsers/base.rb +2 -2
- data/lib/aranha/parsers/html/node/base.rb +2 -2
- data/lib/aranha/parsers/html/node/default/numeric_support.rb +1 -1
- data/lib/aranha/parsers/html/node/default/string_support.rb +3 -3
- data/lib/aranha/parsers/patches/ofx_parser.rb +2 -2
- data/lib/aranha/parsers/source_address/file.rb +2 -2
- data/lib/aranha/parsers/source_address/hash_http_base/headers.rb +43 -0
- data/lib/aranha/parsers/source_address/hash_http_base.rb +18 -2
- data/lib/aranha/parsers/source_address/http_get.rb +1 -0
- data/lib/aranha/parsers/source_address.rb +1 -1
- data/lib/aranha/parsers/version.rb +1 -1
- metadata +20 -19
- data/lib/aranha/parsers/rspec/setup.rb +0 -15
- data/lib/aranha/parsers/rspec/shared_examples/source_target_fixtures.rb +0 -74
- data/lib/aranha/parsers/rspec/source_target_fixtures_controller.rb +0 -39
- data/lib/aranha/parsers/rspec.rb +0 -11
- data/lib/aranha/parsers/source_target_fixtures/source_target_file.rb +0 -19
- data/lib/aranha/parsers/source_target_fixtures.rb +0 -78
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d2ddf8d96b3eb46a3690802194d7bac810d77955dc2f79e6c0329c80ef326592
|
4
|
+
data.tar.gz: 7caeceb58462533b58c9976ed6ab942f995a8756d4db00ff50f61fd730f98735
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 394353da9e1e5859005fcb65104629535162e9a89d2acf70c515f71358e2fca7b1291b6210549f4f1f9d64577aaef6a947670f8ae1903af4f16af1ade346c4ca
|
7
|
+
data.tar.gz: 0bba5dff7e92e219a978f4708ccaa083a208671c0a810ad204da7397760e633645228aa2ddb718d33e508ca76ca8cb3da6f7c3f1b043a5d6d241c6d3cf2b8e37
|
data/lib/aranha/parsers/base.rb
CHANGED
@@ -54,7 +54,7 @@ module Aranha
|
|
54
54
|
def log_content(content, suffix = '')
|
55
55
|
path = log_file(suffix)
|
56
56
|
|
57
|
-
File.
|
57
|
+
File.binwrite(path, content) if path
|
58
58
|
|
59
59
|
content
|
60
60
|
end
|
@@ -70,7 +70,7 @@ module Aranha
|
|
70
70
|
|
71
71
|
def log_parsers_dir
|
72
72
|
return ENV[LOG_DIR_ENVVAR] if ENV[LOG_DIR_ENVVAR]
|
73
|
-
return ::Rails.root.join('log
|
73
|
+
return ::Rails.root.join('log/parsers') if rails_root_exist?
|
74
74
|
|
75
75
|
nil
|
76
76
|
end
|
@@ -12,11 +12,11 @@ module Aranha
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def parse(node)
|
15
|
-
fields.
|
15
|
+
fields.to_h do |f|
|
16
16
|
[f[0], parse_field(node, f[2], f[1])]
|
17
17
|
rescue StandardError => e
|
18
18
|
raise StandardError, "#{e.message}\nFields: #{f}"
|
19
|
-
end
|
19
|
+
end
|
20
20
|
end
|
21
21
|
|
22
22
|
private
|
@@ -13,7 +13,7 @@ module Aranha
|
|
13
13
|
s = string_value(node, xpath)
|
14
14
|
return '' unless s
|
15
15
|
|
16
|
-
m =
|
16
|
+
m = /"([^\"]+)"/.match(s)
|
17
17
|
return m[1] if m
|
18
18
|
|
19
19
|
''
|
@@ -35,7 +35,7 @@ module Aranha
|
|
35
35
|
found ? sanitize_string(found.text) : ''
|
36
36
|
end
|
37
37
|
|
38
|
-
def string_recursive_value(node, xpath, required = true)
|
38
|
+
def string_recursive_value(node, xpath, required = true) # rubocop:disable Style/OptionalBooleanParameter
|
39
39
|
root = node_value(node, xpath)
|
40
40
|
if root.blank?
|
41
41
|
return nil unless required
|
@@ -65,7 +65,7 @@ module Aranha
|
|
65
65
|
s = ''
|
66
66
|
node.children.each do |child|
|
67
67
|
child_s = string_recursive(child)
|
68
|
-
s +=
|
68
|
+
s += " #{child_s}" if child_s.present?
|
69
69
|
end
|
70
70
|
sanitize_string(s)
|
71
71
|
end
|
@@ -34,5 +34,5 @@ end
|
|
34
34
|
|
35
35
|
require 'eac_ruby_utils/patch'
|
36
36
|
|
37
|
-
|
38
|
-
|
37
|
+
EacRubyUtils.patch(OfxParser::OfxParser, Aranha::Parsers::Patches::OfxParser::OfxParser)
|
38
|
+
EacRubyUtils.patch(OfxParser::Transaction, Aranha::Parsers::Patches::OfxParser::Transaction)
|
@@ -10,7 +10,7 @@ module Aranha
|
|
10
10
|
|
11
11
|
class << self
|
12
12
|
def valid_source?(source)
|
13
|
-
source.to_s.start_with?(SCHEME
|
13
|
+
source.to_s.start_with?("#{SCHEME}/", '/')
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
@@ -23,7 +23,7 @@ module Aranha
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def content
|
26
|
-
::File.
|
26
|
+
::File.read(source)
|
27
27
|
end
|
28
28
|
end
|
29
29
|
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils'
|
4
|
+
|
5
|
+
module Aranha
|
6
|
+
module Parsers
|
7
|
+
class SourceAddress
|
8
|
+
class HashHttpBase
|
9
|
+
class Headers
|
10
|
+
acts_as_immutable
|
11
|
+
immutable_accessor :value, type: :hash
|
12
|
+
|
13
|
+
# @!method to_h()
|
14
|
+
# @return [Hash]
|
15
|
+
delegate :to_h, to: :values
|
16
|
+
|
17
|
+
# @param other_values [Array, Hash]
|
18
|
+
# @return [Aranha::Parsers::SourceAddress::HashHttpBase::Headers]
|
19
|
+
def merge(other_values)
|
20
|
+
if other_values.is_a?(::Hash)
|
21
|
+
values(values.merge(other_values))
|
22
|
+
elsif other_values.is_a?(::Enumerable)
|
23
|
+
merge(other_values.to_h { |v| merge_array_item_to_h(v) })
|
24
|
+
else
|
25
|
+
raise ::ArgumentError,
|
26
|
+
"\"other_values\"=\"#{other_values}\" should be a Array or a Hash"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
# @param item [Array]
|
33
|
+
# @return [Array
|
34
|
+
def merge_array_item_to_h(item)
|
35
|
+
2.times.inject(Array(item)) do |a, e|
|
36
|
+
e >= a.count ? a + [nil] : a
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -26,6 +26,8 @@ module Aranha
|
|
26
26
|
DEFAULT_FOLLOW_REDIRECT = true
|
27
27
|
DEFAULT_HEADERS = {}.freeze
|
28
28
|
DEFAULT_PARAMS = {}.freeze
|
29
|
+
USER_AGENT_KEY = 'user-agent'
|
30
|
+
USER_AGENT_VALUE = 'aranha-parsers'
|
29
31
|
|
30
32
|
enable_simple_cache
|
31
33
|
|
@@ -73,12 +75,26 @@ module Aranha
|
|
73
75
|
|
74
76
|
# @return [EacEnvs::Http::Request]
|
75
77
|
def http_request
|
76
|
-
r =
|
77
|
-
r = headers.if_present(r) { |v| r.headers(v) }
|
78
|
+
r = initial_http_request
|
79
|
+
r = headers.if_present(r) { |v| r.headers(initial_headers.merge(v).to_h) }
|
78
80
|
r = body.if_present(r) { |v| r.body_data(v) }
|
79
81
|
r = r.follow_redirect(true) if follow_redirect?
|
80
82
|
r
|
81
83
|
end
|
84
|
+
|
85
|
+
# @return [Hash]
|
86
|
+
def initial_headers
|
87
|
+
::Aranha::Parsers::SourceAddress::HashHttpBase::Headers.new
|
88
|
+
.value(USER_AGENT_KEY, USER_AGENT_VALUE)
|
89
|
+
end
|
90
|
+
|
91
|
+
# @return [EacEnvs::Http::Request]
|
92
|
+
def initial_http_request
|
93
|
+
::EacEnvs::Http::Request.new.verb(self.class.http_method).url(url)
|
94
|
+
.headers(initial_headers.to_h)
|
95
|
+
end
|
96
|
+
|
97
|
+
require_sub __FILE__
|
82
98
|
end
|
83
99
|
end
|
84
100
|
end
|
@@ -40,6 +40,7 @@ module Aranha
|
|
40
40
|
|
41
41
|
def content
|
42
42
|
request = ::EacEnvs::Http::Request.new.url(url).retry(true).follow_redirect(true)
|
43
|
+
.header('user-agent', self.class.name)
|
43
44
|
request.response.body_str
|
44
45
|
rescue ::EacEnvs::Http::Error => e
|
45
46
|
raise ::Aranha::Parsers::SourceAddress::FetchContentError, e.message, request
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aranha-parsers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.22.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Esquilo Azul Company
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-11-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -33,7 +33,7 @@ dependencies:
|
|
33
33
|
version: '2.8'
|
34
34
|
- - ">="
|
35
35
|
- !ruby/object:Gem::Version
|
36
|
-
version: 2.8.
|
36
|
+
version: 2.8.5
|
37
37
|
type: :runtime
|
38
38
|
prerelease: false
|
39
39
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
version: '2.8'
|
44
44
|
- - ">="
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version: 2.8.
|
46
|
+
version: 2.8.5
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: eac_envs-http
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
@@ -51,6 +51,9 @@ dependencies:
|
|
51
51
|
- - "~>"
|
52
52
|
- !ruby/object:Gem::Version
|
53
53
|
version: '0.4'
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: 0.4.1
|
54
57
|
type: :runtime
|
55
58
|
prerelease: false
|
56
59
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -58,26 +61,29 @@ dependencies:
|
|
58
61
|
- - "~>"
|
59
62
|
- !ruby/object:Gem::Version
|
60
63
|
version: '0.4'
|
64
|
+
- - ">="
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: 0.4.1
|
61
67
|
- !ruby/object:Gem::Dependency
|
62
68
|
name: eac_ruby_utils
|
63
69
|
requirement: !ruby/object:Gem::Requirement
|
64
70
|
requirements:
|
65
71
|
- - "~>"
|
66
72
|
- !ruby/object:Gem::Version
|
67
|
-
version: '0.
|
73
|
+
version: '0.119'
|
68
74
|
- - ">="
|
69
75
|
- !ruby/object:Gem::Version
|
70
|
-
version: 0.
|
76
|
+
version: 0.119.2
|
71
77
|
type: :runtime
|
72
78
|
prerelease: false
|
73
79
|
version_requirements: !ruby/object:Gem::Requirement
|
74
80
|
requirements:
|
75
81
|
- - "~>"
|
76
82
|
- !ruby/object:Gem::Version
|
77
|
-
version: '0.
|
83
|
+
version: '0.119'
|
78
84
|
- - ">="
|
79
85
|
- !ruby/object:Gem::Version
|
80
|
-
version: 0.
|
86
|
+
version: 0.119.2
|
81
87
|
- !ruby/object:Gem::Dependency
|
82
88
|
name: nokogiri
|
83
89
|
requirement: !ruby/object:Gem::Requirement
|
@@ -87,7 +93,7 @@ dependencies:
|
|
87
93
|
version: '1.15'
|
88
94
|
- - ">="
|
89
95
|
- !ruby/object:Gem::Version
|
90
|
-
version: 1.15.
|
96
|
+
version: 1.15.4
|
91
97
|
type: :runtime
|
92
98
|
prerelease: false
|
93
99
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -97,7 +103,7 @@ dependencies:
|
|
97
103
|
version: '1.15'
|
98
104
|
- - ">="
|
99
105
|
- !ruby/object:Gem::Version
|
100
|
-
version: 1.15.
|
106
|
+
version: 1.15.4
|
101
107
|
- !ruby/object:Gem::Dependency
|
102
108
|
name: ofx-parser
|
103
109
|
requirement: !ruby/object:Gem::Requirement
|
@@ -118,14 +124,14 @@ dependencies:
|
|
118
124
|
requirements:
|
119
125
|
- - "~>"
|
120
126
|
- !ruby/object:Gem::Version
|
121
|
-
version: 0.
|
127
|
+
version: '0.9'
|
122
128
|
type: :development
|
123
129
|
prerelease: false
|
124
130
|
version_requirements: !ruby/object:Gem::Requirement
|
125
131
|
requirements:
|
126
132
|
- - "~>"
|
127
133
|
- !ruby/object:Gem::Version
|
128
|
-
version: 0.
|
134
|
+
version: '0.9'
|
129
135
|
description:
|
130
136
|
email:
|
131
137
|
executables: []
|
@@ -150,19 +156,14 @@ files:
|
|
150
156
|
- lib/aranha/parsers/json/base.rb
|
151
157
|
- lib/aranha/parsers/patches.rb
|
152
158
|
- lib/aranha/parsers/patches/ofx_parser.rb
|
153
|
-
- lib/aranha/parsers/rspec.rb
|
154
|
-
- lib/aranha/parsers/rspec/setup.rb
|
155
|
-
- lib/aranha/parsers/rspec/shared_examples/source_target_fixtures.rb
|
156
|
-
- lib/aranha/parsers/rspec/source_target_fixtures_controller.rb
|
157
159
|
- lib/aranha/parsers/source_address.rb
|
158
160
|
- lib/aranha/parsers/source_address/fetch_content_error.rb
|
159
161
|
- lib/aranha/parsers/source_address/file.rb
|
160
162
|
- lib/aranha/parsers/source_address/hash_http_base.rb
|
163
|
+
- lib/aranha/parsers/source_address/hash_http_base/headers.rb
|
161
164
|
- lib/aranha/parsers/source_address/hash_http_get.rb
|
162
165
|
- lib/aranha/parsers/source_address/hash_http_post.rb
|
163
166
|
- lib/aranha/parsers/source_address/http_get.rb
|
164
|
-
- lib/aranha/parsers/source_target_fixtures.rb
|
165
|
-
- lib/aranha/parsers/source_target_fixtures/source_target_file.rb
|
166
167
|
- lib/aranha/parsers/version.rb
|
167
168
|
homepage:
|
168
169
|
licenses: []
|
@@ -175,7 +176,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
175
176
|
requirements:
|
176
177
|
- - ">="
|
177
178
|
- !ruby/object:Gem::Version
|
178
|
-
version: '
|
179
|
+
version: '2.7'
|
179
180
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
180
181
|
requirements:
|
181
182
|
- - ">="
|
@@ -1,15 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'eac_ruby_utils/core_ext'
|
4
|
-
|
5
|
-
module Aranha
|
6
|
-
module Parsers
|
7
|
-
module Rspec
|
8
|
-
module Setup
|
9
|
-
def self.extended(_setup_obj)
|
10
|
-
require 'aranha/parsers/rspec/shared_examples/source_target_fixtures'
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
@@ -1,74 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'aranha/parsers/rspec/source_target_fixtures_controller'
|
4
|
-
require 'aranha/parsers/source_target_fixtures'
|
5
|
-
require 'yaml'
|
6
|
-
|
7
|
-
RSpec.shared_examples 'source_target_fixtures' do |spec_file| # rubocop:disable Metrics/BlockLength
|
8
|
-
fixtures_controller = ::Aranha::Parsers::Rspec::SourceTargetFixturesController
|
9
|
-
.new(self, spec_file)
|
10
|
-
|
11
|
-
let(:fixtures_controller) { fixtures_controller }
|
12
|
-
let(:spec_file) { spec_file }
|
13
|
-
|
14
|
-
it 'fixtures directory should exist' do
|
15
|
-
expect(::File.directory?(fixtures_controller.fixtures_dir)).to be true
|
16
|
-
end
|
17
|
-
|
18
|
-
context 'with fixtures directory' do
|
19
|
-
it 'has at least one file' do
|
20
|
-
expect(source_target_fixtures.source_target_files.count).to be > 0 # rubocop:disable Style/NumericPredicate
|
21
|
-
end
|
22
|
-
|
23
|
-
fixtures_controller.source_target_fixtures.source_target_files.each do |st|
|
24
|
-
context "when source file is \"#{::File.basename(st.source)}\"" do
|
25
|
-
if fixtures_controller.write_target_fixtures?
|
26
|
-
it 'writes target data' do
|
27
|
-
sd = sort_results(source_data(st.source))
|
28
|
-
basename = ::Aranha::Parsers::SourceTargetFixtures.source_target_basename(st.source)
|
29
|
-
target_file = File.expand_path("../#{basename}.target#{target_file_extname}", st.source)
|
30
|
-
File.write(target_file, target_content(sd))
|
31
|
-
end
|
32
|
-
else
|
33
|
-
it 'parses data' do
|
34
|
-
assert_source_target_complete(st)
|
35
|
-
sd = source_data(st.source)
|
36
|
-
td = target_data(st.target)
|
37
|
-
expect(sort_results(sd)).to eq(sort_results(td))
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
delegate :source_target_fixtures, to: :fixtures_controller
|
45
|
-
|
46
|
-
def assert_source_target_complete(source_target)
|
47
|
-
expect(source_target.source).to(be_truthy, "Source not found (Target: #{source_target.target})")
|
48
|
-
expect(source_target.target).to(be_truthy, "Target not found (Source: #{source_target.source})")
|
49
|
-
end
|
50
|
-
|
51
|
-
def source_data(source_file)
|
52
|
-
instance = described_class.new(source_file)
|
53
|
-
return instance.data if instance.respond_to?(:data)
|
54
|
-
|
55
|
-
raise "#{instance} has no \"data\" method. You need to implement \"#{instance}.data\" or " \
|
56
|
-
"\"#{self}.source_data(source_file)\""
|
57
|
-
end
|
58
|
-
|
59
|
-
def sort_results(results)
|
60
|
-
results
|
61
|
-
end
|
62
|
-
|
63
|
-
def target_data(target_file)
|
64
|
-
::YAML.load_file(target_file)
|
65
|
-
end
|
66
|
-
|
67
|
-
def target_content(data)
|
68
|
-
data.to_yaml
|
69
|
-
end
|
70
|
-
|
71
|
-
def target_file_extname
|
72
|
-
'.yaml'
|
73
|
-
end
|
74
|
-
end
|
@@ -1,39 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'eac_ruby_utils/core_ext'
|
4
|
-
|
5
|
-
module Aranha
|
6
|
-
module Parsers
|
7
|
-
module Rspec
|
8
|
-
class SourceTargetFixturesController
|
9
|
-
enable_simple_cache
|
10
|
-
common_constructor :example, :spec_file
|
11
|
-
|
12
|
-
def default_fixtures_dir
|
13
|
-
::File.join(
|
14
|
-
::File.dirname(spec_file),
|
15
|
-
::File.basename(spec_file, '.*') + '_files'
|
16
|
-
)
|
17
|
-
end
|
18
|
-
|
19
|
-
def fixtures_dir
|
20
|
-
if example.respond_to?(:fixtures_dir)
|
21
|
-
example.fixtures_dir
|
22
|
-
else
|
23
|
-
default_fixtures_dir
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
def write_target_fixtures?
|
28
|
-
ENV['WRITE_TARGET_FIXTURES'].to_bool
|
29
|
-
end
|
30
|
-
|
31
|
-
private
|
32
|
-
|
33
|
-
def source_target_fixtures_uncached
|
34
|
-
::Aranha::Parsers::SourceTargetFixtures.new(fixtures_dir)
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
data/lib/aranha/parsers/rspec.rb
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Aranha
|
4
|
-
module Parsers
|
5
|
-
class SourceTargetFixtures
|
6
|
-
class SourceTargetFile
|
7
|
-
common_constructor :owner, :basename
|
8
|
-
|
9
|
-
def source
|
10
|
-
owner.source_file(basename)
|
11
|
-
end
|
12
|
-
|
13
|
-
def target
|
14
|
-
owner.target_file(basename)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
@@ -1,78 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'active_support/core_ext/object'
|
4
|
-
require 'active_support/core_ext/string'
|
5
|
-
|
6
|
-
module Aranha
|
7
|
-
module Parsers
|
8
|
-
# Lists pairs of source/target files in a directory.
|
9
|
-
class SourceTargetFixtures
|
10
|
-
require_sub __FILE__
|
11
|
-
|
12
|
-
class << self
|
13
|
-
def source_target_basename(file)
|
14
|
-
m = /^(.+)\.(?:source|target)(?:\..+)?$/.match(File.basename(file))
|
15
|
-
m ? m[1] : nil
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
attr_reader :fixtures_directory
|
20
|
-
|
21
|
-
def initialize(fixtures_directory)
|
22
|
-
@fixtures_directory = fixtures_directory
|
23
|
-
end
|
24
|
-
|
25
|
-
def source_target_files
|
26
|
-
sources_targets_basenames.map do |basename|
|
27
|
-
::Aranha::Parsers::SourceTargetFixtures::SourceTargetFile.new(self, basename)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
def source_files
|
32
|
-
r = []
|
33
|
-
source_target_files.each do |st|
|
34
|
-
r << st.source if st.source
|
35
|
-
end
|
36
|
-
r
|
37
|
-
end
|
38
|
-
|
39
|
-
def target_files
|
40
|
-
r = []
|
41
|
-
source_target_files.each do |st|
|
42
|
-
r << st.target if st.target
|
43
|
-
end
|
44
|
-
r
|
45
|
-
end
|
46
|
-
|
47
|
-
def target_file(basename)
|
48
|
-
fixture_file(basename, 'target')
|
49
|
-
end
|
50
|
-
|
51
|
-
def source_file(basename)
|
52
|
-
fixture_file(basename, 'source')
|
53
|
-
end
|
54
|
-
|
55
|
-
private
|
56
|
-
|
57
|
-
def fixture_file(basename, suffix)
|
58
|
-
prefix = "#{basename}.#{suffix}"
|
59
|
-
Dir.foreach(fixtures_directory) do |item|
|
60
|
-
next if %w[. ..].include?(item)
|
61
|
-
return File.expand_path(item, fixtures_directory) if item.starts_with?(prefix)
|
62
|
-
end
|
63
|
-
nil
|
64
|
-
end
|
65
|
-
|
66
|
-
def sources_targets_basenames
|
67
|
-
basenames = Set.new
|
68
|
-
Dir.foreach(fixtures_directory) do |item|
|
69
|
-
next if %w[. ..].include?(item)
|
70
|
-
|
71
|
-
b = self.class.source_target_basename(item)
|
72
|
-
basenames << b if b.present?
|
73
|
-
end
|
74
|
-
basenames
|
75
|
-
end
|
76
|
-
end
|
77
|
-
end
|
78
|
-
end
|