class AudioSwitch::Pactl::Out

Public Class Methods

new(string) click to toggle source
# File lib/audio_switch/pactl.rb, line 113
def initialize(string)
  @string = string
end

Public Instance Methods

parse_event() click to toggle source
# File lib/audio_switch/pactl.rb, line 140
def parse_event
  parts = @string.split(' ')
  {
    type: parts[1].delete('\'').to_sym,
    object: parts[3].to_sym,
    id: parts[4].sub('#', '')
  }
end
parse_objects(fields) click to toggle source
# File lib/audio_switch/pactl.rb, line 117
def parse_objects(fields)
  objects = []
  field_id = 0
  object = nil

  @string.each_line do |line|
    field = fields[field_id]
    next unless line =~ Regexp.new(field[:marker])

    object = {} if field_id.zero?
    update(object, line, field)

    field_id += 1
    next unless field_id == fields.size

    objects << object
    object = nil
    field_id = 0
  end

  objects
end
parse_property(marker) click to toggle source
# File lib/audio_switch/pactl.rb, line 149
def parse_property(marker)
  read_property(@string, marker)
end

Private Instance Methods

read_property(line, marker) click to toggle source
# File lib/audio_switch/pactl.rb, line 160
def read_property(line, marker)
  line.match(Regexp.new("#{marker}\\s*(.*?)\\s*$"))[1]
end
update(object, line, field) click to toggle source
# File lib/audio_switch/pactl.rb, line 155
def update(object, line, field)
  property = field[:property]
  object[property] = read_property(line, field[:marker]) if field[:property]
end