ehbrs_ruby_utils 0.32.0 → 0.33.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.
Files changed (34) hide show
  1. checksums.yaml +4 -4
  2. data/lib/ehbrs_ruby_utils/cooking_book/build/base_page.rb +42 -0
  3. data/lib/ehbrs_ruby_utils/cooking_book/build/index_page.rb +26 -0
  4. data/lib/ehbrs_ruby_utils/cooking_book/build/recipe_page.rb +26 -0
  5. data/lib/ehbrs_ruby_utils/cooking_book/build.rb +45 -0
  6. data/lib/ehbrs_ruby_utils/cooking_book/project.rb +31 -0
  7. data/lib/ehbrs_ruby_utils/cooking_book/recipe/ingredient.rb +21 -0
  8. data/lib/ehbrs_ruby_utils/cooking_book/recipe/measure.rb +60 -0
  9. data/lib/ehbrs_ruby_utils/cooking_book/recipe/part.rb +32 -0
  10. data/lib/ehbrs_ruby_utils/cooking_book/recipe.rb +37 -0
  11. data/lib/ehbrs_ruby_utils/cooking_book.rb +9 -0
  12. data/lib/ehbrs_ruby_utils/version.rb +1 -1
  13. data/lib/ehbrs_ruby_utils/vg/wii/file_move.rb +89 -0
  14. data/lib/ehbrs_ruby_utils/vg/wii/game_file.rb +87 -0
  15. data/lib/ehbrs_ruby_utils/vg/wii/wit/image_format.rb +47 -0
  16. data/lib/ehbrs_ruby_utils/vg/wii/wit/parsers/dump.rb +67 -0
  17. data/lib/ehbrs_ruby_utils/vg/wii/wit/parsers/info.rb +39 -0
  18. data/lib/ehbrs_ruby_utils/vg/wii/wit/path.rb +55 -0
  19. data/lib/ehbrs_ruby_utils/vg/wii/wit.rb +13 -0
  20. data/lib/ehbrs_ruby_utils/vg/wii.rb +11 -0
  21. data/lib/ehbrs_ruby_utils/vg.rb +9 -0
  22. data/spec/lib/ehbrs_ruby_utils/cooking_book/recipe/measure_spec.rb +21 -0
  23. data/spec/lib/ehbrs_ruby_utils/vg/wii/game_file_spec.rb +21 -0
  24. data/spec/lib/ehbrs_ruby_utils/vg/wii/wit/parsers/dump_spec.rb +11 -0
  25. data/spec/lib/ehbrs_ruby_utils/vg/wii/wit/parsers/dump_spec_files/pikmin2_R92P01_wia.source.witdump +27 -0
  26. data/spec/lib/ehbrs_ruby_utils/vg/wii/wit/parsers/dump_spec_files/pikmin2_R92P01_wia.target.yaml +22 -0
  27. data/spec/lib/ehbrs_ruby_utils/vg/wii/wit/parsers/dump_spec_files/pikmin2_pal_iso.source.witdump +28 -0
  28. data/spec/lib/ehbrs_ruby_utils/vg/wii/wit/parsers/dump_spec_files/pikmin2_pal_iso.target.yaml +21 -0
  29. data/spec/lib/ehbrs_ruby_utils/vg/wii/wit/parsers/dump_spec_files/resident_evil_code_veronica_disc2_iso.source.witdump +16 -0
  30. data/spec/lib/ehbrs_ruby_utils/vg/wii/wit/parsers/dump_spec_files/resident_evil_code_veronica_disc2_iso.target.yaml +19 -0
  31. data/spec/lib/ehbrs_ruby_utils/vg/wii/wit/parsers/dump_spec_files/super_mario_galaxy_wbfs.source.witdump +28 -0
  32. data/spec/lib/ehbrs_ruby_utils/vg/wii/wit/parsers/dump_spec_files/super_mario_galaxy_wbfs.target.yaml +23 -0
  33. data/spec/lib/ehbrs_ruby_utils/vg/wii/wit/path_spec.rb +33 -0
  34. metadata +100 -57
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module EhbrsRubyUtils
6
+ module Vg
7
+ module Wii
8
+ module Wit
9
+ class Path
10
+ WIT_PATH_PATTERN = /\A(?:([a-z0-9]+):)?(.+)\z/i.freeze
11
+
12
+ class << self
13
+ def assert(source)
14
+ source = parse(source) unless source.is_a?(self)
15
+ source
16
+ end
17
+
18
+ def parse(path)
19
+ WIT_PATH_PATTERN
20
+ .match(path)
21
+ .if_present { |m| new(m[1], m[2]) }
22
+ .if_blank { raise "\"#{WIT_PATH_PATTERN}\" does not match \"#{path}\"" }
23
+ end
24
+ end
25
+
26
+ common_constructor :type, :path do
27
+ self.type = type.to_s.upcase
28
+ self.path = ::Pathname.new(path.to_s)
29
+ end
30
+
31
+ def change?(other)
32
+ type_change?(other) || path_change?(other)
33
+ end
34
+
35
+ def path_change?(other)
36
+ path.expand_path.to_s != other.path.expand_path.to_s
37
+ end
38
+
39
+ def to_s
40
+ r = path.to_s
41
+ r = "#{type.to_s.upcase}:#{r}" if type.present?
42
+ r
43
+ end
44
+
45
+ def type_change?(other)
46
+ return false if other.type.blank?
47
+ return true if type.blank?
48
+
49
+ type != other.type
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module EhbrsRubyUtils
6
+ module Vg
7
+ module Wii
8
+ module Wit
9
+ require_sub __FILE__
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module EhbrsRubyUtils
6
+ module Vg
7
+ module Wii
8
+ require_sub __FILE__
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module EhbrsRubyUtils
6
+ module Vg
7
+ require_sub __FILE__
8
+ end
9
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'ehbrs_ruby_utils/cooking_book/recipe/measure'
4
+
5
+ RSpec.describe ::EhbrsRubyUtils::CookingBook::Recipe::Measure do
6
+ describe '#build'
7
+ {
8
+ '1.5 cup' => [1.5, nil, 'cup'],
9
+ '~' => [nil, nil, nil],
10
+ '2/ 3 u' => [2, 3, 'u'],
11
+ '4.5/7.8' => [4.5, 7.8, nil]
12
+ }.each do |source, expected|
13
+ context "when source is \"#{source}\"" do
14
+ let(:instance) { described_class.build(source) }
15
+
16
+ it { expect(instance.numerator).to eq(expected[0]) }
17
+ it { expect(instance.denominator).to eq(expected[1]) }
18
+ it { expect(instance.unit).to eq(expected[2]) }
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'ehbrs_ruby_utils/vg/wii/game_file'
4
+
5
+ RSpec.describe ::EhbrsRubyUtils::Vg::Wii::GameFile do
6
+ [['game.iso', 1, 'game'], ['disc1.iso', 1, 'game'], ['disc2.iso', 2, 'disc2'],
7
+ ['Resident Evil - Code - Veronica X (USA) (Disc 1)', 1, 'game'],
8
+ ['Resident Evil - Code - Veronica X (USA) (Disc 2)', 2, 'disc2']].each do |s|
9
+ context "when game file is #{s[0]}" do
10
+ let(:game_file) { described_class.new(s[0]) }
11
+
12
+ it "disc_number should be #{s[1]}" do
13
+ expect(game_file.disc_number).to eq(s[1])
14
+ end
15
+
16
+ it "nintendont_basename should be #{s[2]}" do
17
+ expect(game_file.nintendont_basename).to eq(s[2])
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'ehbrs_ruby_utils/vg/wii/wit/parsers/dump'
4
+
5
+ RSpec.describe ::EhbrsRubyUtils::Vg::Wii::Wit::Parsers::Dump do
6
+ include_examples 'source_target_fixtures', __FILE__
7
+
8
+ def source_data(source_file)
9
+ described_class.new(::File.read(source_file)).properties
10
+ end
11
+ end
@@ -0,0 +1,27 @@
1
+
2
+ Dump of file /home/eduardo/storage/roms/wii/games_untested/Pikmin 2 - New Play Control_ [R92P01].wia
3
+
4
+ Real path: /mnt/storage/eduardo/roms/wii/games_untested/Pikmin 2 - New Play Control_ [R92P01].wia
5
+ Virtual size: 118240000/hex = 4699979776 = 4482 MiB
6
+ Scrubbed size: 7af30000/hex = 2062745600 = 1967 MiB, 43.9%, 62950*32K
7
+ WIA file size: 63d2da4e/hex = 1674762830 = 1597 MiB, 35.6%, 81.2%
8
+ File & disc type: WIA/WII (v1.00,LZMA2.7@100) & Wii
9
+ Disc & part IDs: disc=R92P01, ticket=R92P, tmd=R92P, boot=R92P01
10
+ Disc name: PIKMIN2 for Wii
11
+ DB title: Pikmin 2
12
+ ID Region: PAL [PAL ]
13
+ Region setting: 2 [Europe] / Jap=128 USA=128 ?=128 Eur=0,3,3,4,3,7 Kor=128
14
+ System version: 00000001-00000021 = IOS 0x21 = IOS 33
15
+ Partitions: 1 [encrypted, well signed]
16
+ Directories: 593
17
+ Files: 2376
18
+
19
+ 1 partition table with 1 partition:
20
+
21
+ index type offset .. end off size/hex = size/dec = MiB status
22
+ ----------------------------------------------------------------------------------------
23
+ 0 part.tab 40020 .. 40028 8 = 8 1 partition
24
+ ----------------------------------------------------------------------------------------
25
+ 0.0 DATA 0 f800000 .. 1173c0000 107bc0000 = 4424728576 = 4220 enc,signed
26
+ ----------------------------------------------------------------------------------------
27
+
@@ -0,0 +1,22 @@
1
+ ---
2
+ Real path: "/mnt/storage/eduardo/roms/wii/games_untested/Pikmin 2 - New Play Control_
3
+ [R92P01].wia"
4
+ Virtual size: 118240000/hex = 4699979776 = 4482 MiB
5
+ Scrubbed size: 7af30000/hex = 2062745600 = 1967 MiB, 43.9%, 62950*32K
6
+ WIA file size: 63d2da4e/hex = 1674762830 = 1597 MiB, 35.6%, 81.2%
7
+ File & disc type/type: WIA
8
+ File & disc type/platform_acronym: WII
9
+ File & disc type/type_extra: v1.00,LZMA2.7@100
10
+ File & disc type/platform_name: Wii
11
+ Disc & part IDs/disc: R92P01
12
+ Disc & part IDs/ticket: R92P
13
+ Disc & part IDs/tmd: R92P
14
+ Disc & part IDs/boot: R92P01
15
+ Disc name: PIKMIN2 for Wii
16
+ DB title: Pikmin 2
17
+ ID Region: PAL [PAL ]
18
+ Region setting: 2 [Europe] / Jap=128 USA=128 ?=128 Eur=0,3,3,4,3,7 Kor=128
19
+ System version: 00000001-00000021 = IOS 0x21 = IOS 33
20
+ Partitions: 1 [encrypted, well signed]
21
+ Directories: '593'
22
+ Files: '2376'
@@ -0,0 +1,28 @@
1
+
2
+ Dump of file pikmin2_pal.iso
3
+
4
+ Real path: /mnt/storage/eduardo/roms/wii/games_untested/pikmin2_pal.iso
5
+ ISO file size: 118240000/hex = 4699979776 = 4482 MiB
6
+ Scrubbed size: 85790000/hex = 2239299584 = 2136 MiB, 47.6%, 68338*32K
7
+ File & disc type: ISO/WII & Wii
8
+ Disc & part IDs: disc=R92P01, ticket=R92P, tmd=R92P, boot=R92P01
9
+ Disc name: PIKMIN2 for Wii
10
+ DB title: Pikmin 2
11
+ ID Region: PAL [PAL ]
12
+ Region setting: 2 [Europe] / Jap=128 USA=128 ?=128 Eur=0,3,3,4,3,7 Kor=128
13
+ System menu: v386 = 3.4E
14
+ System version: 00000001-00000021 = IOS 0x21 = IOS 33
15
+ Partitions: 2 [encrypted, well signed]
16
+ Directories: 598
17
+ Files: 2421
18
+
19
+ 1 partition table with 2 partitions:
20
+
21
+ index type offset .. end off size/hex = size/dec = MiB status
22
+ ----------------------------------------------------------------------------------------
23
+ 0 part.tab 40020 .. 40030 10 = 16 2 partitions
24
+ ----------------------------------------------------------------------------------------
25
+ 0.0 UPDATE 1 50000 .. a8b8000 a868000 = 176586752 = 168 enc,signed
26
+ 0.1 DATA 0 f800000 .. 1173c0000 107bc0000 = 4424728576 = 4220 enc,signed
27
+ ----------------------------------------------------------------------------------------
28
+
@@ -0,0 +1,21 @@
1
+ ---
2
+ Real path: "/mnt/storage/eduardo/roms/wii/games_untested/pikmin2_pal.iso"
3
+ ISO file size: 118240000/hex = 4699979776 = 4482 MiB
4
+ Scrubbed size: 85790000/hex = 2239299584 = 2136 MiB, 47.6%, 68338*32K
5
+ File & disc type/type: ISO
6
+ File & disc type/platform_acronym: WII
7
+ File & disc type/type_extra:
8
+ File & disc type/platform_name: Wii
9
+ Disc & part IDs/disc: R92P01
10
+ Disc & part IDs/ticket: R92P
11
+ Disc & part IDs/tmd: R92P
12
+ Disc & part IDs/boot: R92P01
13
+ Disc name: PIKMIN2 for Wii
14
+ DB title: Pikmin 2
15
+ ID Region: PAL [PAL ]
16
+ Region setting: 2 [Europe] / Jap=128 USA=128 ?=128 Eur=0,3,3,4,3,7 Kor=128
17
+ System menu: v386 = 3.4E
18
+ System version: 00000001-00000021 = IOS 0x21 = IOS 33
19
+ Partitions: 2 [encrypted, well signed]
20
+ Directories: '598'
21
+ Files: '2421'
@@ -0,0 +1,16 @@
1
+
2
+ Dump of file /home/eduardo/storage/roms/gc/RESIDENT EVIL CVX [GCDE08]/disc2.iso
3
+
4
+ Real path: /mnt/storage/eduardo/roms/wii/disk/games/RESIDENT EVIL CVX [GCDE08]/disc2.iso
5
+ ISO file size: 57058000/hex = 1459978240 = 1392 MiB
6
+ Scrubbed size: 4fcf8000/hex = 1338998784 = 1277 MiB, 91.7%, 40863*32K
7
+ File & disc type: ISO/GC & GameCube
8
+ Disc & part IDs: disc=GCDE08, ticket=...., tmd=-, boot=GCDE08
9
+ Disc name: RESIDENT EVIL CVX
10
+ DB title: Resident Evil Code: Veronica X
11
+ ID Region: NTSC/USA [USA ]
12
+ BI2 Region: 1 [USA]
13
+ Partitions: 1 []
14
+ Directories: 4
15
+ Files: 54
16
+
@@ -0,0 +1,19 @@
1
+ ---
2
+ Real path: "/mnt/storage/eduardo/roms/wii/disk/games/RESIDENT EVIL CVX [GCDE08]/disc2.iso"
3
+ ISO file size: 57058000/hex = 1459978240 = 1392 MiB
4
+ Scrubbed size: 4fcf8000/hex = 1338998784 = 1277 MiB, 91.7%, 40863*32K
5
+ File & disc type/type: ISO
6
+ File & disc type/platform_acronym: GC
7
+ File & disc type/type_extra:
8
+ File & disc type/platform_name: GameCube
9
+ Disc & part IDs/disc: GCDE08
10
+ Disc & part IDs/ticket: "...."
11
+ Disc & part IDs/tmd: "-"
12
+ Disc & part IDs/boot: GCDE08
13
+ Disc name: RESIDENT EVIL CVX
14
+ DB title: 'Resident Evil Code: Veronica X'
15
+ ID Region: NTSC/USA [USA ]
16
+ BI2 Region: 1 [USA]
17
+ Partitions: 1 []
18
+ Directories: '4'
19
+ Files: '54'
@@ -0,0 +1,28 @@
1
+
2
+ Dump of file /home/eduardo/storage/roms/wii/disk/wbfs/SUPER MARIO GALAXY [RMGE01]/RMGE01.wbfs/#0
3
+
4
+ Real path: /mnt/storage/eduardo/roms/wii/disk/wbfs/SUPER MARIO GALAXY [RMGE01]/RMGE01.wbfs/#0
5
+ Virtual size: 118240000/hex = 4699979776 = 4482 MiB
6
+ Scrubbed size: d0b28000/hex = 3501359104 = 3339 MiB, 74.5%, 106853*32K
7
+ WBFS file size: d1200000/hex = 3508535296 = 3346 MiB, 74.7%, 100.2%
8
+ WBFS fragments: 1+0 = a ratio of 0.00 additional_fragments/GiB
9
+ File & disc type: WBFS/WII & Wii
10
+ Disc & part IDs: disc=RMGE01, ticket=RMGE, tmd=RMGE, boot=RMGE01, wbfs=RMGE01
11
+ Disc name: SUPER MARIO GALAXY
12
+ DB title: Super Mario Galaxy
13
+ ID Region: NTSC/USA [USA ]
14
+ Region setting: 1 [USA] / Jap=128 USA=6 ?=128 Eur=128,128,128,128,128,128 Kor=128
15
+ System version: 00000001-00000021 = IOS 0x21 = IOS 33
16
+ Partitions: 1 [encrypted, scrubbed, well signed]
17
+ Directories: 79
18
+ Files: 2383
19
+
20
+ 1 partition table with 1 partition:
21
+
22
+ index type offset .. end off size/hex = size/dec = MiB status
23
+ ----------------------------------------------------------------------------------------
24
+ 0 part.tab 40020 .. 40028 8 = 8 1 partition
25
+ ----------------------------------------------------------------------------------------
26
+ 0.0 DATA 0 f800000 .. 1173c0000 107bc0000 = 4424728576 = 4220 enc,signed,scrub
27
+ ----------------------------------------------------------------------------------------
28
+
@@ -0,0 +1,23 @@
1
+ ---
2
+ Real path: "/mnt/storage/eduardo/roms/wii/disk/wbfs/SUPER MARIO GALAXY [RMGE01]/RMGE01.wbfs/#0"
3
+ Virtual size: 118240000/hex = 4699979776 = 4482 MiB
4
+ Scrubbed size: d0b28000/hex = 3501359104 = 3339 MiB, 74.5%, 106853*32K
5
+ WBFS file size: d1200000/hex = 3508535296 = 3346 MiB, 74.7%, 100.2%
6
+ WBFS fragments: 1+0 = a ratio of 0.00 additional_fragments/GiB
7
+ File & disc type/type: WBFS
8
+ File & disc type/platform_acronym: WII
9
+ File & disc type/type_extra:
10
+ File & disc type/platform_name: Wii
11
+ Disc & part IDs/disc: RMGE01
12
+ Disc & part IDs/ticket: RMGE
13
+ Disc & part IDs/tmd: RMGE
14
+ Disc & part IDs/boot: RMGE01
15
+ Disc & part IDs/wbfs: RMGE01
16
+ Disc name: SUPER MARIO GALAXY
17
+ DB title: Super Mario Galaxy
18
+ ID Region: NTSC/USA [USA ]
19
+ Region setting: 1 [USA] / Jap=128 USA=6 ?=128 Eur=128,128,128,128,128,128 Kor=128
20
+ System version: 00000001-00000021 = IOS 0x21 = IOS 33
21
+ Partitions: 1 [encrypted, scrubbed, well signed]
22
+ Directories: '79'
23
+ Files: '2383'
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'ehbrs_ruby_utils/vg/wii/wit/path'
4
+
5
+ RSpec.describe ::EhbrsRubyUtils::Vg::Wii::Wit::Path do
6
+ describe '#parse' do
7
+ context 'when type is present' do
8
+ let(:source) { 'WbFs:path/to/file.wbfs' }
9
+ let(:instance) { described_class.parse(source) }
10
+
11
+ it { expect(instance.type).to eq('WBFS') }
12
+ it { expect(instance.path.to_s).to eq('path/to/file.wbfs') }
13
+ end
14
+
15
+ context 'when type is blank' do
16
+ let(:source) { 'path/to/file.wbfs' }
17
+ let(:instance) { described_class.parse(source) }
18
+
19
+ it { expect(instance.type).to eq('') }
20
+ it { expect(instance.path.to_s).to eq('path/to/file.wbfs') }
21
+ end
22
+ end
23
+
24
+ describe '#change?' do
25
+ let(:with_type) { described_class.new('ISO', 'path/to/file.wbfs') }
26
+ let(:without_type) { described_class.new(nil, 'path/to/file.wbfs') }
27
+
28
+ it { expect(with_type.change?(without_type)).to eq(false) }
29
+ it { expect(without_type.change?(with_type)).to eq(true) }
30
+
31
+ context 'when'
32
+ end
33
+ end
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.32.0
4
+ version: 0.33.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: 2023-06-21 00:00:00.000000000 Z
11
+ date: 2023-10-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aranha
@@ -64,14 +64,14 @@ dependencies:
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: '0.78'
67
+ version: '0.79'
68
68
  type: :runtime
