aranha-parsers 0.5.0 → 0.7.2

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
  SHA256:
3
- metadata.gz: 990eaaf39db15ed3c74d22039dd4c10ef005a5f46d8e6325087a7517f9795ae9
4
- data.tar.gz: 895b5ab2673ff4663576e6a41bfaba3fe96d324df59617e8cfc4f9f116929af2
3
+ metadata.gz: 291b1da2b4559d999dc1534f79ed111bcfa83f3d6c79e62a049a6eec74443163
4
+ data.tar.gz: 65f36ed9cee9d1230f9746da5fc6c2e2a3d3c89cf991257ba27aa0451115a9c1
5
5
  SHA512:
6
- metadata.gz: 1387956a1035e8984ec724ddff13933b567ca1a8155eec4b7d61c52374d0d9ec398966e146bb46356d57b68cab5926e4ce7a610aed52dac77f5a87eeba5b0d55
7
- data.tar.gz: 34f475e75e54677aad15a5650f112acf72a16e50dc4729e8226705181c82d4dc813cc8dbf79493d0a184f4039d947a943cc91bd62e830f797153021194809594
6
+ metadata.gz: 1e0c6c83985297d6ae1ea39be8471d477982f379c3176c057275f7c758ec3d05d9452110a506e78cb165cff84a639fac774c66b5e5714b606e226f76ad7f604c
7
+ data.tar.gz: 34b367289ee0c693bbf77f47c6fa000f61791e7a9f0e88e21f5f7fb1bcb2bb6ded0dbd3b0603c069ec0c881e3d021281b3793410025262770bacd03eff2dd306
@@ -3,10 +3,26 @@
3
3
  require 'open-uri'
4
4
  require 'fileutils'
5
5
  require 'aranha/parsers/source_address'
6
+ require 'eac_ruby_utils/fs/temp'
6
7
 
7
8
  module Aranha
8
9
  module Parsers
9
10
  class Base
11
+ class << self
12
+ def from_content(content)
13
+ ::EacRubyUtils::Fs::Temp.on_file do |path|
14
+ path.write(content)
15
+ r = new(path.to_path)
16
+ r.content
17
+ r
18
+ end
19
+ end
20
+
21
+ def parse_content(content)
22
+ from_content(content).data
23
+ end
24
+ end
25
+
10
26
  LOG_DIR_ENVVAR = 'ARANHA_PARSERS_LOG_DIR'
11
27
 
12
28
  attr_reader :source_address
@@ -19,9 +35,11 @@ module Aranha
19
35
  delegate :url, to: :source_address
20
36
 
21
37
  def content
22
- s = source_address.content
23
- log_content(s)
24
- s
38
+ @content ||= begin
39
+ s = source_address.content
40
+ log_content(s)
41
+ s
42
+ end
25
43
  end
26
44
 
27
45
  private
@@ -1,13 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'active_support/core_ext/module/delegation'
4
- require 'eac_ruby_utils/require_sub'
4
+ require 'eac_ruby_utils/core_ext'
5
5
  require 'yaml'
6
6
 
7
7
  module Aranha
8
8
  module Parsers
9
9
  class SourceAddress
10
- ::EacRubyUtils.require_sub __FILE__
10
+ require_sub __FILE__
11
11
 
12
12
  class << self
13
13
  SUBS = [
@@ -35,12 +35,8 @@ module Aranha
35
35
  end
36
36
  end
37
37
 
38
- attr_reader :sub
39
-
40
- def initialize(source)
41
- @sub = self.class.detect_sub(source)
42
- end
43
-
38
+ enable_simple_cache
39
+ common_constructor :source
44
40
  delegate :content, :url, to: :sub
45
41
 
46
42
  def to_s
@@ -50,6 +46,12 @@ module Aranha
50
46
  def serialize
51
47
  sub.serialize.strip + "\n"
52
48
  end
49
+
50
+ private
51
+
52
+ def sub_uncached
53
+ self.class.detect_sub(source)
54
+ end
53
55
  end
54
56
  end
55
57
  end
@@ -20,8 +20,8 @@ RSpec.shared_examples 'source_target_fixtures' do |spec_file| # rubocop:disable
20
20
  source_target_fixtures.source_files.each do |source_file|
21
21
  sd = sort_results(source_data(source_file))
22
22
  basename = ::Aranha::Parsers::SourceTargetFixtures.source_target_basename(source_file)
23
- target_file = File.expand_path("../#{basename}.target.yaml", source_file)
24
- File.write(target_file, sd.to_yaml)
23
+ target_file = File.expand_path("../#{basename}.target#{target_file_extname}", source_file)
24
+ File.write(target_file, target_content(sd))
25
25
  end
26
26
  end
27
27
  else
@@ -46,7 +46,11 @@ RSpec.shared_examples 'source_target_fixtures' do |spec_file| # rubocop:disable
46
46
  end
47
47
 
48
48
  def source_data(source_file)
49
- described_class.new(source_file).data
49
+ instance = described_class.new(source_file)
50
+ return instance.data if instance.respond_to?(:data)
51
+
52
+ raise "#{instance} has no \"data\" method. You need to implement \"#{instance}.data\" or " \
53
+ "\"#{self}.source_data(source_file)\""
50
54
  end
51
55
 
52
56
  def fixtures_dir
@@ -63,4 +67,12 @@ RSpec.shared_examples 'source_target_fixtures' do |spec_file| # rubocop:disable
63
67
  def target_data(target_file)
64
68
  ::YAML.load_file(target_file)
65
69
  end
70
+
71
+ def target_content(data)
72
+ data.to_yaml
73
+ end
74
+
75
+ def target_file_extname
76
+ '.yaml'
77
+ end
66
78
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Aranha
4
4
  module Parsers
5
- VERSION = '0.5.0'
5
+ VERSION = '0.7.2'
6
6
  end
7
7
  end
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.5.0
4
+ version: 0.7.2
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: 2020-05-29 00:00:00.000000000 Z
11
+ date: 2021-07-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -112,14 +112,14 @@ dependencies:
112
112
  requirements:
113
113
  - - "~>"
114
114
  - !ruby/object:Gem::Version
115
- version: '0.1'
115
+ version: '0.2'
116
116
  type: :development
117
117
  prerelease: false
118
118
  version_requirements: !ruby/object:Gem::Requirement
119
119
  requirements:
120
120
  - - "~>"
121
121
  - !ruby/object:Gem::Version
122
- version: '0.1'
122
+ version: '0.2'
123
123
  description:
124
124
  email:
125
125
  executables: []
@@ -165,8 +165,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
165
165
  - !ruby/object:Gem::Version
166
166
  version: '0'
167
167
  requirements: []
168
- rubyforge_project:
169
- rubygems_version: 2.7.7
168
+ rubygems_version: 3.0.9
170
169
  signing_key:
171
170
  specification_version: 4
172
171
  summary: Parsers' utilities for Ruby.