class Kanrisuru::Result
Attributes
command[R]
data[R]
error[R]
Public Class Methods
new(command, &block)
click to toggle source
# File lib/kanrisuru/result.rb, line 9 def initialize(command, &block) @command = command @data = nil @data = block.call(@command) if @command.success? && block_given? @error = @command.to_a if @command.failure? ## Define getter methods on result that maps to ## the same methods of a data struct. return unless @command.success? && Kanrisuru::Util.present?(@data) && @data.class.ancestors.include?(Struct) method_names = @data.members self.class.class_eval do method_names.each do |method_name| define_method method_name do @data[method_name] end end end end
Public Instance Methods
[](prop)
click to toggle source
# File lib/kanrisuru/result.rb, line 30 def [](prop) @data[prop] end
each(&block)
click to toggle source
# File lib/kanrisuru/result.rb, line 78 def each(&block) @data.each { |item| block.call(item) } if @data.instance_of?(Array) end
failure?()
click to toggle source
# File lib/kanrisuru/result.rb, line 66 def failure? @command.failure? end
inspect()
click to toggle source
# File lib/kanrisuru/result.rb, line 56 def inspect if success? format('#<Kanrisuru::Result:0x%<object_id>s @status=%<status>s @data=%<data>s @command=%<command>s>', object_id: object_id, status: status, data: @data.inspect, command: command.prepared_command) else format('#<Kanrisuru::Result:0x%<object_id>s @status=%<status>s @error=%<error>s @command=%<command>s>', object_id: object_id, status: status, error: @error.inspect, command: command.prepared_command) end end
status()
click to toggle source
# File lib/kanrisuru/result.rb, line 74 def status @command.exit_status end
success?()
click to toggle source
# File lib/kanrisuru/result.rb, line 70 def success? @command.success? end
to_a()
click to toggle source
# File lib/kanrisuru/result.rb, line 38 def to_a @data.instance_of?(Array) ? @data : [@data] end
to_i()
click to toggle source
# File lib/kanrisuru/result.rb, line 42 def to_i if @data.instance_of?(Integer) @data elsif @data.instance_of?(String) @data.to_i elsif @data.instance_of?(Array) @data.map(&:to_i) elsif @data.instance_of?(NilClass) nil else raise NoMethodError, "(undefined method `to_i' for Kanrisuru::Result)" end end
to_s()
click to toggle source
# File lib/kanrisuru/result.rb, line 34 def to_s @data.to_s end