69
69
  prerelease: false
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: '0.78'
74
+ version: '0.79'
75
75
  - !ruby/object:Gem::Dependency
76
76
  name: dentaku
77
77
  requirement: !ruby/object:Gem::Requirement
@@ -112,34 +112,34 @@ dependencies:
112
112
  requirements:
113
113
  - - "~>"
114
114
  - !ruby/object:Gem::Version
115
- version: '0.9'
116
- - - ">="
117
- - !ruby/object:Gem::Version
118
- version: 0.9.1
115
+ version: '0.10'
119
116
  type: :runtime
120
117
  prerelease: false
121
118
  version_requirements: !ruby/object:Gem::Requirement
122
119
  requirements:
123
120
  - - "~>"
124
121
  - !ruby/object:Gem::Version
125
- version: '0.9'
126
- - - ">="
127
- - !ruby/object:Gem::Version
128
- version: 0.9.1
122
+ version: '0.10'
129
123
  - !ruby/object:Gem::Dependency
130
124
  name: eac_ruby_utils
131
125
  requirement: !ruby/object:Gem::Requirement
132
126
  requirements:
133
127
  - - "~>"
134
128
  - !ruby/object:Gem::Version
135
- version: '0.118'
129
+ version: '0.119'
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: 0.119.2
136
133
  type: :runtime
