Module: OpenUSD::Format::Registry
- Defined in:
- lib/openusd/format/registry.rb
Overview
Extension-based registry for layer and package formats.
Defined Under Namespace
Classes: Entry
Class Method Summary collapse
-
.extensions ⇒ Array<String>
Registered extensions without leading dots.
-
.fetch(path_or_extension) ⇒ Entry
Adapter pair for a path or extension.
-
.reader_for(path) ⇒ #read
Reader adapter for a path.
-
.register(extension, reader: nil, writer: nil) ⇒ Object
Register one or both adapters for an extension.
-
.writer_for(path) ⇒ #write
Writer adapter for a path.
Class Method Details
.extensions ⇒ Array<String>
Returns registered extensions without leading dots.
42 43 44 |
# File 'lib/openusd/format/registry.rb', line 42 def extensions @entries.keys.freeze end |
.fetch(path_or_extension) ⇒ Entry
Returns adapter pair for a path or extension.
25 26 27 28 29 |
# File 'lib/openusd/format/registry.rb', line 25 def fetch(path_or_extension) extension = File.extname(path_or_extension.to_s) key = normalize(extension.empty? ? path_or_extension : extension) @entries.fetch(key) { raise NotSupportedError, "unsupported file format: #{key}" } end |
.reader_for(path) ⇒ #read
Returns reader adapter for a path.
32 33 34 |
# File 'lib/openusd/format/registry.rb', line 32 def reader_for(path) fetch(path).reader || raise(NotSupportedError, "reading #{File.extname(path)} is not supported") end |
.register(extension, reader: nil, writer: nil) ⇒ Object
Register one or both adapters for an extension.
15 16 17 18 19 20 21 22 |
# File 'lib/openusd/format/registry.rb', line 15 def register(extension, reader: nil, writer: nil) key = normalize(extension) current = @entries[key] @entries[key] = Entry.new( reader: reader || current&.reader, writer: writer || current&.writer ) end |
.writer_for(path) ⇒ #write
Returns writer adapter for a path.
37 38 39 |
# File 'lib/openusd/format/registry.rb', line 37 def writer_for(path) fetch(path).writer || raise(NotSupportedError, "writing #{File.extname(path)} is not supported") end |