ehbrs_ruby_utils 0.32.0 → 0.33.0

Sign up to get free protection for your applications and to get access to all the features.
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"