137
134
  prerelease: false
138
135
  version_requirements: !ruby/object:Gem::Requirement
139
136
  requirements:
140
137
  - - "~>"
141
138
  - !ruby/object:Gem::Version
142
- version: '0.118'
139
+ version: '0.119'
140
+ - - ">="
141
+ - !ruby/object:Gem::Version
142
+ version: 0.119.2
143
143
  - !ruby/object:Gem::Dependency
144
144
  name: eac_templates
145
145
  requirement: !ruby/object:Gem::Requirement
@@ -267,6 +267,16 @@ files:
267
267
  - lib/ehbrs_ruby_utils/circular_list_spreader/item_level.rb
268
268
  - lib/ehbrs_ruby_utils/circular_list_spreader/list.rb
269
269
  - lib/ehbrs_ruby_utils/circular_list_spreader/list/item_pair_spreadness.rb
270
+ - lib/ehbrs_ruby_utils/cooking_book.rb
271
+ - lib/ehbrs_ruby_utils/cooking_book/build.rb
272
+ - lib/ehbrs_ruby_utils/cooking_book/build/base_page.rb
273
+ - lib/ehbrs_ruby_utils/cooking_book/build/index_page.rb
274
+ - lib/ehbrs_ruby_utils/cooking_book/build/recipe_page.rb
275
+ - lib/ehbrs_ruby_utils/cooking_book/project.rb
276
+ - lib/ehbrs_ruby_utils/cooking_book/recipe.rb
277
+ - lib/ehbrs_ruby_utils/cooking_book/recipe/ingredient.rb
278
+ - lib/ehbrs_ruby_utils/cooking_book/recipe/measure.rb
279
+ - lib/ehbrs_ruby_utils/cooking_book/recipe/part.rb
270
280
  - lib/ehbrs_ruby_utils/core_ext.rb
