Sha256: c4a0e61e4bcefa6f4b5b678e4196d012940dd8c613d956e67634beb5bd5e9387

Contents?: true

Size: 1 KB

Versions: 2

Compression:

Stored size: 1 KB

Contents

module Denko
  module Behaviors
    module Subcomponents
      def components
        @components ||= []
      end

      def single_pin_components
        @single_pin_components ||= {}
      end

      def add_component(component)
        components << component

        if component.respond_to?(:pin) && component.pin.class == Integer
          unless single_pin_components[component.pin]
            single_pin_components[component.pin] = component
          else
            raise StandardError,  "Error adding #{component} to #{self}. Pin: #{component.pin} " \
                                  "already in use by: #{single_pin_components[component.pin]}"
          end
        end
      end

      def remove_component(component)
        if component.respond_to?(:pin) && component.pin.class == Integer
          single_pin_components[component.pin] = nil
        end
        
        deleted = components.delete(component)
        component.stop if deleted && component.respond_to?(:stop)
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
denko-0.13.1 lib/denko/behaviors/subcomponents.rb
denko-0.13.0 lib/denko/behaviors/subcomponents.rb