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

Class Method Details

.extensionsArray<String>

Returns registered extensions without leading dots.

Returns:

  • (Array<String>)

    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.

Returns:

  • (Entry)

    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.

Returns:

  • (#read)

    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.

Returns:

  • (#write)

    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