271
281
  - lib/ehbrs_ruby_utils/executables.rb
272
282
  - lib/ehbrs_ruby_utils/finances/bb_browser/docker_image.rb
@@ -292,6 +302,15 @@ files:
292
302
  - lib/ehbrs_ruby_utils/patches/object.rb
293
303
  - lib/ehbrs_ruby_utils/patches/object/template.rb
294
304
  - lib/ehbrs_ruby_utils/version.rb
305
+ - lib/ehbrs_ruby_utils/vg.rb
306
+ - lib/ehbrs_ruby_utils/vg/wii.rb
307
+ - lib/ehbrs_ruby_utils/vg/wii/file_move.rb
308
+ - lib/ehbrs_ruby_utils/vg/wii/game_file.rb
309
+ - lib/ehbrs_ruby_utils/vg/wii/wit.rb
310
+ - lib/ehbrs_ruby_utils/vg/wii/wit/image_format.rb
311
+ - lib/ehbrs_ruby_utils/vg/wii/wit/parsers/dump.rb
312
+ - lib/ehbrs_ruby_utils/vg/wii/wit/parsers/info.rb
313
+ - lib/ehbrs_ruby_utils/vg/wii/wit/path.rb
295
314
  - lib/ehbrs_ruby_utils/videos.rb
