Class: Omnizip::Formats::Iso::DirectoryBuilder
- Inherits:
-
Object
- Object
- Omnizip::Formats::Iso::DirectoryBuilder
- Defined in:
- lib/omnizip/formats/iso/directory_builder.rb
Overview
ISO 9660 Directory Structure Builder
Builds the hierarchical directory structure for an ISO image, allocating sectors for directories and files.
Instance Attribute Summary collapse
-
#directories ⇒ Array<Hash>
readonly
Directories to add.
-
#files ⇒ Array<Hash>
readonly
Files to add.
-
#level ⇒ Integer
readonly
ISO level.
-
#rock_ridge ⇒ Boolean
readonly
Rock Ridge enabled.
Instance Method Summary collapse
-
#build ⇒ Hash
Build directory structure.
-
#initialize(files, directories, options = {}) ⇒ DirectoryBuilder
constructor
Initialize directory builder.
Constructor Details
#initialize(files, directories, options = {}) ⇒ DirectoryBuilder
Initialize directory builder
28 29 30 31 32 33 34 |
# File 'lib/omnizip/formats/iso/directory_builder.rb', line 28 def initialize(files, directories, = {}) @files = files @directories = directories @level = .fetch(:level, 2) @rock_ridge = .fetch(:rock_ridge, false) @current_sector = 22 # After volume descriptors and path tables end |
Instance Attribute Details
#directories ⇒ Array<Hash> (readonly)
Returns Directories to add.
15 16 17 |
# File 'lib/omnizip/formats/iso/directory_builder.rb', line 15 def directories @directories end |
#files ⇒ Array<Hash> (readonly)
Returns Files to add.
12 13 14 |
# File 'lib/omnizip/formats/iso/directory_builder.rb', line 12 def files @files end |
#level ⇒ Integer (readonly)
Returns ISO level.
18 19 20 |
# File 'lib/omnizip/formats/iso/directory_builder.rb', line 18 def level @level end |
#rock_ridge ⇒ Boolean (readonly)
Returns Rock Ridge enabled.
21 22 23 |
# File 'lib/omnizip/formats/iso/directory_builder.rb', line 21 def rock_ridge @rock_ridge end |
Instance Method Details
#build ⇒ Hash
Build directory structure
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/omnizip/formats/iso/directory_builder.rb', line 39 def build # Build directory tree tree = build_directory_tree # Allocate sectors for directories and files allocate_sectors(tree) # Build path table path_table = build_path_table(tree) { root: tree, directories: flatten_directories(tree), files: @files, path_table: path_table, path_table_size: path_table.bytesize, total_sectors: @current_sector, } end |