Module: Wavify::Adapters
- Defined in:
- lib/wavify/adapters.rb,
sig/wavify.rbs
Overview
Catalog and loader for optional adapter gems that live outside the core gem.
Defined Under Namespace
Classes: AdapterSpec
Constant Summary collapse
- KNOWN =
[ AdapterSpec.new( name: :ffmpeg, kind: :codec, gem_name: "wavify-ffmpeg", require_path: "wavify/ffmpeg", formats: %w[mp3 aac m4a wav flac ogg], summary: "FFmpeg-backed codec adapter for formats that should not be mandatory core dependencies." ), AdapterSpec.new( name: :mp3, kind: :codec, gem_name: "wavify-mp3", require_path: "wavify/mp3", formats: %w[mp3], summary: "MP3 codec adapter." ), AdapterSpec.new( name: :midi, kind: :sequencer, gem_name: "wavify-midi", require_path: "wavify/midi", formats: %w[mid midi], summary: "MIDI import/export adapter for sequencer timelines." ), AdapterSpec.new( name: :spectrogram, kind: :analysis, gem_name: "wavify-spectrogram", require_path: "wavify/spectrogram", formats: %w[png json], summary: "Spectrogram and FFT analysis adapter." ) ].freeze
Class Method Summary collapse
- .find(name) ⇒ AdapterSpec?
- .known ⇒ Array<AdapterSpec>
-
.load(name) ⇒ true
Requires an optional adapter gem and lets it register itself.
Class Method Details
.find(name) ⇒ AdapterSpec?
51 52 53 54 |
# File 'lib/wavify/adapters.rb', line 51 def find(name) normalized = normalize_name(name) KNOWN.find { |adapter| adapter.name == normalized } end |
.known ⇒ Array<AdapterSpec>
45 46 47 |
# File 'lib/wavify/adapters.rb', line 45 def known KNOWN.dup end |
.load(name) ⇒ true
Requires an optional adapter gem and lets it register itself.
60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/wavify/adapters.rb', line 60 def load(name) adapter = find(name) raise InvalidParameterError, "unknown adapter: #{name.inspect}" unless adapter require adapter.require_path true rescue LoadError raise UnsupportedFormatError, "adapter #{adapter.name} is not installed; add gem #{adapter.gem_name.inspect} " \ "and require #{adapter.require_path.inspect}" end |