296
315
  - lib/ehbrs_ruby_utils/videos/container.rb
297
316
  - lib/ehbrs_ruby_utils/videos/convert_job.rb
@@ -371,6 +390,18 @@ files:
371
390
  - spec/lib/ehbrs_ruby_utils/circular_list_spreader_spec_files/ehbrs_music1.target.yaml
372
391
  - spec/lib/ehbrs_ruby_utils/circular_list_spreader_spec_files/minimum.source.yaml
373
392
  - spec/lib/ehbrs_ruby_utils/circular_list_spreader_spec_files/minimum.target.yaml
393
+ - spec/lib/ehbrs_ruby_utils/cooking_book/recipe/measure_spec.rb
394
+ - spec/lib/ehbrs_ruby_utils/vg/wii/game_file_spec.rb
395
+ - spec/lib/ehbrs_ruby_utils/vg/wii/wit/parsers/dump_spec.rb
396
+ - spec/lib/ehbrs_ruby_utils/vg/wii/wit/parsers/dump_spec_files/pikmin2_R92P01_wia.source.witdump
397
+ - spec/lib/ehbrs_ruby_utils/vg/wii/wit/parsers/dump_spec_files/pikmin2_R92P01_wia.target.yaml
398
+ - spec/lib/ehbrs_ruby_utils/vg/wii/wit/parsers/dump_spec_files/pikmin2_pal_iso.source.witdump
399
+ - spec/lib/ehbrs_ruby_utils/vg/wii/wit/parsers/dump_spec_files/pikmin2_pal_iso.target.yaml
400
+ - spec/lib/ehbrs_ruby_utils/vg/wii/wit/parsers/dump_spec_files/resident_evil_code_veronica_disc2_iso.source.witdump
401
+ - spec/lib/ehbrs_ruby_utils/vg/wii/wit/parsers/dump_spec_files/resident_evil_code_veronica_disc2_iso.target.yaml
402
+ - spec/lib/ehbrs_ruby_utils/vg/wii/wit/parsers/dump_spec_files/super_mario_galaxy_wbfs.source.witdump
403
+ - spec/lib/ehbrs_ruby_utils/vg/wii/wit/parsers/dump_spec_files/super_mario_galaxy_wbfs.target.yaml
404
+ - spec/lib/ehbrs_ruby_utils/vg/wii/wit/path_spec.rb
374
405
  - spec/lib/ehbrs_ruby_utils/videos/opensubtitles/parsers/episode_spec.rb
