Completed
Push — master ( 13432f...78215f )
by John
59s
created

Groups   A

Complexity

Total Complexity 15

Size/Duplication

Total Lines 55
Duplicated Lines 14.55 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
wmc 15
c 2
b 0
f 0
dl 8
loc 55
rs 10

7 Methods

Rating   Name   Duplication   Size   Complexity  
A initialize() 0 6 1
A id_by_name() 0 4 2
A load_groups() 0 7 3
A group_by_name() 4 4 2
A team_by_name() 4 4 2
A by_name() 0 5 2
A load_group() 0 13 3

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

1
module GlipSdk::REST::Cache
2
  class Groups
3
    attr_accessor :groups
4
    attr_accessor :groups_name2id
5
    attr_accessor :teams
6
    attr_accessor :teams_name2id
7
    def initialize
8
      @groups = {}
9
      @teams = {}
10
      @teams_name2id = {}
11
      @groups_name2id = {}
12
    end
13
14
    def load_groups(groups)
15
      if groups.is_a? Array
16
        groups.each { |g| load_group g }
17
      elsif groups.is_a? Hash
18
        groups.each { |_, g| load_group g}
19
      end
20
    end
21
22
    def load_group(group)
23
      if group.key? 'id'
24
        id = group['id']
25
        type = group['type']
26
        if type.to_s.downcase == 'team'
27
          @teams[id.to_s] = group
28
          @teams_name2id[group['name']] = id.to_s
29
        else
30
          @groups[id.to_s] = group
31
          @groups_name2id[group['name']] = id.to_s
32
        end
33
      end
34
    end
35
36
    def id_by_name(name)
37
      group = by_name name
38
      group.nil? ? nil : group['id']
39
    end
40
41
    def by_name(name)
42
      team = team_by_name name
43
      return team unless team.nil?
44
      group_by_name name
45
    end
46
47 View Code Duplication
    def team_by_name(name)
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
48
      team_id = @teams_name2id[name.to_s]
49
      team_id ? @teams[team_id] : nil
50
    end
51
52 View Code Duplication
    def group_by_name(name)
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
53
      group_id = @groups_name2id[name.to_s]
54
      group_id ? @groups[group_id] : nil
55
    end
56
  end
57
end
58