class QLab::Workspace

“uniqueID”: string, “displayName”: string “hasPasscode”: number

Attributes

data[RW]
passcode[RW]

Public Class Methods

new(data, machine) click to toggle source

Load a workspace with the attributes given in ‘data`

# File lib/qlab-ruby/workspace.rb, line 11
def initialize data, machine
  @machine = machine
  self.data = data
end

Public Instance Methods

connection() click to toggle source
# File lib/qlab-ruby/workspace.rb, line 26
def connection
  @machine.connection
end
cue_lists() click to toggle source
# File lib/qlab-ruby/workspace.rb, line 53
def cue_lists
  refresh
  @cue_lists
end
cues() click to toggle source

all cues in this workspace in a flat list

# File lib/qlab-ruby/workspace.rb, line 43
def cues
  cue_lists.map do |cl|
    load_cues(cl, [])
  end.flatten.compact
end
find_cue(params={}) click to toggle source
# File lib/qlab-ruby/workspace.rb, line 80
def find_cue params={}
  cues.find do |cue|
    matches = true

    # match each key to the given cue
    params.keys.each do |key|
      matches = matches && (cue.send(key.to_sym) == params[key])
    end

    matches
  end
end
has_cues?() click to toggle source
# File lib/qlab-ruby/workspace.rb, line 49
def has_cues?
  cues.size > 0
end
id() click to toggle source
# File lib/qlab-ruby/workspace.rb, line 38
def id
  data['uniqueID']
end
name() click to toggle source
# File lib/qlab-ruby/workspace.rb, line 30
def name
  data['displayName']
end
passcode?() click to toggle source
# File lib/qlab-ruby/workspace.rb, line 34
def passcode?
  !!data['hasPasscode']
end
refresh() click to toggle source
# File lib/qlab-ruby/workspace.rb, line 58
def refresh
  if passcode?
    if passcode.nil?
      raise WorkspaceConnectionError.new("Workspace '#{ name }' requires a passcode.")
    end

    args = [workspace_command('connect'), ('%04i' % passcode)]
  else
    args = [workspace_command('connect')]
  end
  connect_response = send_message(*args)

  if connect_response == 'ok'
    @cue_lists = []

    cues_response = send_message workspace_command('cueLists')
    cues_response.each do |cuelist|
      @cue_lists << QLab::CueList.new(cuelist, self)
    end
  end
end

Private Instance Methods

load_cues(parent_cue, cues) click to toggle source
# File lib/qlab-ruby/workspace.rb, line 99
def load_cues parent_cue, cues
  parent_cue.cues.each {|child_cue|
    cues << child_cue
    load_cues child_cue, cues
  }

  cues
end
workspace_command(command) click to toggle source
# File lib/qlab-ruby/workspace.rb, line 95
def workspace_command command
  "/workspace/#{id}/#{ command }"
end