375
406
  - spec/lib/ehbrs_ruby_utils/videos/opensubtitles/parsers/episode_spec_files/counterpart_s01e01.source.html
376
407
  - spec/lib/ehbrs_ruby_utils/videos/opensubtitles/parsers/episode_spec_files/counterpart_s01e01.target.yaml
@@ -425,67 +456,79 @@ signing_key:
425
456
  specification_version: 4
426
457
  summary: Utilities for EHB/RS's Ruby projects.
427
458
  test_files:
428
- - spec/rubocop_check_spec.rb
459
+ - spec/spec_helper.rb
460
+ - spec/lib/ehbrs_ruby_utils/vg/wii/wit/path_spec.rb
461
+ - spec/lib/ehbrs_ruby_utils/vg/wii/wit/parsers/dump_spec.rb
462
+ - spec/lib/ehbrs_ruby_utils/vg/wii/wit/parsers/dump_spec_files/pikmin2_pal_iso.source.witdump
463
+ - spec/lib/ehbrs_ruby_utils/vg/wii/wit/parsers/dump_spec_files/resident_evil_code_veronica_disc2_iso.target.yaml
464
+ - spec/lib/ehbrs_ruby_utils/vg/wii/wit/parsers/dump_spec_files/pikmin2_pal_iso.target.yaml
465
+ - spec/lib/ehbrs_ruby_utils/vg/wii/wit/parsers/dump_spec_files/super_mario_galaxy_wbfs.target.yaml
466
+ - spec/lib/ehbrs_ruby_utils/vg/wii/wit/parsers/dump_spec_files/super_mario_galaxy_wbfs.source.witdump
467
+ - spec/lib/ehbrs_ruby_utils/vg/wii/wit/parsers/dump_spec_files/pikmin2_R92P01_wia.target.yaml
468
+ - spec/lib/ehbrs_ruby_utils/vg/wii/wit/parsers/dump_spec_files/resident_evil_code_veronica_disc2_iso.source.witdump
469
+ - spec/lib/ehbrs_ruby_utils/vg/wii/wit/parsers/dump_spec_files/pikmin2_R92P01_wia.source.witdump
470
+ - spec/lib/ehbrs_ruby_utils/vg/wii/game_file_spec.rb
471
+ - spec/lib/ehbrs_ruby_utils/cooking_book/recipe/measure_spec.rb
472
+ - spec/lib/ehbrs_ruby_utils/circular_list_spreader_spec.rb
473
+ - spec/lib/ehbrs_ruby_utils/videos/stream_spec_files/menina_ovo_attachment.target.yaml
474
+ - spec/lib/ehbrs_ruby_utils/videos/stream_spec_files/menina_ovo_subtitle.target.yaml
475
+ - spec/lib/ehbrs_ruby_utils/videos/stream_spec_files/menina_ovo_attachment.source.yaml
476
+ - spec/lib/ehbrs_ruby_utils/videos/stream_spec_files/menina_ovo_video.source.yaml
477
+ - spec/lib/ehbrs_ruby_utils/videos/stream_spec_files/menina_ovo_subtitle.source.yaml
478
+ - spec/lib/ehbrs_ruby_utils/videos/stream_spec_files/menina_ovo_video.target.yaml
479
+ - spec/lib/ehbrs_ruby_utils/videos/stream_spec_files/menina_ovo_audio.target.yaml
480
+ - spec/lib/ehbrs_ruby_utils/videos/stream_spec_files/menina_ovo_audio.source.yaml
481
+ - spec/lib/ehbrs_ruby_utils/videos/resolution_spec.rb
482
+ - spec/lib/ehbrs_ruby_utils/videos/opensubtitles/parsers/episode_spec.rb
483
+ - spec/lib/ehbrs_ruby_utils/videos/opensubtitles/parsers/title_spec.rb
484
+ - spec/lib/ehbrs_ruby_utils/videos/opensubtitles/parsers/episode_spec_files/counterpart_s01e01.target.yaml
485
+ - spec/lib/ehbrs_ruby_utils/videos/opensubtitles/parsers/episode_spec_files/wire-season-1-page-1.target.yaml
486
+ - spec/lib/ehbrs_ruby_utils/videos/opensubtitles/parsers/episode_spec_files/counterpart_s01e01.source.html
487
+ - spec/lib/ehbrs_ruby_utils/videos/opensubtitles/parsers/episode_spec_files/wire-season-1-page-1.source.html
488
+ - spec/lib/ehbrs_ruby_utils/videos/opensubtitles/parsers/title_spec_files/countepart.source.html
489
+ - spec/lib/ehbrs_ruby_utils/videos/opensubtitles/parsers/title_spec_files/countepart.target.yaml
490
+ - spec/lib/ehbrs_ruby_utils/videos/stream_spec.rb
429
491
  - spec/lib/ehbrs_ruby_utils/bga/parsers/table_spec_files/table_308782287.target.yaml
