Class: JiraClient::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/jira_client/base.rb

Direct Known Subclasses

Comment, Issue, Project, ServerInfo, Status, Timetracking, User, Worklog

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(attrs = {}) ⇒ Base

Returns a new instance of Base.



40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/jira_client/base.rb', line 40

def initialize(attrs={})
  self.class.conversions.each do |key, value|
    if attrs.has_key? key
      if attrs[key].kind_of? Array
        attrs[key] = attrs[key].map {|elem| value.call(elem)}
      else
        attrs[key] = value.call(attrs[key])
      end
    end
  end
  @attrs = attrs
end

Class Method Details

.attr_reader(*attrs) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/jira_client/base.rb', line 19

def attr_reader(*attrs)
  mod = Module.new do
    attrs.each do |attribute|
      define_method attribute do
        @attrs[attribute.to_sym]
      end
      define_method "#{attribute}?" do
        !!@attrs[attribute.to_sym]
      end
    end
  end
  include mod
end

.conversionsObject

Initialize class variable if not set



7
8
9
# File 'lib/jira_client/base.rb', line 7

def conversions
  @conversions ||= {}
end

.convert(attribute, conversion) ⇒ Object



11
12
13
14
15
16
17
# File 'lib/jira_client/base.rb', line 11

def convert(attribute, conversion)
  if conversion.instance_of? Proc
    conversions[attribute] = conversion
  elsif conversion < JiraClient::Base
    conversions[attribute] = lambda {|v| conversion.from_response(v)}
  end
end

.from_response(attrs = {}) ⇒ Object



33
34
35
36
# File 'lib/jira_client/base.rb', line 33

def from_response(attrs={})
  return unless attrs
  new(attrs)
end