lib/jiralicious/issue/fields.rb in jiralicious-0.2.0 vs lib/jiralicious/issue/fields.rb in jiralicious-0.2.1
- old
+ new
@@ -1,80 +1,131 @@
# encoding: utf-8
module Jiralicious
class Issue
+ ##
+ # The Fields class provides functionality to the Issue class that allows it to easily
+ # update or create issues. The class retains the original and the proposed information
+ # which could be used for cross validation prior to posting an update.
+ #
class Fields
+ # The fields that will be updated or created
attr_accessor :fields_update
+ # The current fields when a ticket was loaded
attr_accessor :fields_current
+ ##
+ # Initialization Method
+ #
def initialize(fc = nil)
@fields_current = (fc == nil) ? Hash.new : fc
@fields_update = Hash.new
end
+ ##
+ # Returns the count of fields being updated.
+ #
def count
return @fields_update.count
end
+ ##
+ # Returns the length of fields being updated.
+ #
def length
return @fields_update.length
end
+ ##
+ # Adds a comment to the field list
+ #
def add_comment(comment)
- if !(@fields_update['comment'].type == Array)
+ if !(@fields_update['comment'].is_a? Array)
@fields_update['comment'] = Array.new
end
@fields_update['comment'].push({"add" => {"body" => comment}})
end
+ ##
+ # Appends the current String with the provided value
+ #
def append_s(field, value)
if (@fields_update[field] == nil)
@fields_update[field] = @fields_current[field] unless @fields_current.nil?
@fields_update[field] ||= ""
end
@fields_update[field] += " " + value.to_s
end
+ ##
+ # Appends the current Array with the provided value
+ #
def append_a(field, value)
@fields_update[field] = @fields_current[field] if (@fields_update[field] == nil)
@fields_update[field] = Array.new if !(@fields_update[field].is_a? Array)
if value.is_a? String
- @fields_update[field].push(value)
+ @fields_update[field].push(value) unless @fields_update[field].include? value
else
- @fields_update[field] = @fields_update[field].concat(value)
+ @fields_update[field] |= value
end
end
+ ##
+ # Appends the current Hash with the provided value
+ #
def append_h(field, hash)
@fields_update[field] = @fields_current[field] if (@fields_update[field] == nil)
@fields_update[field] = Hash.new if !(@fields_update[field].is_a? Hash)
@fields_update[field].merge!(hash)
end
+ ##
+ # Sets the field key with the provided value.
+ #
def set(field, value)
@fields_update[field] = value
end
+ ##
+ # Sets the field with a name hash.
+ # This is necessary for some objects in Jira.
+ #
def set_name(field, value)
@fields_update[field] = {"name" => value}
end
+ ##
+ # Sets the field with a id hash.
+ # This is necessary for some objects in Jira.
+ #
def set_id(field, value)
@fields_update[field] = {"id" => value}
end
-
+ ##
+ # Fills the fields_current object with the provided Hash.
+ #
def set_current(fc)
@fields_current = fc if fc.type == Hash
end
+ ##
+ # Returns the current fields object
+ #
def current
return @fields_current
end
+ ##
+ # Returns the updated fields object
+ #
def updated
return @fields_update
end
+ ##
+ # Formats the fields_update object correctly
+ # for Jira to perform an update request.
+ #
def format_for_update
up = Hash.new
@fields_update.each do |k, v|
if k == "comment"
up[k] = v
@@ -83,9 +134,13 @@
end
end
return {"update" => up}
end
+ ##
+ # Formats the fields_update object correctly
+ # for Jira to perform an create request.
+ #
def format_for_create
return {"fields" => @fields_update}
end
end
end