Class: Jiralicious::Issue::Fields

Inherits:
Object
  • Object
show all
Defined in:
lib/jiralicious/issue/fields.rb

Overview

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.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(fc = nil) ⇒ Fields

Initialization Method

Arguments

:fc (optional) fields to load



23
24
25
26
# File 'lib/jiralicious/issue/fields.rb', line 23

def initialize(fc = nil)
  @fields_current = (fc == nil) ? Hash.new : fc
  @fields_update = Hash.new
end

Instance Attribute Details

#fields_currentObject

The current fields when a ticket was loaded



15
16
17
# File 'lib/jiralicious/issue/fields.rb', line 15

def fields_current
  @fields_current
end

#fields_updateObject

The fields that will be updated or created



13
14
15
# File 'lib/jiralicious/issue/fields.rb', line 13

def fields_update
  @fields_update
end

Instance Method Details

#add_comment(comment) ⇒ Object

Adds a comment to the field list

Arguments

:comment (required) comment text



48
49
50
51
52
53
# File 'lib/jiralicious/issue/fields.rb', line 48

def add_comment(comment)
  if !(@fields_update['comment'].is_a? Array)
    @fields_update['comment'] = Array.new
  end
  @fields_update['comment'].push({"add" => {"body" => comment}})
end

#append_a(field, value) ⇒ Object

Appends the current Array with the provided value

Arguments

:field (required) field to update

:value (required) value array



79
80
81
82
83
84
85
86
87
# File 'lib/jiralicious/issue/fields.rb', line 79

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) unless @fields_update[field].include? value
  else
    @fields_update[field] |= value
  end
end

#append_h(field, hash) ⇒ Object

Appends the current Hash with the provided value

Arguments

:field (required) field to update

:value (required) value hash



97
98
99
100
101
# File 'lib/jiralicious/issue/fields.rb', line 97

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

#append_s(field, value) ⇒ Object

Appends the current String with the provided value

Arguments

:field (required) field to update

:value (required) value text



63
64
65
66
67
68
69
# File 'lib/jiralicious/issue/fields.rb', line 63

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

#countObject

Returns the count of fields being updated.



31
32
33
# File 'lib/jiralicious/issue/fields.rb', line 31

def count
  return @fields_update.count
end

#currentObject

Returns the current fields object



153
154
155
# File 'lib/jiralicious/issue/fields.rb', line 153

def current
  return @fields_current
end

#format_for_createObject

Formats the fields_update object correctly for Jira to perform an create request.



184
185
186
# File 'lib/jiralicious/issue/fields.rb', line 184

def format_for_create
  return {"fields" => @fields_update}
end

#format_for_updateObject

Formats the fields_update object correctly for Jira to perform an update request.



168
169
170
171
172
173
174
175
176
177
178
# File 'lib/jiralicious/issue/fields.rb', line 168

def format_for_update
  up = Hash.new
  @fields_update.each do |k, v|
    if k == "comment"
      up[k] = v
    else
      up[k] = [{"set" => v}]
    end
  end
  return {"update" => up}
end

#lengthObject

Returns the length of fields being updated.



38
39
40
# File 'lib/jiralicious/issue/fields.rb', line 38

def length
  return @fields_update.length
end

#set(field, value) ⇒ Object

Sets the field key with the provided value.

Arguments

:field (required) field to update

:value (required) value to add



111
112
113
# File 'lib/jiralicious/issue/fields.rb', line 111

def set(field, value)
  @fields_update[field] = value
end

#set_current(fc) ⇒ Object

Fills the fields_current object with the provided Hash.

Arguments

:fc (optional) fields to load



146
147
148
# File 'lib/jiralicious/issue/fields.rb', line 146

def set_current(fc)
  @fields_current = fc if fc.type == Hash
end

#set_id(field, value) ⇒ Object

Sets the field with a id hash. This is necessary for some objects in Jira.

Arguments

:field (required) field to update

:value (required) value text/int



137
138
139
# File 'lib/jiralicious/issue/fields.rb', line 137

def set_id(field, value)
  @fields_update[field] = {"id" => value}
end

#set_name(field, value) ⇒ Object

Sets the field with a name hash. This is necessary for some objects in Jira.

Arguments

:field (required) field to update

:value (required) value text



124
125
126
# File 'lib/jiralicious/issue/fields.rb', line 124

def set_name(field, value)
  @fields_update[field] = {"name" => value}
end

#updatedObject

Returns the updated fields object



160
161
162
# File 'lib/jiralicious/issue/fields.rb', line 160

def updated
  return @fields_update
end