ehbrs_ruby_utils 0.48.2 → 0.49.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ed670612103f11e1141e4d507ab0ad09c1223b985d396681b3cf1f03cb07c32e
4
- data.tar.gz: 614edae88fc727fededadcdb0936cba1b49a712191be4468b5c81464a470e6f0
3
+ metadata.gz: 6b3e1ad194bf9847d2c795bc0f3afc830d2210731ee8cb90b5c51dd65c7aa89c
4
+ data.tar.gz: c192269bc54cddb6fefd89dee7caca04b48e9c30a5678c5d230870237efb9923
5
5
  SHA512:
6
- metadata.gz: 0fed84deb139e58aad1451dbc988988dd77210cf08e2eef30e9830eccac29792061276d7dec7b3e3155e46001700e872c84e6f6f6d4e631a735478afc3923da9
7
- data.tar.gz: cd04c9f54e8c86f1ef335948d268245a9559c7e165bc77f6403052ece3c5a9ddafe690861ce9439a195275ffba42514ff64cde912d842a25e2e07b86bc2ca859
6
+ metadata.gz: d1f6ca93fc896974866819f89ff79e80f54bf51e01c68f591ab58b579c2b8f3f22f4f5a64ad2b3d65393946897fd9409a3e64081b650a7a1d351e6b9ade74ca2
7
+ data.tar.gz: 90178a31bcfab50461cf7208844ce373ea9601a626642a4ed6466fedb21c5edebd46e4c9e4f199f3120b9e8d555e0de0b509f8a87f7ab4d1297010257c70e146
@@ -0,0 +1,91 @@
1
+ # frozen_string_literal: true
2
+
3
+ module EhbrsRubyUtils
4
+ module Airbnb
5
+ module Parsers
6
+ class Page < ::Aranha::Parsers::Html::ItemList
7
+ class << self
8
+ # @param value [String]
9
+ # @param suffixes [Enumerable<String>]
10
+ # @return [String]
11
+ def testid_xpath(value, *suffixes)
12
+ ([".//*[@data-testid='#{value}']"] + suffixes).join('/')
13
+ end
14
+ end
15
+
16
+ DECLARED_COUNT_XPATH = '//h1/span[1]/text()'
17
+ ITEMS_XPATH = '//*[@data-xray-jira-component="Guest: Listing Cards"]/div'
18
+ NEXT_PAGE_HREF_XPATH = '//a[@aria-label="Próximo"]/@href'
19
+ REVIEW_STRUCT = ::Struct.new(:review_score, :review_count)
20
+ TYPE_ADDRESS_STRUCT = ::Struct.new(:type, :address)
21
+ REVIEW_PARSER = /\A(\S+)\s*\((\d+)\)\z/.to_parser do |m|
22
+ {
23
+ review_score: m[1].gsub(',', '.').to_f, review_count: m[2].to_i
24
+ }
25
+ end
26
+ REVIEW_TEXTS_ZERO = ['Novo', ''].freeze
27
+
28
+ field :name, :string, './/meta[@itemprop="name"]/@content'
29
+ field :href, :string, './/meta[@itemprop="url"]/@content'
30
+ field :type_address, :string, testid_xpath('listing-card-title', 'text()')
31
+ field :review_text, :string,
32
+ './/*[@inert="true"]/../span/span[@aria-hidden="true"]/text()'
33
+ field :price1, :decimal_comma_optional,
34
+ './/*[@style="--pricing-guest-primary-line-unit-price-text-decoration: none;"]'
35
+ field :price2, :decimal_comma_optional,
36
+ '(.//div[contains(@style, "--pricing-guest-display-price-alignment")]//button)[2]' \
37
+ '/span[1]/text()'
38
+
39
+ def data
40
+ %i[accommodations declared_count next_page_href].inject({}) do |a, e|
41
+ a.merge({ e => send(e) })
42
+ end
43
+ end
44
+
45
+ # @return [Enumerable<Hash>]
46
+ def accommodations
47
+ items_data.map do |e|
48
+ e.merge(parse_review(e.fetch(:review_text)))
49
+ .merge(parse_type_address(e.fetch(:type_address)))
50
+ .merge(price: build_price(e.fetch(:price1), e.fetch(:price2)))
51
+ end
52
+ end
53
+
54
+ # @return [Integer]
55
+ def declared_count
56
+ node_parser.integer_optional_value(nokogiri, DECLARED_COUNT_XPATH)
57
+ end
58
+
59
+ # @return [String]
60
+ def items_xpath
61
+ ITEMS_XPATH
62
+ end
63
+
64
+ # @return [String]
65
+ def next_page_href
66
+ nokogiri.at_xpath(NEXT_PAGE_HREF_XPATH).if_present(&:text)
67
+ end
68
+
69
+ # @param prices [Enumerable<Float, nil>]
70
+ # @return [Float]
71
+ def build_price(*prices)
72
+ prices.reject(&:blank?).min
73
+ end
74
+
75
+ # @param text [String]
76
+ # @return [Hash]
77
+ def parse_review(text)
78
+ return REVIEW_STRUCT.new(0, 0).to_h if REVIEW_TEXTS_ZERO.include?(text)
79
+
80
+ REVIEW_PARSER.parse!(text).to_h
81
+ end
82
+
83
+ # @param text [String]
84
+ # @return [Hash]
85
+ def parse_type_address(text)
86
+ TYPE_ADDRESS_STRUCT.new(*text.split('⋅').map(&:strip)).to_h
87
+ end
88
+ end
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ module EhbrsRubyUtils
4
+ module Airbnb
5
+ module Processors
6
+ class List
7
+ enable_memoized
8
+ common_constructor :url
9
+
10
+ # @return [Enumerable<Hash>]
11
+ def accommodations
12
+ current_url = url
13
+ index = 0
14
+ r = []
15
+ while current_url.present?
16
+ accommodations, current_url, index = page_accommodations(current_url, index)
17
+ r += accommodations
18
+ end
19
+ r
20
+ end
21
+
22
+ # @return [Integer]
23
+ def declared_count
24
+ @declared_count || raise('@declared_count is blank')
25
+ end
26
+
27
+ protected
28
+
29
+ # @param current_url [Addressable::URI]
30
+ # @param index [Integer]
31
+ # @return [Array]
32
+ def page_accommodations(current_url, index)
33
+ page = ::EhbrsRubyUtils::Airbnb::Processors::Page.new(current_url, session, index)
34
+ @declared_count ||= page.declared_count
35
+ [page.accommodations, page.next_page_url, index + 1]
36
+ end
37
+
38
+ # @return [Aranha::Selenium::Session]
39
+ memoize def session
40
+ ::Aranha::Selenium::Session.new(driver: :chrome)
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ module EhbrsRubyUtils
4
+ module Airbnb
5
+ module Processors
6
+ class Page
7
+ class BuildAccommodation
8
+ acts_as_instance_method
9
+ common_constructor :list, :data
10
+
11
+ def result
12
+ %i[link].inject(data) do |a, e|
13
+ a.merge(e => send("#{e}_value"))
14
+ end
15
+ end
16
+
17
+ # @return [String]
18
+ def link_value
19
+ "=HYPERLINK(\"#{url_value}\";\"#{data.fetch(:name)}\")"
20
+ end
21
+
22
+ # @return [Addressable::URI]
23
+ def url_value
24
+ list.url + data.fetch(:href)
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module EhbrsRubyUtils
4
+ module Airbnb
5
+ module Processors
6
+ class Page < ::EhbrsRubyUtils::Aranha::AccommodationsProcessor
7
+ common_constructor :url, :session, :index, super_args: -> { [url] }
8
+
9
+ # @return [Boolean]
10
+ def all_data_loaded?
11
+ parser.data.fetch(:accommodations).all? { |e| e.fetch(:name).present? }
12
+ end
13
+
14
+ # @return [Addressable::URI]
15
+ def next_page_url
16
+ data.fetch(:next_page_href).if_present do |v|
17
+ url + v
18
+ end
19
+ end
20
+
21
+ require_sub __FILE__, require_mode: :kernel
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,70 @@
1
+ # frozen_string_literal: true
2
+
3
+ module EhbrsRubyUtils
4
+ module Aranha
5
+ class AccommodationsProcessor
6
+ acts_as_abstract
7
+ enable_memoized
8
+ common_constructor :url
9
+
10
+ SCROLL_DOWN_STEP = 500
11
+
12
+ # @return [Array]
13
+ def accommodations
14
+ data.fetch(:accommodations).map { |a| build_accommodation(a) }
15
+ end
16
+
17
+ # @return [Integer]
18
+ def declared_count
19
+ data.fetch(:declared_count)
20
+ end
21
+
22
+ protected
23
+
24
+ # @return [Boolean]
25
+ def all_data_loaded?
26
+ raise_abstract_method __method__
27
+ end
28
+
29
+ # @param accommodation_data [Hash]
30
+ # @return [Hash]
31
+ def build_accommodation(_accommodation_data)
32
+ raise_abstract_method __method__
33
+ end
34
+
35
+ def data
36
+ @data ||= begin
37
+ session.navigate.to url
38
+ session.wait(5.minutes).until do
39
+ scroll_down
40
+ all_data_loaded?
41
+ end
42
+ parser.data
43
+ end
44
+ end
45
+
46
+ # @return [Object]
47
+ def parser
48
+ parser_class.from_string(session.current_source)
49
+ end
50
+
51
+ # @return [Class]
52
+ def parser_class
53
+ [self.class.module_parent.module_parent.name, 'Parsers', self.class.name.demodulize]
54
+ .join('::').constantize
55
+ end
56
+
57
+ # @return [Aranha::Selenium::Session]
58
+ def session
59
+ raise_abstract_method __method__
60
+ end
61
+
62
+ # @return [void]
63
+ def scroll_down
64
+ session.scroll_down_by(SCROLL_DOWN_STEP)
65
+ end
66
+
67
+ require_sub __FILE__, require_mode: :kernel
68
+ end
69
+ end
70
+ end
@@ -7,7 +7,7 @@ module EhbrsRubyUtils
7
7
  DEFAULT_STATUS = 'asyncplay'
