ehbrs_ruby_utils 0.45.0 → 0.46.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: ff0760f668a91f01b745ef2a7c7e23c82f1d6453de4a35a2823aa5ae484a09b6
4
- data.tar.gz: fe90585a0fa35ed16f57d03142b23d7d7e99a5fc170ca2269b8da53ffbda9c0f
3
+ metadata.gz: 6553b0cae92871af9a27244c6cccf904272cc958621e9e52e3e23d929d87a76c
4
+ data.tar.gz: 98e3dc2bdcee178220796253db2d828acd1732baaff02d4283a729d51e3cb823
5
5
  SHA512:
6
- metadata.gz: 07ba91ccd27b2c7472f3cadad5ed4b7a4e701e84f42e8e90efa9f91802ef132cdf2db79fccea3ed76fb4227c27c8d7ecaff3e631d3efd28f9d7eb353a1c614ff
7
- data.tar.gz: 0a2ee3c2478439e01ebbfe35cc92300e2aa819263acba53055425aabc6136f0151e7023c655d95af3e2428e1882720df91e6dea3ae88b74b262d5592db19556a
6
+ metadata.gz: acbe4a2a7b6f1a6b2418d6aa145ff064e1190e85f3b7e616a8895dd4246b7cd97f546a9afec0dc5d5cca1abba6e54eb9bff4230fdb504d9363352a434cd68868
7
+ data.tar.gz: e58bc13aca373152f81272311d82bda41a55c2532d42ddf41b604e35958c784b95b55b0067b29953e3492b9b005ef48b56cde6fab80d88b5b5c0d3b072384dff
@@ -5,6 +5,7 @@ module EhbrsRubyUtils
5
5
  class Session < ::SimpleDelegator
6
6
  class PlayerTablesOnGameInProgress
7
7
  include ::EhbrsRubyUtils::Bga::Urls
8
+
8
9
  enable_method_class
9
10
  enable_simple_cache
10
11
  common_constructor :session, :player_id
@@ -5,6 +5,7 @@ module EhbrsRubyUtils
5
5
  class Session < ::SimpleDelegator
6
6
  class PlayerTablesOnGameStats
7
7
  include ::EhbrsRubyUtils::Bga::Urls
8
+
8
9
  enable_method_class
9
10
  enable_simple_cache
10
11
  common_constructor :session, :player_id, :until_table_id, default: [nil] do
@@ -5,6 +5,7 @@ module EhbrsRubyUtils
5
5
  class Session < ::SimpleDelegator
6
6
  class Table
7
7
  include ::EhbrsRubyUtils::Bga::Urls
8
+
8
9
  enable_method_class
9
10
  enable_simple_cache
10
11
  common_constructor :session, :table_id
@@ -4,6 +4,7 @@ module EhbrsRubyUtils
4
4
  module Bga
5
5
  class Session < ::SimpleDelegator
6
6
  include ::EhbrsRubyUtils::Bga::Urls
7
+
7
8
  MESSAGE_ID = 'head_infomsg_1'
8
9
 
9
10
  common_constructor :username, :password,
@@ -6,6 +6,7 @@ module EhbrsRubyUtils
6
6
  module WhatsappFormatters
7
7
  class Base
8
8
  include ::EhbrsRubyUtils::Bga::WhatsappFormatter
9
+
9
10
  acts_as_abstract :players_title, :root_items_title
10
11
  enable_simple_cache
11
12
  common_constructor :table
@@ -4,6 +4,7 @@ module EhbrsRubyUtils
4
4
  module Bga
5
5
  class Table
6
6
  include ::EhbrsRubyUtils::Bga::Urls
7
+
7
8
  enable_simple_cache
8
9
  common_constructor :data
9
10
 
@@ -14,9 +15,9 @@ module EhbrsRubyUtils
14
15
 
15
16
  ([:id] + ::EhbrsRubyUtils::Bga::Parsers::Table.fields.map(&:name) - SET_ITEMS)
16
17
  .each do |field|
17
- define_method field do
18
- data.fetch(field)
19
- end
18
+ define_method field do
19
+ data.fetch(field)
20
+ end
20
21
  end
21
22
 
22
23
  # @return [Boolean]
@@ -4,6 +4,7 @@ module EhbrsRubyUtils
4
4
  class CircularListSpreader
