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