8
8
  ID_PARSER = /table=(\d+)/.to_parser { |m| m[1].to_i }
9
9
  ITEMS_XPATH = '//*[@id = "section-play"]//a[contains(@href, "table=")]'
10
- STATUS_CLASS_PATTERN = /\Agametable_status_(.+)\z/.freeze
10
+ STATUS_CLASS_PATTERN = /\Agametable_status_(.+)\z/
11
11
  STATUS_CLASS_PARSER = STATUS_CLASS_PATTERN.to_parser { |m| m[1] }
12
12
  TABLE_COUNT_XPATH =
13
13
  '//*[@id = "section-play"]/h1/span[contains(@class, "font-normal")]/span/text()'
@@ -11,7 +11,7 @@ module EhbrsRubyUtils
11
11
  'players_at_table' => ::EhbrsRubyUtils::Bga::Parsers::Table::ActivePlayers
12
12
  }.freeze
13
13
  PLAYERS_IDS_XPATH = PLAYERS_IDS.keys.map { |id| "@id = \"#{id}\"" }.join(' or ')
14
- PLAYERS_XPATH = ".//*[(#{PLAYERS_IDS_XPATH}) and count(./*) > 0]"
14
+ PLAYERS_XPATH = ".//*[(#{PLAYERS_IDS_XPATH}) and count(./*) > 0]".freeze
15
15
 