5
5
  class GroupLevel
6
6
  include ::EhbrsRubyUtils::CircularListSpreader::BaseLevel
7
+
7
8
  enable_simple_cache
8
9
 
9
10
  common_constructor :label
@@ -44,7 +44,7 @@ module EhbrsRubyUtils
44
44
  end
45
45
 
46
46
  def quantity_to_s
47
- numerator.to_s + (denominator.if_present('') { |v| "/ #{v}" })
47
+ numerator.to_s + denominator.if_present('') { |v| "/ #{v}" }
48
48
  end
49
49
 
50
50
  def variable?
@@ -4,6 +4,7 @@ module EhbrsRubyUtils
4
4
  module Gjt1
5
5
  class Manager
6
6
  include ::Singleton
7
+
7
8
  acts_as_abstract :bga_username, :bga_password, :whatsapp_recipient
8
9
 
9
10
  %w[beginning ending].each do |type|
@@ -17,6 +17,7 @@ module EhbrsRubyUtils
17
17
 
18
18
  enable_simple_cache
19
19
  include ::Comparable
20
+
20
21
  common_constructor :parent, :path
21
22
  attr_accessor :previous
22
23
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EhbrsRubyUtils
4
- VERSION = '0.45.0'
4
+ VERSION = '0.46.0'
5
5
  end
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ module EhbrsRubyUtils
4
+ module Vg
5
+ module Nds
6
+ class Organizer
7
+ class BaseFile
8
+ acts_as_abstract :target_path
9
+ enable_listable
10
+ enable_simple_cache
11
+ enable_speaker
12
+ lists.add_symbol :add_error, :duplicated, :unrecognized
13
+ common_constructor :file_manager, :source_path do
14
+ self.source_path = source_path.to_pathname.expand_path
15
+ end
16
+ delegate :runner, to: :file_manager
17
+ compare_by :id
18
+
19
+ def change?
20
+ source_path != target_path
21
+ end
22
+
23
+ def id
24
+ source_path.basename_noext.to_path
25
+ end
26
+
27
+ def perform
28
+ return unless change?
29
+
30
+ ::FileUtils.mv(source_path, target_path.assert_parent)
31
+ end
32
+
33
+ def show
34
+ puts "#{format_path(target_path, :green)} <= #{format_path(source_path, :yellow)}"
35
+ end
36
+
37
+ protected
38
+
39
+ def format_path(path, color)
40
+ path.relative_path_from(runner.runner.roms_root).to_path.colorize(color)
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ module EhbrsRubyUtils
4
+ module Vg
5
+ module Nds
6
+ class Organizer
7
+ class FileManager
8
+ enable_simple_cache
9
+ common_constructor :runner
10
+
11
+ ROM_EXTNAMES = ['.nds'].freeze
12
+ SAVE_EXTNAMES = ['.sav'].freeze
13
+
14
+ def add_file(path)
15
+ if ROM_EXTNAMES.include?(path.extname)
16
+ add_to_set(:rom, path)
17
+ elsif SAVE_EXTNAMES.include?(path.extname)
18
+ add_to_set(:save, path)
19
+ else
20
+ ::EhbrsRubyUtils::Vg::Nds::Organizer::BaseFile::ADD_ERROR_UNRECOGNIZED
21
+ end
22
+ end
23
+
24
+ def find_rom(id)
25
+ roms.find { |s| s.id == id }
26
+ end
27
+
28
+ protected
29
+
30
+ def add_to_set(type, path)
31
+ set = send(type.to_s.pluralize)
32
+ file = ::EhbrsRubyUtils::Vg::Nds::Organizer.const_get("#{type}_file".camelize)
33
+ .new(self, path)
34
+ return ::BaseFile::ADD_ERROR_DUPLICATED if set.include?(file)
35
+
36
+ set.add(file)
37
+ nil
38
+ end
39
+
40
+ def roms
41
+ @roms ||= ::Set.new
42
+ end
43
+
44
+ def saves
45
+ @saves ||= ::Set.new
46
+ end
47
+
48
+ def to_change_files_uncached
49
+ (roms.to_a + saves.to_a).select(&:change?).sort_by { |f| [f.id, f.target_path] }
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module EhbrsRubyUtils
4
+ module Vg
5
+ module Nds
6
+ class Organizer
7
+ class RomFile < ::EhbrsRubyUtils::Vg::Nds::Organizer::BaseFile
8
+ protected
9
+
10
+ def target_path_uncached
11
+ source_path
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module EhbrsRubyUtils
4
+ module Vg
5
+ module Nds
6
+ class Organizer
7
+ class SaveFile < ::EhbrsRubyUtils::Vg::Nds::Organizer::BaseFile
8
+ SAVES_DIRECTORY_BASENAME = 'saves'.to_pathname
9
+
10
+ protected
11
+
12
+ def target_path_uncached
13
+ rom_file.if_present(source_path) do |v|
14
+ v.target_path.dirname.join(SAVES_DIRECTORY_BASENAME).join(source_path.basename)
15
+ end
16
+ end
17
+
18
+ def rom_file_uncached
19
+ file_manager.find_rom(id)
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,65 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'find'
4
+
5
+ module EhbrsRubyUtils
6
+ module Vg
7
+ module Nds
8
+ class Organizer
9
+ enable_simple_cache
10
+ common_constructor :runner
11
+ delegate :confirm?, :roms_root, :show?, to: :runner
12
+
13
+ def add_files
14
+ self.errors = {}
15
+ reset_cache(:file_manager)
16
+ ::Find.find(roms_root) do |path|
17
+ pathname = path.to_pathname
18
+ next unless pathname.file?
19
+
20
+ file_manager.add_file(pathname).if_present do |error|
21
+ errors[pathname] = error
22
+ end
23
+ end
24
+ end
25
+
26
+ def clean_empty_directories
27
+ runner.infom 'Cleaning empty directories?'
28
+ return unless confirm?
29
+
30
+ roms_root.children.each do |child|
31
+ ::EacFs::Utils.remove_empty_directories(child)
32
+ end
33
+ end
34
+
35
+ def perform
36
+ file_manager.to_change_files.each do |file|
37
+ file.show if show?
38
+ file.perform if confirm?
39
+ end
40
+ end
41
+
42
+ def perform_all
43
+ add_files
44
+ show_changes if show?
45
+ perform
46
+ clean_empty_directories
47
+ end
48
+
49
+ def show_changes
50
+ file_manager.to_change_files.each(&:show)
51
+ runner.infov 'To change files', file_manager.to_change_files.count
52
+ end
53
+
54
+ protected
55
+
56
+ attr_writer :errors
57
+
58
+ # @return [FileManager]
59
+ def file_manager_uncached
60
+ ::EhbrsRubyUtils::Vg::Nds::Organizer::FileManager.new(self)
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
@@ -21,10 +21,10 @@ module EhbrsRubyUtils
21
21
  def all_uncached