430
492
  - spec/lib/ehbrs_ruby_utils/bga/parsers/table_spec_files/table_383405743.target.yaml
431
- - spec/lib/ehbrs_ruby_utils/bga/parsers/table_spec_files/table_356513708.target.yaml
432
- - spec/lib/ehbrs_ruby_utils/bga/parsers/table_spec_files/table_302873643.target.yaml
433
493
  - spec/lib/ehbrs_ruby_utils/bga/parsers/table_spec_files/table_368448439.target.yaml
434
- - spec/lib/ehbrs_ruby_utils/bga/parsers/table_spec_files/table_368448439.source.html
435
- - spec/lib/ehbrs_ruby_utils/bga/parsers/table_spec_files/table_357408039.source.html
436
494
  - spec/lib/ehbrs_ruby_utils/bga/parsers/table_spec_files/table_383405743.source.html
437
495
  - spec/lib/ehbrs_ruby_utils/bga/parsers/table_spec_files/table_356513708.source.html
496
+ - spec/lib/ehbrs_ruby_utils/bga/parsers/table_spec_files/table_357408039.source.html
497
+ - spec/lib/ehbrs_ruby_utils/bga/parsers/table_spec_files/table_356513708.target.yaml
498
+ - spec/lib/ehbrs_ruby_utils/bga/parsers/table_spec_files/table_373747455.target.yaml
499
+ - spec/lib/ehbrs_ruby_utils/bga/parsers/table_spec_files/table_302873643.target.yaml
438
500
  - spec/lib/ehbrs_ruby_utils/bga/parsers/table_spec_files/table_373747455.source.html
439
- - spec/lib/ehbrs_ruby_utils/bga/parsers/table_spec_files/table_373602409.source.html
440
- - spec/lib/ehbrs_ruby_utils/bga/parsers/table_spec_files/table_373602409.target.yaml
441
501
  - spec/lib/ehbrs_ruby_utils/bga/parsers/table_spec_files/table_302873643.source.html
442
- - spec/lib/ehbrs_ruby_utils/bga/parsers/table_spec_files/table_357408039.target.yaml
502
+ - spec/lib/ehbrs_ruby_utils/bga/parsers/table_spec_files/table_373602409.target.yaml
443
503
  - spec/lib/ehbrs_ruby_utils/bga/parsers/table_spec_files/table_308782287.source.html
444
- - spec/lib/ehbrs_ruby_utils/bga/parsers/table_spec_files/table_373747455.target.yaml
445
- - spec/lib/ehbrs_ruby_utils/bga/parsers/game_stats_spec_files/2.target.yaml
446
- - spec/lib/ehbrs_ruby_utils/bga/parsers/game_stats_spec_files/2.source.html
504
+ - spec/lib/ehbrs_ruby_utils/bga/parsers/table_spec_files/table_368448439.source.html
505
+ - spec/lib/ehbrs_ruby_utils/bga/parsers/table_spec_files/table_373602409.source.html
506
+ - spec/lib/ehbrs_ruby_utils/bga/parsers/table_spec_files/table_357408039.target.yaml
447
507
  - spec/lib/ehbrs_ruby_utils/bga/parsers/game_stats_spec_files/1.source.html
508
+ - spec/lib/ehbrs_ruby_utils/bga/parsers/game_stats_spec_files/2.target.yaml
448
509
  - spec/lib/ehbrs_ruby_utils/bga/parsers/game_stats_spec_files/1.target.yaml
449
- - spec/lib/ehbrs_ruby_utils/bga/parsers/game_stats_spec.rb
450
- - spec/lib/ehbrs_ruby_utils/bga/parsers/table_spec.rb
451
- - spec/lib/ehbrs_ruby_utils/bga/parsers/game_in_progress_spec_files/player_84920871_2023-06-12.source.html
510
+ - spec/lib/ehbrs_ruby_utils/bga/parsers/game_stats_spec_files/2.source.html
452
511
  - spec/lib/ehbrs_ruby_utils/bga/parsers/game_in_progress_spec_files/player_93248308_2023-06-12.target.yaml
453
- - spec/lib/ehbrs_ruby_utils/bga/parsers/game_in_progress_spec_files/player_93167144_2023-06-12.target.yaml
454
- - spec/lib/ehbrs_ruby_utils/bga/parsers/game_in_progress_spec_files/player_93167144_2023-06-12.source.html
512
+ - spec/lib/ehbrs_ruby_utils/bga/parsers/game_in_progress_spec_files/player_84920871_2023-06-12.target.yaml
513
+ - spec/lib/ehbrs_ruby_utils/bga/parsers/game_in_progress_spec_files/player_84920871_2023-06-19.target.yaml
455
514
  - spec/lib/ehbrs_ruby_utils/bga/parsers/game_in_progress_spec_files/player_84920871_2023-06-19.source.html
456
515
  - spec/lib/ehbrs_ruby_utils/bga/parsers/game_in_progress_spec_files/player_93205235_2023-06-12.target.yaml
