Skip to content

Commit febd492

Browse files
committed
Extract method
1 parent 9d7e182 commit febd492

1 file changed

Lines changed: 21 additions & 15 deletions

File tree

lib/netbox_client_ruby/entity.rb

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -21,25 +21,12 @@ module ClassMethods
2121
# id 'an_id_field' => 'id_field_in_data'
2222
# id an_id_field: 'id_field_in_data', :another_id_field: 'id_field2_in_data'
2323
#
24-
def id(*fields) # rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity,Metrics/MethodLength,Metrics/PerceivedComplexity
24+
def id(*fields)
2525
return @id_fields if @id_fields
2626

2727
raise ArgumentError, "No 'id' was defined, but one is expected." if fields.empty?
2828

29-
@id_fields = {}
30-
if fields.first.is_a?(Hash)
31-
fields.first.each { |key, value| @id_fields[key.to_s] = value.to_s }
32-
else
33-
fields.map(&:to_s).each do |field|
34-
field_as_string = field.to_s
35-
@id_fields[field_as_string] = field_as_string
36-
end
37-
end
38-
39-
@id_fields.each_key do |field|
40-
define_method(field) { instance_variable_get :"@#{field}" }
41-
end
42-
29+
@id_fields = load_attributes(fields)
4330
@id_fields
4431
end
4532

@@ -103,6 +90,25 @@ def sanitize_mapping(fields_to_class_map) # rubocop:disable Metrics/MethodLength
10390
end
10491
fields_map
10592
end
93+
94+
def load_attributes(fields) # rubocop:disable Metrics/AbcSize,Metrics/MethodLength
95+
id_fields = {}
96+
97+
if fields.first.is_a?(Hash)
98+
fields.first.each { |key, value| id_fields[key.to_s] = value.to_s }
99+
else
100+
fields.map(&:to_s).each do |field|
101+
field_as_string = field.to_s
102+
id_fields[field_as_string] = field_as_string
103+
end
104+
end
105+
106+
id_fields.each_key do |field|
107+
define_method(field) { instance_variable_get :"@#{field}" }
108+
end
109+
110+
id_fields
111+
end
106112
end
107113

108114
def initialize(given_values = nil) # rubocop:disable Metrics/MethodLength

0 commit comments

Comments
 (0)