22
22
  ::EhbrsRubyUtils::Vg::Wii::Wit::Parsers::Info.new(info_output).images
23
23
  .map do |_label, data|
24
- new(
25
- *%w[name info option].map { |k| data.fetch(k) },
26
- *%w[extensions attributes].map { |k| data.fetch(k).to_s.split(/\s+/) }
27
- )
24
+ new(
25
+ *%w[name info option].map { |k| data.fetch(k) },
26
+ *%w[extensions attributes].map { |k| data.fetch(k).to_s.split(/\s+/) }
27
+ )
28
28
  end
29
29
  end
30
30
 
@@ -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}.freeze
17
17
 
18
18
  private
19
19
 
@@ -10,6 +10,7 @@ module EhbrsRubyUtils
10
10
 
11
11
  included do
12
12
  include ActiveSupport::Callbacks
13
+
13
14
  define_callbacks :convert, :swap
14
15
  end
15
16
 
@@ -7,6 +7,7 @@ module EhbrsRubyUtils
7
7
  module Unsupported
8
8
  class Search
9
9
  include ::EacFs::Traversable
10
+
10
11
  enable_speaker
11
12
  enable_simple_cache
12
13
 
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.45.0
4
+ version: 0.46.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: 2025-06-30 00:00:00.000000000 Z
11
+ date: 2026-01-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aranha
@@ -64,20 +64,20 @@ dependencies:
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: '0.96'
67
+ version: '0.98'
68
68
  - - ">="
69
69
  - !ruby/object:Gem::Version
70
- version: 0.96.1
70
+ version: 0.98.2
71
71
  type: :runtime
72
72
  prerelease: false