16
16
  field :game_code, :string, '//meta[@property="og:image"]/@content'
17
17
  field :game_name, :string, './/*[@id = "table_name"]/text()'
@@ -9,7 +9,7 @@ module EhbrsRubyUtils
9
9
 
10
10
  LINE_SEPARATOR = "\n"
11
11
  OPTION_SEPARATOR = LINE_SEPARATOR
12
- SECTION_SEPARATOR = "#{LINE_SEPARATOR}#{LINE_SEPARATOR}"
12
+ SECTION_SEPARATOR = "#{LINE_SEPARATOR}#{LINE_SEPARATOR}".freeze
13
13
 
14
14
  # @param content [String, Enumerable]
15
15
  # @return [String]
@@ -3,28 +3,14 @@
3
3
  module EhbrsRubyUtils
4
4
  module Booking
5
5
  module Processors
6
- class List
7
- enable_simple_cache
8
- common_constructor :url
9
-
6
+ class List < ::EhbrsRubyUtils::Aranha::AccommodationsProcessor
10
7
  CLOSE_BANNER_XPATH = '//button[@aria-label = "Ignorar informações de login."]'
11
8
  MORE_RESULTS_XPATH = '//*[text() = "Ver mais resultados"]'
12
- SCROLL_DOWN_STEP = 500
13
-
14
- # @return [Array]
15
- def accommodations
16
- data.fetch(:accommodations).map { |a| build_accommodation(a) }
17
- end
18
-
19
- # @return [Integer]
20
- def declared_count
21
- data.fetch(:declared_count)
22
- end
23
9
 