516
+ - spec/lib/ehbrs_ruby_utils/bga/parsers/game_in_progress_spec_files/player_93167144_2023-06-12.source.html
517
+ - spec/lib/ehbrs_ruby_utils/bga/parsers/game_in_progress_spec_files/player_84920871_2023-06-12.source.html
518
+ - spec/lib/ehbrs_ruby_utils/bga/parsers/game_in_progress_spec_files/player_93167144_2023-06-12.target.yaml
519
+ - spec/lib/ehbrs_ruby_utils/bga/parsers/game_in_progress_spec_files/player_93248308_2023-06-12.source.html
457
520
  - spec/lib/ehbrs_ruby_utils/bga/parsers/game_in_progress_spec_files/player_93223573_2023-06-12.target.yaml
458
- - spec/lib/ehbrs_ruby_utils/bga/parsers/game_in_progress_spec_files/player_93212034_2023-06-12.target.yaml
459
- - spec/lib/ehbrs_ruby_utils/bga/parsers/game_in_progress_spec_files/player_93223573_2023-06-12.source.html
460
- - spec/lib/ehbrs_ruby_utils/bga/parsers/game_in_progress_spec_files/player_84920871_2023-06-12.target.yaml
461
521
  - spec/lib/ehbrs_ruby_utils/bga/parsers/game_in_progress_spec_files/player_93205235_2023-06-12.source.html
462
- - spec/lib/ehbrs_ruby_utils/bga/parsers/game_in_progress_spec_files/player_93248308_2023-06-12.source.html
463
- - spec/lib/ehbrs_ruby_utils/bga/parsers/game_in_progress_spec_files/player_84920871_2023-06-19.target.yaml
522
+ - spec/lib/ehbrs_ruby_utils/bga/parsers/game_in_progress_spec_files/player_93223573_2023-06-12.source.html
464
523
  - spec/lib/ehbrs_ruby_utils/bga/parsers/game_in_progress_spec_files/player_93212034_2023-06-12.source.html
524
+ - spec/lib/ehbrs_ruby_utils/bga/parsers/game_in_progress_spec_files/player_93212034_2023-06-12.target.yaml
465
525
  - spec/lib/ehbrs_ruby_utils/bga/parsers/game_in_progress_spec.rb
466
- - spec/lib/ehbrs_ruby_utils/circular_list_spreader_spec.rb
467
- - spec/lib/ehbrs_ruby_utils/circular_list_spreader_spec_files/minimum.target.yaml
468
- - spec/lib/ehbrs_ruby_utils/circular_list_spreader_spec_files/ehbrs_music1.source.yaml
526
+ - spec/lib/ehbrs_ruby_utils/bga/parsers/game_stats_spec.rb
527
+ - spec/lib/ehbrs_ruby_utils/bga/parsers/table_spec.rb
469
528
  - spec/lib/ehbrs_ruby_utils/circular_list_spreader_spec_files/minimum.source.yaml
529
+ - spec/lib/ehbrs_ruby_utils/circular_list_spreader_spec_files/minimum.target.yaml
470
530
  - spec/lib/ehbrs_ruby_utils/circular_list_spreader_spec_files/ehbrs_music1.target.yaml
471
- - spec/lib/ehbrs_ruby_utils/videos/opensubtitles/parsers/title_spec_files/countepart.target.yaml
472
- - spec/lib/ehbrs_ruby_utils/videos/opensubtitles/parsers/title_spec_files/countepart.source.html
473
- - spec/lib/ehbrs_ruby_utils/videos/opensubtitles/parsers/title_spec.rb
474
- - spec/lib/ehbrs_ruby_utils/videos/opensubtitles/parsers/episode_spec.rb
475
- - spec/lib/ehbrs_ruby_utils/videos/opensubtitles/parsers/episode_spec_files/counterpart_s01e01.source.html
476
- - spec/lib/ehbrs_ruby_utils/videos/opensubtitles/parsers/episode_spec_files/wire-season-1-page-1.target.yaml
477
- - spec/lib/ehbrs_ruby_utils/videos/opensubtitles/parsers/episode_spec_files/wire-season-1-page-1.source.html
478
- - spec/lib/ehbrs_ruby_utils/videos/opensubtitles/parsers/episode_spec_files/counterpart_s01e01.target.yaml
479
- - spec/lib/ehbrs_ruby_utils/videos/stream_spec.rb
480
- - spec/lib/ehbrs_ruby_utils/videos/stream_spec_files/menina_ovo_audio.target.yaml
481
- - spec/lib/ehbrs_ruby_utils/videos/stream_spec_files/menina_ovo_video.target.yaml
482
- - spec/lib/ehbrs_ruby_utils/videos/stream_spec_files/menina_ovo_attachment.target.yaml
483
- - spec/lib/ehbrs_ruby_utils/videos/stream_spec_files/menina_ovo_subtitle.target.yaml
484
- - spec/lib/ehbrs_ruby_utils/videos/stream_spec_files/menina_ovo_audio.source.yaml
485
- - spec/lib/ehbrs_ruby_utils/videos/stream_spec_files/menina_ovo_attachment.source.yaml
486
- - spec/lib/ehbrs_ruby_utils/videos/stream_spec_files/menina_ovo_subtitle.source.yaml
487
- - spec/lib/ehbrs_ruby_utils/videos/stream_spec_files/menina_ovo_video.source.yaml
488
- - spec/lib/ehbrs_ruby_utils/videos/resolution_spec.rb
489
- - spec/spec_helper.rb
531
+ - spec/lib/ehbrs_ruby_utils/circular_list_spreader_spec_files/ehbrs_music1.source.yaml
532
+ - spec/rubocop_check_spec.rb
490
533
  - ".rubocop.yml"
491
534
  - ".rspec"