73
73
  version_requirements: !ruby/object:Gem::Requirement
74
74
  requirements:
75
75
  - - "~>"
76
76
  - !ruby/object:Gem::Version
77
- version: '0.96'
77
+ version: '0.98'
78
78
  - - ">="
79
79
  - !ruby/object:Gem::Version
80
- version: 0.96.1
80
+ version: 0.98.2
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: avm-eac_rails_base0
83
83
  requirement: !ruby/object:Gem::Requirement
@@ -107,7 +107,7 @@ dependencies:
107
107
  version: '3.5'
108
108
  - - ">="
109
109
  - !ruby/object:Gem::Version
110
- version: 3.5.4
110
+ version: 3.5.7
111
111
  type: :runtime
112
112
  prerelease: false
113
113
  version_requirements: !ruby/object:Gem::Requirement
@@ -117,21 +117,21 @@ dependencies:
117
117
  version: '3.5'
118
118
  - - ">="
119
119
  - !ruby/object:Gem::Version
120
- version: 3.5.4
120
+ version: 3.5.7
121
121
  - !ruby/object:Gem::Dependency
122
122
  name: eac_fs
123
123
  requirement: !ruby/object:Gem::Requirement
124
124
  requirements:
125
125
  - - "~>"
126
126
  - !ruby/object:Gem::Version
127
- version: '0.19'
127
+ version: '0.20'
128
128
  type: :runtime
129
129
  prerelease: false
130
130
  version_requirements: !ruby/object:Gem::Requirement
131
131
  requirements:
132
132
  - - "~>"
133
133
  - !ruby/object:Gem::Version
134
- version: '0.19'
134
+ version: '0.20'
135
135
  - !ruby/object:Gem::Dependency
136
136
  name: eac_rest
137
137
  requirement: !ruby/object:Gem::Requirement
@@ -155,7 +155,7 @@ dependencies:
155
155
  version: '0.128'
156
156
  - - ">="
157
157
  - !ruby/object:Gem::Version
158
- version: 0.128.2
158
+ version: 0.128.5
159
159
  type: :runtime
160
160
  prerelease: false
161
161
  version_requirements: !ruby/object:Gem::Requirement
@@ -165,7 +165,7 @@ dependencies:
165
165
  version: '0.128'
166
166
  - - ">="
167
167
  - !ruby/object:Gem::Version
168
- version: 0.128.2
168
+ version: 0.128.5
169
169
  - !ruby/object:Gem::Dependency
170
170
  name: eac_templates
171
171
  requirement: !ruby/object:Gem::Requirement
@@ -175,7 +175,7 @@ dependencies:
175
175
  version: '0.8'
176
176
  - - ">="
177
177
  - !ruby/object:Gem::Version
178
- version: 0.8.1
178
+ version: 0.8.3
179
179
  type: :runtime
180
180
  prerelease: false
181
181
  version_requirements: !ruby/object:Gem::Requirement
@@ -185,7 +185,7 @@ dependencies:
185
185
  version: '0.8'
186
186
  - - ">="
187
187
  - !ruby/object:Gem::Version
188
- version: 0.8.1
188
+ version: 0.8.3
189
189
  - !ruby/object:Gem::Dependency
190
190
  name: inifile
191
191
  requirement: !ruby/object:Gem::Requirement
@@ -372,6 +372,11 @@ files:
372
372
  - lib/ehbrs_ruby_utils/patches/object/template.rb
373
373
  - lib/ehbrs_ruby_utils/version.rb
374
374
  - lib/ehbrs_ruby_utils/vg.rb
375
+ - lib/ehbrs_ruby_utils/vg/nds/organizer.rb
376
+ - lib/ehbrs_ruby_utils/vg/nds/organizer/base_file.rb
377
+ - lib/ehbrs_ruby_utils/vg/nds/organizer/file_manager.rb
378
+ - lib/ehbrs_ruby_utils/vg/nds/organizer/rom_file.rb
379
+ - lib/ehbrs_ruby_utils/vg/nds/organizer/save_file.rb
375
380
  - lib/ehbrs_ruby_utils/vg/patchers/applier_factory.rb
376
381
  - lib/ehbrs_ruby_utils/vg/patchers/base_applier.rb
377
382
  - lib/ehbrs_ruby_utils/vg/patchers/bps_applier.rb