24
10
  protected
25
11
 
26
12
  # @return [Boolean]
27
- def all_accommodations_reached?
13
+ def all_data_loaded?
28
14
  p = parser
29
15
  p.data.fetch(:declared_count).if_present(false) do |v|
30
16
  p.data.fetch(:accommodations).count >= v
@@ -44,35 +30,23 @@ module EhbrsRubyUtils
44
30
  session.element(xpath: CLOSE_BANNER_XPATH)
45
31
  end
46
32
 
47
- def data_uncached
48
- session.navigate.to url
49
- session.wait(5.minutes).until do
50
- close_banner
51
- click_more_results
52
- scroll_down
53
- all_accommodations_reached?
54
- end
55
- parser.data
56
- end
57
-
58
33
  # @return [Aranha::Selenium::Session::Element]
59
34
  def more_results_button
60
35
  session.element(xpath: MORE_RESULTS_XPATH)
61
36
  end
62
37
 
63
- def parser
64
- ::EhbrsRubyUtils::Booking::Parsers::List.from_string(session.current_source)
38
+ # @return [void]
39
+ def scroll_down
40
+ close_banner
41
+ click_more_results
42
+ super
65
43
  end
66
44
 
67
45
  # @return [Aranha::Selenium::Session]
68
- def session_uncached
46
+ memoize def session
69
47
  ::Aranha::Selenium::Session.new(driver: :chrome)
70
48
  end
71
49
 
72
- def scroll_down
73
- session.scroll_down_by(SCROLL_DOWN_STEP)
74
- end
75
-
76
50
  require_sub __FILE__, require_mode: :kernel
77
51
  end
78
52
  end
@@ -4,10 +4,10 @@ module EhbrsRubyUtils
4
4
  module CookingBook
5
5
  class Recipe
6
6
  class Measure
