Module: Webmidi::Transport::Adapter
- Defined in:
- lib/webmidi/transport/adapter.rb
Constant Summary collapse
- REQUIRED_METHODS =
%i[ available? list_inputs list_outputs open_input open_output ].freeze
Class Method Summary collapse
- .constant_name(name) ⇒ Object
- .constantize(path) ⇒ Object
- .gem_name(name) ⇒ Object
- .normalized_name(name) ⇒ Object
- .require_path(name) ⇒ Object
- .validate!(transport) ⇒ Object
Class Method Details
.constant_name(name) ⇒ Object
32 33 34 35 |
# File 'lib/webmidi/transport/adapter.rb', line 32 def constant_name(name) camel = normalized_name(name).split("_").map(&:capitalize).join "Webmidi::Transport::#{camel}" end |
.constantize(path) ⇒ Object
37 38 39 |
# File 'lib/webmidi/transport/adapter.rb', line 37 def constantize(path) path.split("::").reduce(Object) { |namespace, const_name| namespace.const_get(const_name) } end |
.gem_name(name) ⇒ Object
24 25 26 |
# File 'lib/webmidi/transport/adapter.rb', line 24 def gem_name(name) "webmidi-#{normalized_name(name).tr("_", "-")}" end |
.normalized_name(name) ⇒ Object
41 42 43 |
# File 'lib/webmidi/transport/adapter.rb', line 41 def normalized_name(name) name.to_s.tr("-", "_") end |
.require_path(name) ⇒ Object
28 29 30 |
# File 'lib/webmidi/transport/adapter.rb', line 28 def require_path(name) "webmidi/transport/#{normalized_name(name)}" end |
.validate!(transport) ⇒ Object
16 17 18 19 20 21 22 |
# File 'lib/webmidi/transport/adapter.rb', line 16 def validate!(transport) missing = REQUIRED_METHODS.reject { |method| transport.respond_to?(method) } return transport if missing.empty? raise TransportNotAvailableError, "Transport adapter #{transport.inspect} is missing: #{missing.join(", ")}" end |