class HaveAPI::Fs::Components::ActionOutput

Attributes

action_dir[R]
data[RW]

Public Class Methods

new(action_dir, *args) click to toggle source
Calls superclass method
# File lib/haveapi/fs/components/action_output.rb, line 7
def initialize(action_dir, *args)
  super(*args)

  @action_dir = action_dir

  if %i(hash_list object_list).include?(@action_dir.action.output_layout.to_sym)
    @list = true
  end
end

Public Instance Methods

contents() click to toggle source
Calls superclass method
# File lib/haveapi/fs/components/action_output.rb, line 17
def contents
  ret = super

  return ret unless @data

  if @list
    ret.concat(@data.map { |v| v.id.to_s })

  else
    ret.concat(parameters.keys.map(&:to_s))
  end

  ret
end
parameters() click to toggle source
# File lib/haveapi/fs/components/action_output.rb, line 32
def parameters
  @action_dir.action.params
end
title() click to toggle source
# File lib/haveapi/fs/components/action_output.rb, line 36
def title
  'Output parameters'
end

Protected Instance Methods

new_child(name) click to toggle source
Calls superclass method
# File lib/haveapi/fs/components/action_output.rb, line 41
def new_child(name)
  if child = super
    child
  
  elsif !@data
    nil

  elsif @list
    id = name.to_s.to_i
    
    if @data.is_a?(HaveAPI::Client::ResourceInstanceList)
      param = @data.detect { |v| v.id == id }
      [ResourceInstanceDir, param]

    else
      param = @data.response.detect { |v| v[:id] == id }
      [ListItem, @action_dir.action, :output, param]
    end

  elsif parameters.has_key?(name)
    [
        Parameter,
        @action_dir.action,
        name,
        :output,
        @data,
    ]

  else
    nil
  end
end