Sha256: 10ba7192da4d788c07b0ff1b81b3b79d7dfc6fad979c588890d4d20adf92bdb5

Contents?: true

Size: 974 Bytes

Versions: 1

Compression:

Stored size: 974 Bytes

Contents

require 'chaussettes/common_options'

module Chaussettes

  # Represents an input to an operation
  class Input
    include CommonOptions

    def initialize(source = nil, device: nil)
      @source = _translate_source(source) ||
                _translate_device(device) ||
                raise(ArgumentError, 'unsupported source')

      @arguments = []
    end

    def _translate_source(source)
      if source.is_a?(String)
        source
      elsif source.respond_to?(:command)
        "|#{source.command}"
      end
    end

    def _translate_device(device)
      if device == :default
        '--default-device'
      elsif device == :stdin
        '-'
      elsif device.nil? || device == :null
        '--null'
      end
    end

    def commands
      [ *@arguments, @source ]
    end

    def ignore_length
      @arguments << '--ignore-length'
      self
    end

    def volume(factor)
      @arguments << '--volume' << factor
      self
    end
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
chaussettes-1.0.0 lib/chaussettes/input.rb