7
- FLOAT_PATTERN = /\d+(?:\.\d+)?/.freeze
8
- FRACTION_PATTERN = %r{(#{FLOAT_PATTERN})(?:\s*/\s*(#{FLOAT_PATTERN}))?}.freeze
9
- QUANTITY_UNIT_PATTERN = /\A#{FRACTION_PATTERN}(?:\s*(\S+))?\z/.freeze
10
- VARIABLE_PATTERN = /\A~\z/.freeze
7
+ FLOAT_PATTERN = /\d+(?:\.\d+)?/
8
+ FRACTION_PATTERN = %r{(#{FLOAT_PATTERN})(?:\s*/\s*(#{FLOAT_PATTERN}))?}
9
+ QUANTITY_UNIT_PATTERN = /\A#{FRACTION_PATTERN}(?:\s*(\S+))?\z/
10
+ VARIABLE_PATTERN = /\A~\z/
11
11
  VARIABLE_TEXT = 'a gosto'
12
12
 
13
13
  class << self
@@ -13,8 +13,8 @@ module EhbrsRubyUtils
13
13
  self.options = self.class.lists.option.hash_keys_validate!(options)
14
14
  end
15
15
 
16
- def build(target_dir, &directory_target_basename)
17
- ::EhbrsRubyUtils::Fs::Selected::Build.new(self, target_dir, &directory_target_basename)
16
+ def build(target_dir, &)
17
+ ::EhbrsRubyUtils::Fs::Selected::Build.new(self, target_dir, &)
18
18
  end
19
19
 
20
20
  def filename
@@ -33,8 +33,8 @@ module EhbrsRubyUtils
33
33
  end
34
34
 
35
35
  # @return [void]
36
- def mudslide_run(*args)
37
- r = ::EhbrsRubyUtils::Executables.mudslide.command(*args).execute
36
+ def mudslide_run(*)
37
+ r = ::EhbrsRubyUtils::Executables.mudslide.command(*).execute
38
38
  raise_mudslide_run_error r, 'exit code not zero ' unless r.fetch(:exit_code).zero?
39
39
  raise_mudslide_run_error r, 'blank stdout' if r.fetch(:stdout).blank?
40
40
  raise_mudslide_run_error r, 'qrcode shown' if r.fetch(:stdout).include?('▄▄▄▄▄▄▄▄▄')
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EhbrsRubyUtils
4
- VERSION = '0.48.2'
4
+ VERSION = '0.49.0'
5
5
  end
@@ -4,7 +4,7 @@ module EhbrsRubyUtils
4
4
  module Vg
5
5
  module Ps2
6
6
  class IsoFile < ::EhbrsRubyUtils::Fs::Iso9660File
7
- CODE_PATTERN = /[a-zA-Z]{4}_[0-9]{3}\.[0-9]{2}/.freeze
7
+ CODE_PATTERN = /[a-zA-Z]{4}_[0-9]{3}\.[0-9]{2}/
8
8
  CODE_PARSER = CODE_PATTERN.to_parser(&:to_s)
9
9
 
10
10
  # @return [String]
@@ -8,7 +8,7 @@ module EhbrsRubyUtils
8
8
  class GameFile < ::Pathname
9
9
  enable_simple_cache
10
10
 
11
- DISC_NUMBER_PATTERN = /disc.?(\d)/i.freeze
11
+ DISC_NUMBER_PATTERN = /disc.?(\d)/i
12
12
 
13
13
  FORMAT = ::EacRubyUtils::CustomFormat.new(
14
14
  b: :basename,
@@ -6,7 +6,7 @@ module EhbrsRubyUtils
6
6
  module Wit
7
7
  class ImageFormat
8
8
  class << self
9
- SECTION_NAME_PATTERN = /\A#{::Regexp.quote('IMAGE-FORMAT:')}(.+)\z/.freeze
9
+ SECTION_NAME_PATTERN = /\A#{::Regexp.quote('IMAGE-FORMAT:')}(.+)\z/
10
10
 
11
11
  enable_simple_cache
12
12
 
@@ -13,7 +13,7 @@ module EhbrsRubyUtils
13
13
  # ISO/WII & Wii
14
14
  # WBFS/WII & Wii
15
15
  # ISO/GC & GameCube
16
- FILE_DISC_TYPE_PATTERN = %r{\A(\S+)/(\S+)\s+(?:\(([^)]+)\)\s+)?&\s+(\S+)\z}.freeze
16
+ FILE_DISC_TYPE_PATTERN = %r{\A(\S+)/(\S+)\s+(?:\(([^)]+)\)\s+)?&\s+(\S+)\z}
17
17
 
18
18
  private
19
19
 
@@ -8,7 +8,7 @@ module EhbrsRubyUtils
8
8
  module Wit
9
9
  module Parsers
10
10
  class Info
11
- SECTION_NAME_PATTERN = /\A#{::Regexp.quote('IMAGE-FORMAT:')}(.+)\z/.freeze
11
+ SECTION_NAME_PATTERN = /\A#{::Regexp.quote('IMAGE-FORMAT:')}(.+)\z/
12
12
 
13
13
  enable_simple_cache
14
14
  common_constructor :output
@@ -5,7 +5,7 @@ module EhbrsRubyUtils
5
5
  module Wii
6
6
  module Wit
7
7
  class Path
8
- WIT_PATH_PATTERN = /\A(?:([a-z0-9]+):)?(.+)\z/i.freeze
8
+ WIT_PATH_PATTERN = /\A(?:([a-z0-9]+):)?(.+)\z/i
9
9
 
10
10
  class << self
11
11
  def assert(source)
@@ -52,8 +52,8 @@ module EhbrsRubyUtils
52
52
  checks.reject(&:passed?).map { |c| c.check.fix }.compact_blank
53
53
  end
54
54
 
55
- def pad_speaker(&block)
56
- ::EacRubyUtils::Speaker.context.on(::EacCli::Speaker.new(err_line_prefix: ' '), &block)
55
+ def pad_speaker(&)
56
+ ::EacRubyUtils::Speaker.context.on(::EacCli::Speaker.new(err_line_prefix: ' '), &)
57
57
  end
58
58
 
59
59
  def new_padded_cli_speaker
@@ -14,9 +14,9 @@ module EhbrsRubyUtils
14
14
  @added_checks ||= []
15
15
  end
16
16
 
17
- def add_check(name, *args)
17
+ def add_check(name, *)
18
18
  check_path = "ehbrs_ruby_utils/videos2/unsupported/checks/#{name}"
19
- added_checks << check_path.camelize.constantize.new(*args)
19
+ added_checks << check_path.camelize.constantize.new(*)
20
20
  end
21
21
 
22
22
  def base_checks
@@ -0,0 +1,12 @@
1
+ ; DO NOT EDIT (unless you know what you are doing)
2
+ ;
3
+ ; This subdirectory is a git "subrepo", and this file is maintained by the
4
+ ; git-subrepo command. See https://github.com/git-commands/git-subrepo#readme
5
+ ;
6
+ [subrepo]
7
+ remote = https://github.com/jsalatiel/wsbb-podman.git
8
+ branch = master
9
+ commit = 17e9e19bd755c3312b4cb7dd427acdf110b8a5f0
10
+ parent = f94d3b2833c4f75b55dd64d21d3440a3ab96a106
11
+ method = merge
12
+ cmdver = 0.4.1
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ehbrs_ruby_utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.48.2
4
+ version: 0.49.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eduardo H. Bogoni
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-04-17 00:00:00.000000000 Z
11
+ date: 2026-05-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aranha
@@ -30,20 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0.26'
34
- - - ">="
35
- - !ruby/object:Gem::Version
36
- version: 0.26.3
33
+ version: '0.28'
37
34
  type: :runtime
38
35
  prerelease: false
39
36
  version_requirements: !ruby/object:Gem::Requirement
40
37
  requirements:
41
38
  - - "~>"
42
39
  - !ruby/object:Gem::Version
43
- version: '0.26'
44
- - - ">="
45
- - !ruby/object:Gem::Version
46
- version: 0.26.3
40
+ version: '0.28'
47
41
  - !ruby/object:Gem::Dependency
48
42
  name: aranha-selenium
49
43
  requirement: !ruby/object:Gem::Requirement
@@ -64,20 +58,14 @@ dependencies:
64
58
  requirements:
65
59
  - - "~>"
66
60
  - !ruby/object:Gem::Version
67
- version: '0.98'
68
- - - ">="
69
- - !ruby/object:Gem::Version
70
- version: 0.98.5
61
+ version: '0.100'
71
62
  type: :runtime
72
63
  prerelease: false
73
64
  version_requirements: !ruby/object:Gem::Requirement
74
65
  requirements:
75
66
  - - "~>"
76
67
  - !ruby/object:Gem::Version
77
- version: '0.98'
78
- - - ">="
79
- - !ruby/object:Gem::Version
80
- version: 0.98.5
68
+ version: '0.100'
81
69
  - !ruby/object:Gem::Dependency
82
70
  name: avm-eac_rails_base0
83
71
  requirement: !ruby/object:Gem::Requirement
@@ -127,7 +115,7 @@ dependencies:
127
115
  version: '0.20'
128
116
  - - ">="
129
117
  - !ruby/object:Gem::Version
130
- version: 0.20.1
118
+ version: 0.20.2
131
119
  type: :runtime
132
120
  prerelease: false
133
121
  version_requirements: !ruby/object:Gem::Requirement
@@ -137,7 +125,7 @@ dependencies:
137
125
  version: '0.20'
138
126
  - - ">="
139
127
  - !ruby/object:Gem::Version
140
- version: 0.20.1
128
+ version: 0.20.2
141
129
  - !ruby/object:Gem::Dependency
142
130
  name: eac_rest
143
131
  requirement: !ruby/object:Gem::Requirement
@@ -158,14 +146,14 @@ dependencies:
158
146
  requirements:
159
147
  - - "~>"
160
148
  - !ruby/object:Gem::Version
161
- version: '0.130'
149
+ version: '0.131'
162
150
  type: :runtime
163
151
  prerelease: false
164
152
  version_requirements: !ruby/object:Gem::Requirement
165
153
  requirements:
166
154
  - - "~>"
167
155
  - !ruby/object:Gem::Version
168
- version: '0.130'
156
+ version: '0.131'
169
157
  - !ruby/object:Gem::Dependency
170
158
  name: eac_templates
171
159
  requirement: !ruby/object:Gem::Requirement
@@ -260,20 +248,14 @@ dependencies:
260
248
  requirements:
261
249
  - - "~>"
262
250
  - !ruby/object:Gem::Version
263
- version: '0.12'
264
- - - ">="
265
- - !ruby/object:Gem::Version
266
- version: 0.12.2
251
+ version: '0.13'
267
252
  type: :development
268
253
  prerelease: false
269
254
  version_requirements: !ruby/object:Gem::Requirement
270
255
  requirements:
271
256
  - - "~>"
272
257
  - !ruby/object:Gem::Version
273
- version: '0.12'
274
- - - ">="
275
- - !ruby/object:Gem::Version
276
- version: 0.12.2
258
+ version: '0.13'
277
259
  description:
278
260
  email:
279
261
  executables: []
@@ -281,6 +263,11 @@ extensions: []
281
263
  extra_rdoc_files: []
282
264
  files:
283
265
  - lib/ehbrs_ruby_utils.rb
266
+ - lib/ehbrs_ruby_utils/airbnb/parsers/page.rb
267
+ - lib/ehbrs_ruby_utils/airbnb/processors/list.rb
268
+ - lib/ehbrs_ruby_utils/airbnb/processors/page.rb
269
+ - lib/ehbrs_ruby_utils/airbnb/processors/page/build_accommodation.rb
270
+ - lib/ehbrs_ruby_utils/aranha/accommodations_processor.rb
284
271
  - lib/ehbrs_ruby_utils/bga/game.rb
285
272
  - lib/ehbrs_ruby_utils/bga/game/image.rb
286
273
  - lib/ehbrs_ruby_utils/bga/game_statistics.rb
@@ -438,6 +425,7 @@ files:
438
425
  - lib/ehbrs_ruby_utils/web_utils/videos/file.rb
439
426
  - lib/ehbrs_ruby_utils/web_utils/videos/file/rename.rb
440
427
  - lib/ehbrs_ruby_utils/web_utils/videos/files_list.rb
428
+ - template/ehbrs_ruby_utils/finances/bb_browser/docker_image/.gitrepo
441
429
  - template/ehbrs_ruby_utils/finances/bb_browser/docker_image/Dockerfile
442
430
  - template/ehbrs_ruby_utils/finances/bb_browser/docker_image/Makefile
443
431
  - template/ehbrs_ruby_utils/finances/bb_browser/docker_image/README.md
@@ -460,7 +448,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
460
448
  requirements:
461
449
  - - ">="
462
450
  - !ruby/object:Gem::Version
463
- version: 2.7.0
451
+ version: '3.2'
464
452
  required_rubygems_version: !ruby/object:Gem::Requirement
465
453
  requirements:
466
454
  - - ">="